Welcome to my personal flake Nix/NixOS configuration, powered by home-manager. This configuration is designed to be production-ready (according to my personal requirements) and comes with the xmonad and Qtile tiling window managers. Additionally, I have a declarative configuration for the gnome desktop environment, although it’s not my primary environment.
This configuration is specifically tailored for AMD hardware, hence, modifications might be necessary to suit other machines.
Nix flakes is the preferred way to utilize this configuration. The use of flakes enhances the reproducibility
of the system and enables seamless support for multiple machines via the flake.nix
file.
My NixOS machine is called cyrus. Here I build the home and system configuration together as follows:
sudo nixos-rebuild --flake .#<HOSTNAME> switch
Upgrading the system implies updating the inputs one at the time:
sudo nix flake lock --update-input <INPUT>
or all of them together:
nix flake update
I maintain a second configuration for non-NixOS hosts (tested in Guix System so far), which is called atabey. Here I build only the home configuration:
nix build .#<USERNAME>
./result/activate
The flake configuration can be easily transformed into a non-flake, channel based one.
For example, if you want to use the nixos-unstable
you could do:
sudo nix-channel --add https://nixos.org/channels/nixos-unstable nixos
sudo nixos-rebuild switch --upgrade
When using a hybrid workflow (e.g. to keep using nix-shell
in a flake system)
it is important to update the channels without rebuilding:
nix-channel --update