NixOS Configurations for my personal and work machines.
This repo is for my own machines so it's not really set up to just clone and go but if you feel like taking inspiration feel free to dive in!
If you're interested in this style of machine management I can recommend the following resources:
- NixOS & Flakes Book - An excellent tutorial and write up for using Flakes, highly recommended!
- Nix Pills - Tutorials on Nix and Nixpkgs in incremental steps. Great for learning more about Nix.
- Home Manager Manual - Core reference for all things Home Manager.
- NixOS Manual - Core reference for all things NixOS.
- NixOS Wiki - Unofficial user wiki for NixOS, some info is dated but still a good source.
The typical workflow is to clone this to a machine I'm setting up and bootstrap it with:
sudo nixos-rebuild switch --flake '.#<machine_name>'
Once a machine has been bootstrapped and rebooted any future changes are done with the following make targets.
Build the config but don't activate or reboot, just link it into the local dir as result
.
make result
Build and activate the new config and make it default.
make switch
Build the config and make it the default on next boot.
make boot
Clean out all but the last 5 generations.
make gc-gen
The goal of my setup is to be fairly minimal and to mostly get out of the way so I can focus on my work. I prefer driving with the keyboard as much as possible, using VIM keybinds for editing and the CLI for most tasks and the software below reflects that.
An excellent tiling window manager and Wayland compositor. Sway is lightweight, keyboard-driven and easily customisable. Wayland provides better monitor management and scaling on portable devices compared to X11.
VIM binds with the power of Emacs, now with Wayland support.
I manage terminal windows in Tmux rather than Sway more out of habit than anything else.
Oh My Zsh with a few plugins (git
, aws
and emacs
and others) and my own aliases and functions from home/zsh.