mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-04-10 03:13:36 +02:00
70 lines
2.3 KiB
Markdown
70 lines
2.3 KiB
Markdown
# Disko Config
|
|
|
|
Generate LUKS keyfile to encrypt the root partition, it's used by disko.
|
|
|
|
```bash
|
|
# partition the usb stick
|
|
DEV=/dev/sdX
|
|
parted $DEV -- mklabel gpt
|
|
parted $DEV -- mkpart primary 2M 512MB
|
|
parted $DEV -- mkpart primary 512MB 1024MB
|
|
mkfs.fat -F 32 -n NIXOS_DSC ${DEV}1
|
|
mkfs.fat -F 32 -n NIXOS_K3S ${DEV}2
|
|
|
|
# Generate a keyfile from the true random number generator
|
|
KEYFILE=./kubevirt-luks-keyfile
|
|
dd bs=512 count=64 iflag=fullblock if=/dev/random of=$KEYFILE
|
|
|
|
# generate token for k3s
|
|
K3S_TOKEN_FILE=./kubevirt-k3s-token
|
|
K3S_TOKEN=$(grep -ao '[A-Za-z0-9]' < /dev/random | head -64 | tr -d '\n' ; echo "")
|
|
echo $K3S_TOKEN > $K3S_TOKEN_FILE
|
|
|
|
# copy the keyfile and token to the usb stick
|
|
KEYFILE=./kubevirt-luks-keyfile
|
|
DEVICE=/dev/disk/by-label/NIXOS_DSC
|
|
# seek=128 skip N obs-sized output blocks to avoid overwriting the filesystem header
|
|
dd bs=512 count=64 iflag=fullblock seek=128 if=$KEYFILE of=$DEVICE
|
|
|
|
K3S_TOKEN_FILE=./kubevirt-k3s-token
|
|
USB_PATH=/run/media/ryan/NIXOS_K3S
|
|
cp $K3S_TOKEN_FILE $USB_PATH
|
|
```
|
|
|
|
### 2. Partition the SSD & install NixOS via disko
|
|
|
|
```bash
|
|
# enter an shell with git/vim/ssh-agent/gnumake available
|
|
nix-shell -p git vim gnumake
|
|
# clone this repository
|
|
git clone https://github.com/ryan4yin/nix-config.git
|
|
|
|
cd nix-config
|
|
|
|
# one line
|
|
sudo nix run --experimental-features "nix-command flakes" 'github:nix-community/disko#disko-install' -- \
|
|
--write-efi-boot-entries --disk main /dev/nvme0n1 --flake .#kubevirt-shoryu
|
|
|
|
|
|
# or step by step
|
|
## 1. partition & format the disk via disko
|
|
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko hosts/k8s/disko-config/kukubevirt-disko-fs.nix
|
|
## 2. install nixos
|
|
sudo nixos-install --root /mnt --no-root-password --show-trace --verbose --flake .#kubevirt-shoryu
|
|
|
|
# enter into the installed system, check password & users
|
|
# `su ryan` => `sudo -i` => enter ryan's password => successfully login
|
|
# if login failed, check the password you set in install-1, and try again
|
|
nixos-enter
|
|
|
|
# NOTE: DO NOT skip this step!!!
|
|
# copy the essential files into /persistent
|
|
# otherwise the / will be cleared and data will lost
|
|
## NOTE: impermanence just create links from / to /persistent
|
|
## We need to copy files into /persistent manually!!!
|
|
mv /etc/machine-id /persistent/etc/
|
|
mv /etc/ssh /persistent/etc/
|
|
mkdir -p /persistent/home/ryan
|
|
chown -R ryan:ryan /persistent/home/ryan
|
|
```
|