Go to file
2026-03-06 19:49:54 +01:00
config [TASK] Override hostname in VM 2026-02-15 17:13:29 +01:00
scripts [TASK] Add background image 2026-02-15 10:00:04 +01:00
.editorconfig [TASK] Initialize config 2026-02-03 21:56:52 +01:00
.gitignore [TASK] Save current state 2026-02-06 22:32:49 +01:00
CLAUDE.md [TASK] Improve documentation 2026-02-10 20:07:06 +01:00
install.sh [TASK] Restructure 2026-02-05 20:48:35 +01:00
kvm.xml [TASK] Initialize config 2026-02-03 21:56:52 +01:00
README.md [TASK] Improve scripts 2026-02-13 22:31:54 +01:00

NixOS

Playground (QEMU)

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

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.

# 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

# 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:

# 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

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:

{
    boot.loader = {
      systemd-boot.enable = true;
      efi.canTouchEfiVariables = true;
    };
}

8. Install system

nixos-install

# After the installation the script sets your root password. (Test1)

reboot

9. After the first reboot

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

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

Generate SMB-credentials (if network mounts are used)

sudo /etc/nixos/setup-smb-credentials.sh

Wartung

Optimise Nix Store and remove old generations

sudo nix-store --optimise && sudo nix-collect-garbage -d