summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Lemon <y@yulqen.org>2023-04-22 10:37:58 +0100
committerMatthew Lemon <y@yulqen.org>2023-04-22 10:37:58 +0100
commitf397cd31940fcbb99ac41dd73031e55ef3ab17d3 (patch)
tree2312a19089831535923a9e1a5c5abaff2bb9185e
parent50be071e42d2660972feae8642498c4a27d256d4 (diff)
Adds an post on NixOS
-rw-r--r--content/blog/quietly_moving_on_from_nixos.md86
1 files changed, 86 insertions, 0 deletions
diff --git a/content/blog/quietly_moving_on_from_nixos.md b/content/blog/quietly_moving_on_from_nixos.md
new file mode 100644
index 0000000..90fd3eb
--- /dev/null
+++ b/content/blog/quietly_moving_on_from_nixos.md
@@ -0,0 +1,86 @@
+---
+title: "Quietly moving on from NixOS?"
+date: 2023-04-22T09:14:11+01:00
+draft: true
+categories: ['Computing']
+tags: ['nixos']
+---
+
+\- TLDR: *"I'm not clever enough and life is too short."*.
+
+The bald fact is that I spend a lot of time configuring stuff on computers.
+Far more time than getting anything productive done.
+I guess I am shooting for some kind of paradise state (free software, Unix-based, command-line focused, 100% configurable, reproducible, free from the pervasive tentacles of big tech, ads, spyware and anything that looks like Windows) which, as everyone knows, does not exist.
+
+Linux/Unix systems generally do offer the possibility of all that, and NixOS gets so much of it right.
+
+### OpenBSD
+
+Over the last year or two I've taken my distro-hopping into exotic territory and sinking a massive amount into this pursuit of happiness in these previously-undiscovered worlds.
+
+A Linux user since around 2006, I traditionally switch between the likes of Debian and Arch, both of which I understand really well and am *very* comfortable living in.
+
+But last year I tried OpenBSD, which I ran on all three of my laptops (I hate using VMs - it's bare metal or nothing), during which I endured the self-limiting but highly secure and minimalist approach to computing which that platform affords you.
+I learned the strange file system and spent days trying to work out how to format a USB stick.
+I joined the various mailing lists and experienced first hand the level of technical expertise that goes into maintaining a system like BSD, whose job is be effective without compromise - predominantly on the server.
+
+### NixOS
+
+Following OpenBSD, I switched to NixOS - about six months ago - and I've enjoyed my time learning about the Nix language, nixpkgs, NixOS and functional, declarative system management.
+
+The Nix package manager and NixOS itself is a brilliant idea that solves a real problem, that even me as an ageing tech hobbyist and sometime programmer feels the benefit from.
+
+Look at my [stream post for 2 January 2023](https://yulqen.org/stream/#monday-2-january-2023).
+
+Once you get your head round Nix, it's a fantastic experience - adding a line of config here and there, commiting the change in your git repository and running `sudo nixos-rebuild switch --flake .#` is all it takes.
+
+
+I went from having a single `configuration.nix` file, to a whole structure of files worthy of [its own git repository](https://github.com/yulqen/nixosconfig), the workings of which I cloned from someone else, but eventually it made sense to me and I was able to tailor it for my own use.
+
+### Flakes
+
+From the off, I used [Home Manager](https://nix-community.github.io/home-manager/) and then advanced to the barely-documented world of [Flakes](https://nixos.wiki/wiki/Flakes), having fallen for the hype.
+I installed Nix on three laptops, all configured from the same repo, with slight hardware differences easily accommodated for by flakes.
+The principle behind flakes took me a long time to understand and of course - here's the kicker - I still don't really understand it.
+I know this because when I want to do something slightly off script - which is the structure of my `flake.nix`, which I copied from somewhere - it all starts to fall down and feel too difficult.
+
+It's fair to say that the benefit of Nix for me is felt when maintaining those three laptops.
+It is great to be able to replicate a system pretty much identically across different machines, just by doing a `git pull` and running `nixos-rebuild`.
+I even found out how to manage my whole Firefox configuration using flakes - including extensions and *even bookmarks*.
+Really, it's great when it all works.
+But getting there can take hours.
+
+### Missing the FHS
+
+Problems arose recently when I wanted to use some bash and perl scripts I use on my Arch desktop machine and Nix being what it is, the realisation that there isn't the full [Filesystem Hierarchy Standard](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard?ref=linuxhandbook.com) to drop a file into, add it to your `PATH`, `chmod +x` it and run it without thinking.
+For full reproducibility, you basically either write a derivation for the script (which is great if you're doing it all the time and you *really* get Nix) or your incorporate it into your configuration, which is actually pretty easy to do.
+
+The other way to look at it is it's a total pain in the arse to something which is dead simple on a traditional Linux distribution.
+Like run a Bash script.
+
+### Overlays
+
+Another issue is [overlays](https://nixos.wiki/wiki/Overlays). I get the requirement and I've had to implement one - for VSCode plugins, or something, which I wasted several hours trying to understand and then withdrew because actually I'd rather just use plugins from the marketplace, like everyone else - but I just don't have the brainspace to have to do this stuff all the time.
+
+### Laptop death
+
+Two of my laptops are suddenly dead: a x201 and x220 Thinkpad, with battery and network card problems, and therefore the benefit of having a reproducible system is slightly less.
+When I make changes my remaining X1 Thinkpad, I am commiting the changes as ever, but I think now I am doing so in anticipation of coming back to Nix at some point in the future.
+The git repo will still be there and all I'll need to do is clone it, move a few files around, enable flakes and then rebuild.
+That's what I anticipate anyway.
+
+I need to stop writing now, so to conclude: I think I might go back to Debian.
+
+### Instructions to self
+
+For future reference, this is what I need to do.
+
+1. Install NixOS.
+2. Clone the nixconfig repository to wherever.
+3. Copy the generated `hardware-configration.nix` file to `nixconfig/machines/x1/` (assuming I am doing this for the X1).
+4. Enable flakes.
+5. Run `sudo nixos-rebuild switch --flake .#`.
+
+That's about it.
+
+