| rainlily | riverlily | waterlily | |
|---|---|---|---|
| Class | Desktop | Laptop | Laptop |
| Host | GIGABYTE AORUS X570 | Lenovo ThinkPad X1 Carbon Gen 12 | Lenovo ThinkPad T480s |
| CPU | AMD Ryzen 9 7950X3D | Intel Core Ultra 7 155U | Intel Core i7-8650U |
| GPU | Nvidia GeForce RTX 4080 | Intel Arc Xe-LPG 64EU | Intel UHD 620 |
| RAM | 64GB DDR5-6000 | 32GB LPDDR5x-6400 | 24GB DDR4-2400 |
FUN FACT: waterlily's display died as I was installing Nix on it because I dropped it while trying to remove the USB stick... ToT
Main shell is zsh with the following plugins:
zsh-autosuggestionszsh-completionszsh-syntax-highlightingsudogitcolored-man-pages
managed with zinit.
I don't use a display manager. Enter with start-hyprland.
| wm | hyprland |
| bar | waybar |
| menu | rofi |
| notifs | dunst |
| lock | hyprlock |
| idle | hypridle |
| bg | hyprpaper |
| ime | fcitx5 with fcitx5-mozc |
I use Solarized for everything.
| gtk | adw-gtk3 with adw-colors |
| qt | kde-breeze-solarized |
| cursors | xcursor-simp1e-solarized-dark |
| icons | yet-another-monochrome-icon-set with papirus-icon-theme |
| term | kitty |
| browser | librewolf and ungoogled-chromium |
| fm | pcmanfm with engrampa |
| video | vlc and mpv with svp |
| audio | spotify |
| images | viewnior |
- two-stage encryption with
LUKSfor the entire partition andfscryptfor the home folder- it's entirely unnecessary but I like it
tlponriverlilyandwaterlilyfor laptop power managementresticfor backups with hooks defined inmodules/services/backup.nixopenrgbandi2c-toolssupport for RGB control
On the minimal NixOS ISO:
NIX_CONFIG="experimental-features = nix-command flakes" nix run nixpkgs#git -- clone https://github.com/lvctr/nix-config.git /tmp/nix-config
cd /tmp/nix-config
./install.sh rainlily
# or: ./install.sh riverlily
# or: ./install.sh waterlilyThe installer handles the following flow automatically:
- Ask for the target disk.
- Write
hosts/<hostname>/disk.nix. - Run
disko. - Resolve the root and swap LUKS devices by partition label.
- Enroll both devices into TPM2.
- Generate
hardware-configuration.nix. - Run
nixos-install. - Prompt for the configured user password inside
/mnt.
And it will deliberately ask for the following secrets interactively:
- the target disk device
- the swap and root LUKS passphrase
- the passphrase re-entry needed for TPM enrollment
- the root and user account password after install
This repo uses path:$PWD#<hostname> during install so generated local files like hosts/<hostname>/disk.nix are visible to flake evaluation.
After first boot:
- Log in on the TTY.
- Start Hyprland with
start-hyprland. - Do the one-time setup below.
For fscrypt home-directory encryption:
sudo fscrypt setup
sudo fscrypt encrypt /home/<username> --source=pam_passphraseFor restic backup secrets:
sudo mkdir -p /etc/restic
echo "rest:http://backupuser:PASSWORD@truenas.local:8000/home-backups" | sudo tee /etc/restic/repository
echo "YOUR-RESTIC-ENCRYPTION-PASSPHRASE" | sudo tee /etc/restic/password
sudo chmod 600 /etc/restic/repository /etc/restic/passwordThe repo is split roughly like this:
hosts/for per-machine hardware facts and swap sizingmodules/core/for shared system baselines like boot, locale, users, shell, and utilitiesmodules/desktop/for shared desktop, theme, fonts, apps, audio, and gamingmodules/security/for hardeningmodules/services/for service modules like backupsmodules/storage/for disk layout and LUKS/TPM wiringhome/for Home Manager confighome/common/config/for dotfilespkgs/for custom packaged assetsoverlays/for exposing those custom packages to the system