# NixOS-konfiguration Det här förrådet innehåller flake-baserade NixOS-konfigurationer. ## Värdar - `daidalos`: Raspberry Pi 4, `aarch64-linux`, ZFS-root, `extlinux` - `hermes`: x86_64-server - `kronos`: x86_64-desktop ## Ny installation: `daidalos` De här stegen utgår från en helt ren maskin. Du behöver inte installera Nix innan du börjar. NixOS-installationsmediet innehåller redan `nix`, `nixos-install` och `nixos-generate-config`. ### Krav - En Raspberry Pi 4 - Ett separat microSD-kort med NixOS generiska `aarch64` SD-image - En separat måldisk för systemet, helst en USB-SSD eller NVMe-adapter som syns under `/dev/disk/by-id` - Nätverksanslutning under installationen - All data på måldisken raderas under installationen `daidalos` använder ZFS och refererar diskar via `/dev/disk/by-id`. Installera inte på samma medium som du har bootat installationsmiljön från. ### 1. Boota installationsmediet 1. Ladda ned NixOS generiska `aarch64` SD-image. 2. Skriv den till ett microSD-kort. 3. Starta Raspberry Pi 4 från kortet. 4. Om nätverket inte kommer upp automatiskt, kör `nmtui`. ### 2. Hämta förrådet och välj måldisk ```bash sudo -i export NIX_CONFIG='experimental-features = nix-command flakes' cd /tmp nix shell nixpkgs#git -c git clone nixcfg cd /tmp/nixcfg ls -l /dev/disk/by-id nix shell nixpkgs#openssl -c openssl rand -hex 4 nix shell nixpkgs#nvim -c nvim modules/hosts/daidalos/configuration.nix ``` Ändra sedan i `modules/hosts/daidalos/configuration.nix`: - Ersätt `REPLACE_ME` i `installDisk` med rätt disk från `/dev/disk/by-id` - Sätt `networking.hostId` till en unik sträng med 8 hextecken, till exempel värdet från `openssl rand -hex 4` ### 3. Partitionera, formatera och montera måldisken ```bash nix run github:nix-community/disko -- --mode destroy,format,mount --flake .#daidalos ``` Kommandot raderar all data på måldisken och monterar systemet under `/mnt`. ### 4. Generera `hardware.nix` för just den här maskinen ```bash mkdir -p /tmp/hw nixos-generate-config --root /mnt --dir /tmp/hw --no-filesystems cp /tmp/hw/hardware-configuration.nix modules/hosts/daidalos/hardware.nix ``` `--no-filesystems` är viktigt här. Disklayouten hanteras redan av `disko`. ### 5. Kopiera konfigurationen och installera systemet ```bash mkdir -p /mnt/etc cp -a /tmp/nixcfg /mnt/etc/nixos nixos-install --root /mnt --flake /mnt/etc/nixos#daidalos ``` `nixos-install` frågar efter ett root-lösenord för den installerade maskinen. ### 6. Starta om Ta bort installationskortet och starta om: ```bash reboot ``` Om Pi:n inte bootar från måldisken efter installationen är firmware troligen inte inställd för USB-boot ännu. Då behöver Raspberry Pi EEPROM uppdateras innan systemet kan starta från en USB-disk. ## Vanligt underhåll På en installerad maskin ligger konfigurationen under `/etc/nixos`. Uppdatera flake-låset: ```bash cd /etc/nixos nix flake update ``` Bygg och aktivera konfigurationen: ```bash cd /etc/nixos sudo nixos-rebuild switch --flake .#daidalos ``` Testa utan att göra ändringen permanent över reboot: ```bash cd /etc/nixos sudo nixos-rebuild test --flake .#daidalos ``` Bygg bara: ```bash cd /etc/nixos sudo nixos-rebuild build --flake .#daidalos ``` Rensa gamla generationer och oanvända paket: ```bash sudo nix-collect-garbage -d ``` Visa ZFS-snapshots: ```bash zfs list -t snapshot ```