My unified nix flake for all configuration management.
machines | ||
modules | ||
pkgs | ||
profiles | ||
secrets | ||
sway | ||
.sops.yaml | ||
daniel.nix | ||
flake.lock | ||
flake.nix | ||
readme.md |
zomg nixos
TODO: overhaul this readme
$ ssh -t beefcake 'cdd && pwd && g pl && cd os/linux/nix && sudo nixos-rebuild switch --flake .# && echo DONE'
Or for pushing:
# do once to setup
$ ssh -t beefcake 'cdd && git config receive.denyCurrentBranch updateInstead'
# probably regenerate and commit flake.lock from this directory
nix flake lock
# push and rebuild+switch
$ git push beefcake:~/.config/lytedev-dotfiles
$ ssh -t beefcake 'cd ~/.config/lytedev-dotfiles/os/linux/nix && sudo nixos-rebuild switch --flake .# && echo DONE'
Install From NixOS Bootable Media
Documented below is my process for standing up a new NixOS node configured and managed by this flake.
Network Access
Boot the ISO (via Ventoy USB drive) and establish network access:
# plug in ethernet or do the wpa_cli song and dance
# scan if needed
wpa_cli scan
wpa_cli scan_results
wpa_cli add_network 0
wpa_cli set_network 0 ssid "MY_SSID"
wpa_cli set_network 0 psk "MY_WIFI_PASSWORD"
wpa_cli enable_network 0
wpa_cli save_config
Partition and mount disk(s) however you like. Preferably, though, use a disko configuration from this flake like so:
sudo nix-shell --packages git --run "
nix run \
--extra-experimental-features nix-command \
--extra-experimental-features flakes \
github:nix-community/disko -- \
--flake 'git+https://git.lyte.dev/lytedev/nix#diskoConfigOfChoice' \
--mode disko \
--arg disks '[ \"/dev/your_disk\" ]'
"
And finally install NixOS as specified by this flake:
nix-shell --packages git \
--run "
sudo nixos-install \
--flake 'git+https://git.lyte.dev/lytedev/nix#yourNixosConfig'
"
NOTE: This takes a while, mostly due to building Helix myself on each box. I really need to figure out a good local caching setup.
Ops stuff
- TODO: Look into https://github.com/zhaofengli/colmena
Other To Dos
- TODO: check stuff during receive with a hook?