# NixOS ## Playground (QEMU) ```bash sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager ``` - Video: QXL - If the HDD for the VM is too small: `qemu-img resize nixos.qcow2 +20G` ## Manuelle Installation (UEFI) ### 1. Root-Shell starten ```bash sudo -i # Use german keyboard layout loadkeys de # Short for all the stuff below !!! TAKE CARE OF THE USERDATA !!! curl -L https://www.fischer.im/nixos/minimal-install --output install.sh chmod 744 ./install.sh ./install.sh reboot ``` If you don't use the installation script, you need to follow the steps 2-8 ### 2. Partitionierung The following schema creates four partitions on `/dev/sda`: | Partition | Typ | Groesse | Mountpoint | |-------------|----------------|-------------------|------------| | `/dev/sda1` | FAT32 (EFI) | 512 MB | `/boot` | | `/dev/sda2` | linux-swap | 8 GB | — | | `/dev/sda3` | ext4 (Root) | Rest minus Home | `/` | | `/dev/sda4` | ext4 (Home) | 50% des Rests | `/home` | **HINT:** The sizes must be adapted to your hard drive. In the example it's assumed that a 100GB drive is in use. ```bash # GPT-partition table parted /dev/sda -- mklabel gpt # EFI-partition (512 MB) parted /dev/sda -- mkpart esp fat32 1MB 512MB parted /dev/sda -- set 1 esp on # Swap-partition (8 GB) parted /dev/sda -- mkpart swap linux-swap 512MB 8626MB # Root-partition (ca. 45 GB) parted /dev/sda -- mkpart root ext4 8636MB 40000MB # Home-partition (Rest) parted /dev/sda -- mkpart home ext4 40000MB 100% # Check result parted /dev/sda -- print ``` ### 3. Dateisysteme erstellen ```bash # EFI-Partition formatieren mkfs.fat -F 32 -n boot /dev/sda1 # Swap-Partition formatieren mkswap -L swap /dev/sda2 # Root-Partition formatieren mkfs.ext4 -L nixos /dev/sda3 # Home-Partition formatieren mkfs.ext4 -L home /dev/sda4 ``` ### 4. Partitionen einhängen Die Reihenfolge ist wichtig — zuerst Root, dann die Unterverzeichnisse: ```bash # Root mounten mount /dev/disk/by-label/nixos /mnt # Boot-Verzeichnis erstellen und mounten mkdir /mnt/boot mount -o umask=077 /dev/disk/by-label/boot /mnt/boot # Home-Verzeichnis erstellen und mounten mkdir -p /mnt/home mount /dev/disk/by-label/home /mnt/home # Swap aktivieren swapon /dev/disk/by-label/swap ``` ### 6. Generate configuration ```bash nixos-generate-config --root /mnt ``` This creates two files: - `/mnt/etc/nixos/hardware-configuration.nix` — detected hardware and mountpoints - `/mnt/etc/nixos/configuration.nix` — Base configuration ### 7. Check the detected bootloader Check in `/mnt/etc/nixos/configuration.nix`, that the bootloader is configured like this: ```nix { boot.loader = { systemd-boot.enable = true; efi.canTouchEfiVariables = true; }; } ``` ### 8. Install system ```bash nixos-install # After the installation the script sets your root password. (Test1) reboot ``` ### 9. After the first reboot ```bash curl --output release.tar.gz https://gitea.fischer.im/sebastian/nixos-cesium/archive/[0.0.2].tar.gz tar xzf release.tar.gz chmod 744 nixos-cesium/script/post-install.sh ./nixos-cesium/script/post-install.sh ``` If you don't use the post-installation script, follow the next step ```bash cp -r ~/nixos-cesium/config/* /etc/nixos/ # Remember to activate vm-guest.nix or vm-host.nix in configuration.nix nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.11.tar.gz home-manager nix-channel --update # Konfiguration anwenden nixos-rebuild switch --option experimental-features "nix-command flakes" reboot ``` ### 10. Post Installation ```bash # SMB-Zugangsdaten einrichten (falls Netzlaufwerke genutzt werden) sudo /etc/nixos/setup-smb-credentials.sh ``` ## Wartung ```bash # Nix Store optimieren und alte Generationen entfernen sudo nix-store --optimise && sudo nix-collect-garbage -d ```