See this repo here: https://github.com/aaronchall/config These are notes to myself, but might help others… (Edit this file with emacs!)
For new machine update system.stateVersion and name the machine a’la x1 (in flake.nix and repo’s x1.nix), give it hardware specific config from auto-generated hardware-configuration.nix and configuration.nix.
switch_config
was aliased to something like sudo nixos-rebuild switch --flake ~/config/#x1
where x1
is the name of the flake in flake.nix.
Now we have switch
which is a function
that does nh os switch ~/config
and uses the hostname as the flake output.
Be sure to commit new files so flake can see them.
- flake.nix - top level entry point, has all computers config’d
- x1 - my laptop, uses the following nix files:
- x1.nix - everything specific to the machine, stuff like
- contents of old hardware-configuration.nix
- keyboard media key mappings with actkbd
- network device references from old configuration.nix
- other machine specific configuration like systemd job and experimental services
- console.nix - everything I would want on any nix console/bash shell
- networks.nix - example file, actual details are uncommitted
- colors.nix - long story, but used in both console and gui
- prompt.sh - instead of multiline string, allows for syntax highlighting
- gui.nix - everything I would want on any gui machine, browsers, editors, etc.
- colors.nix - actually gave a pull request with these to kitty
- home.nix - home-manager, dotfile kind of stuff,
some things are just better handled by home-manager anyways.
- home console - not broken down into these… yet.
- home gui - not broken down into…
- x1.nix - everything specific to the machine, stuff like
- server
- console.nix
- home.nix console semantic
- x1 - my laptop, uses the following nix files:
- screensharing-hacks.nix - no need to check these out unless you’re trying to get screensharing to work with wayland