# NixOS-konfiguration Det här förrådet innehåller en flake-baserad NixOS-konfiguration för mina maskiner. Just nu finns värden `kronos`. Punktfiler förväntas att finns under `~/dotfiles`, och hanteras med home manager ## Flakes Vi lever i framtiden, därför används flakes exklusivt. ## För att installera 1. Kontrollera att rätt disk (`installDisk`) är vald i `hosts/kronos/default.nix` 2. Generera en `hardware-configuration.nix`. Tag dock bort all information om filsystem. Disko sköter redan det åt oss. 3. Kontrollera `networking.hostId`. Bör vara unikt för nätverket. ### Applicera konfiguration Sedan: ```bash sudo -i export NIX_CONFIG='experimental-features = nix-command flakes' cd /tmp git clone nixcfg cd nixcfg ``` Applicera disk-layouten: ```bash nix run github:nix-community/disko -- --mode disko .#kronos ``` Generera hårdvarufilen och kopiera in den i förrådet: ```bash nixos-generate-config --root /mnt cp /mnt/etc/nixos/hardware-configuration.nix ./hosts/kronos/hardware-configuration.nix ``` Kom ihåg att ta bort alla filesystemkonfiguration från `hardware-configuration.nix`. Disko sköter ju redan det. Kopiera också över konfigurationen till målenheten ```bash rm -rf /mnt/etc/nixos cp -r /tmp/nixcfg /mnt/etc/nixos ``` Installera systemet: ```bash nixos-install --flake .#kronos ``` Registrera TPM-nyckeln: ```bash nixos-enter --root /mnt ./systemd-cryptenroll.sh ``` Starta om: ```bash reboot ``` ## Efter första uppstart ```bash git clone ~/dotfiles ``` ## Vanligt underhåll När systemet väl är installerat jobbar man oftast så här. Uppdatera flake-låset: ```bash nix flake update ``` Bygg och applicera ändringar på den lokala maskinen: ```bash sudo nixos-rebuild switch --flake .#kronos ``` Testa en konfiguration utan att göra den permanent vid nästa boot: ```bash sudo nixos-rebuild test --flake .#kronos ``` Bygg bara, utan att byta system direkt: ```bash sudo nixos-rebuild build --flake .#kronos ``` Rensa gamla generationer och oanvända paket: ```bash sudo nix-collect-garbage -d ``` Kontrollera `ZFS`-snapshots: ```bash zfs list -t snapshot ```