summaryrefslogtreecommitdiff
path: root/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-04-18 02:17:12 -0300
committerEuAndreh <eu@euandre.org>2025-04-18 02:48:42 -0300
commit020c1e77489b772f854bb3288b9c8d2818a6bf9d (patch)
tree142aec725a52162a446ea7d947cb4347c9d573c9 /src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
parentMakefile: Remove security.txt.gz (diff)
downloadeuandre.org-020c1e77489b772f854bb3288b9c8d2818a6bf9d.tar.gz
euandre.org-020c1e77489b772f854bb3288b9c8d2818a6bf9d.tar.xz
git mv src/content/* src/content/en/
Diffstat (limited to 'src/content/blog/2019/06/02/nixos-stateless-workstation.adoc')
-rw-r--r--src/content/blog/2019/06/02/nixos-stateless-workstation.adoc146
1 files changed, 0 insertions, 146 deletions
diff --git a/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc b/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
deleted file mode 100644
index f89a106..0000000
--- a/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
+++ /dev/null
@@ -1,146 +0,0 @@
-= Using NixOS as an stateless workstation
-
-:empty:
-:nixos: https://nixos.org/
-
-Last
-week{empty}footnote:last-week[
- "Last week" as of the start of this writing, so around the end of May 2019.
-] I changed back to an
-old{empty}footnote:old-computer[
- I was using a 32GB RAM, i7 and 250GB SSD Samsung laptop. The switch was back
- to a 8GB RAM, i5 and 500GB HDD Dell laptop. The biggest difference I noticed
- was on faster memory, both RAM availability and the disk speed, but I had
- 250GB less local storage space.
-] Samsung laptop, and installed {nixos}[NixOS] on it.
-
-After using NixOS on another laptop for around two years, I wanted verify how
-reproducible was my desktop environment, and how far does NixOS actually can go
-on recreating my whole OS from my configuration files and personal data. I
-gravitated towards NixOS after trying (and failing) to create an `install.sh`
-script that would imperatively install and configure my whole OS using apt-get.
-When I found a GNU/Linux distribution that was built on top of the idea of
-declaratively specifying the whole OS I was automatically
-convinced{empty}footnote:convincend-by-declarative-aspect[
- The declarative configuration aspect is something that I now completely take
- for granted, and wouldn't consider using something which isn't declarative. A
- good metric to show this is me realising that I can't pinpoint the moment when
- I decided to switch to NixOS. It's like I had a distant past when this wasn't
- true.
-].
-
-I was impressed. Even though I've been experiencing the benefits of Nix
-isolation daily, I always felt skeptical that something would be missing,
-because the devil is always on the details. But the result was much better than
-expected!
-
-There were only 2 missing configurations:
-
-. tap-to-click on the touchpad wasn't enabled by default;
-. the default theme from the gnome-terminal is "Black on white" instead of
- "White on black".
-
-That's all.
-
-I haven't checked if I can configure those in NixOS GNOME module, but I guess
-both are scriptable and could be set in a fictional `setup.sh` run.
-
-This makes me really happy, actually. More happy than I anticipated.
-
-Having such a powerful declarative OS makes me feel like my data is the really
-important stuff (as it should be), and I can interact with it on any
-workstation. All I need is an internet connection and a few hours to download
-everything. It feels like my physical workstation and the installed OS are
-serving me and my data, instead of me feeling as hostage to the specific OS
-configuration at the moment. Having a few backup copies of everything important
-extends such peacefulness.
-
-After this positive experience with recreating my OS from simple Nix
-expressions, I started to wonder how far I could go with this, and started
-considering other areas of improvements:
-
-== First run on a fresh NixOS installation
-
-Right now the initial setup relies on non-declarative manual tasks, like
-decrypting some credentials, or manually downloading *this* git repository with
-specific configurations before *that* one.
-
-I wonder what some areas of improvements are on this topic, and if investing on
-it is worth it (both time-wise and happiness-wise).
-
-== Emacs
-
-:spacemacs: https://spacemacs.org/
-:emacs: https://www.gnu.org/software/emacs/
-:layers: https://spacemacs.org/doc/LAYERS.html
-:there: https://nixos.org/nixos/manual/index.html#module-services-emacs-adding-packages
-:packages: https://www.gnu.org/software/guix/manual/en/html_node/Application-Setup.html#Emacs-Packages
-
-Right now I'm using the {spacemacs}[Spacemacs], which is a community package
-curation and configuration on top of {emacs}[Emacs].
-
-Spacemacs does support the notion of {layers}[layers], which you can
-declaratively specify and let Spacemacs do the rest.
-
-However this solution isn't nearly as robust as Nix: being purely functional,
-Nix does describe everything required to build a derivation, and knows how to do
-so. Spacemacs it closer to more traditional package managers: even though the
-layers list is declarative, the installation is still very much imperative.
-I've had trouble with Spacemacs not behaving the same on different computers,
-both with identical configurations, only brought to convergence back again after
-a `git clean -fdx` inside `~/.emacs.d/`.
-
-The ideal solution would be managing Emacs packages with Nix itself. After a
-quick search I did found that {there}[there is support for Emacs packages in
-Nix]. So far I was only aware of {packages}[Guix support for Emacs packages].
-
-This isn't a trivial change because Spacemacs does include extra curation and
-configuration on top of Emacs packages. I'm not sure the best way to improve
-this right now.
-
-== myrepos
-
-:myrepos: https://myrepos.branchable.com/
-
-I'm using {myrepos}[myrepos] to manage all my git repositories, and the general
-rule I apply is to add any repository specific configuration in myrepos'
-`checkout` phase:
-
-[source,sh]
-----
-# sample ~/.mrconfig file snippet
-[dev/guix/guix]
-checkout =
- git clone https://git.savannah.gnu.org/git/guix.git guix
- cd guix/
- git config sendemail.to guix-patches@gnu.org
-----
-
-This way when I clone this repo again the email sending is already
-pre-configured.
-
-This works well enough, but the solution is too imperative, and my `checkout`
-phases tend to become brittle over time if not enough care is taken.
-
-== GNU Stow
-
-:not-at-all: https://euandre.org/git/dotfiles/tree/bash/symlinks.sh?id=316939aa215181b1d22b69e94241eef757add98d
-:stow: https://www.gnu.org/software/stow/
-
-For my home profile and personal configuration I already have a few dozens of
-symlinks that I manage manually. This has worked so far, but the solution is
-sometimes fragile and {not-at-all}[not declarative at all]. I wonder if
-something like {stow}[GNU Stow] can help me simplify this.
-
-== Conclusion
-
-:nix: https://nixos.org/nix/
-
-I'm really satisfied with NixOS, and I intend to keep using it. If what I've
-said interests you, maybe try tinkering with the {nix}[Nix package manager] (not
-the whole NixOS) on your current distribution (it can live alongside any other
-package manager).
-
-If you have experience with declarative Emacs package managements, GNU Stow or
-any similar tool, _etc._, mail me some tips]. If you don't have any experience
-at all, I'd still love to hear from you.