175 lines
3.8 KiB
Markdown
175 lines
3.8 KiB
Markdown
# 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
|
|
|
|
Generate SMB-credentials (if network mounts are used)
|
|
|
|
```bash
|
|
sudo /etc/nixos/setup-smb-credentials.sh
|
|
```
|
|
|
|
## Wartung
|
|
|
|
Optimise Nix Store and remove old generations
|
|
|
|
```bash
|
|
sudo nix-store --optimise && sudo nix-collect-garbage -d
|
|
```
|