I previously managed my dotfiles through yadm. When I heard about Nix(Os) - and while I was assigned a MacBook Air for work - I made the switch. The module system and the language make it possible to handle discrepancies between machines in a way that a plain git repo of dotfiles doesn't. And Nix really succeeds in managing everything on the system, not just user space.
The xyz-as-code approach in general resonates a lot with me. I like how NixOS makes
experimentation fearless, because I can (almost) always revert to a working state. Back
when I used Arch, doing a slightly complex setup of some kind could be a little scary,
because giving up halfway through the process left a mess I had to undo manually. On top
of that, the NixOS modules feel like cheating. So many advanced features that are just
a enable = true;
away.
This flake features configuration for my personal desktop and laptop (Thinkpad T560). Previously it also had a Mac system managed by nix-darwin. You can look through the commit history to find it if you're interested.
I strongly favor a keyboard-driven workflow, and terminal (CLI and TUI) applications. Colemak_dh is my keyboard layout of choice, and on top of that I strongly rely on multiple layers and home-row mods. On my desktop I get all these features from a QMK custom keyboard. On my laptop I use keyd to achieve the same customizability of the integrated keyboard through software. On MacOS I've used kmonad and kanata for this end (check commit history for details).
- Wayland desktop with the Hyprland compositor, until I find something else that has both the tiling and workspace mechanics I want. There are modules for mango and river that I'm experimenting with.
- Kitty terminal.
- Nushell which is a joy to use.
- Git configuration with three-way neovim mergetool, delta and difftastic for prettier or more semantic diff highlighting, gitui TUI git client, and many aliases.
- Offline synchronized, Oauth compatible, terminal-based, keyboard driven email setup. Through mbsync and earc, among other tools.
- Plain-text accounting with hledger.
- Neovim.
- Advanced keyboard customization on all platforms.
- Btrfs for transparent compression, and encryption-at-rest, through disko.
- fd, ripgrep, sd, bat, fzf modern high-power CLI tools.
- cmus and lyrical-rs for music in the terminal.
- Screenlocker, cpu clockspeed, and idle management for laptop.
- Librewolf to mitigate web tracking to some extent, with vim emulation.
- Consistent theming through stylix.
- XDG base directory paths for all the programs that can be coaxed to use them.