███╗ ███╗██╗ ██╗ ███╗ ██╗██╗██╗ ██╗ ██████╗ ███████╗
████╗ ████║╚██╗ ██╔╝ ████╗ ██║██║╚██╗██╔╝██╔═══██╗██╔════╝
██╔████╔██║ ╚████╔╝ ██╔██╗ ██║██║ ╚███╔╝ ██║ ██║███████╗
██║╚██╔╝██║ ╚██╔╝ ██║╚██╗██║██║ ██╔██╗ ██║ ██║╚════██║
██║ ╚═╝ ██║ ██║ ██║ ╚████║██║██╔╝ ██╗╚██████╔╝███████║
╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
| Name | Arch | Notes |
|---|---|---|
erebor |
x86_64 | Laptop, LUKS-encrypted root |
imladris |
x86_64 | Laptop |
nixvm |
x86_64 | VM |
| Name | Description |
|---|---|
| my-shell | My shell dotfiles. |
| my-hyprland | My Hyprland dotfiles. |
| my-neovim | My NeoVim dotfiles. |
| my-mvc.vim | My minimal vim config. |
flake.nix # Entrypoint — nixpkgs-unstable + home-manager
configuration.nix # Shared NixOS config imported by all hosts
hosts.nix # Per-host module toggles and settings
hardware/ # Per-host hardware configurations
modules/desktop.nix # Desktop environment module (Hyprland, audio, bluetooth)
modules/home.nix # Home Manager entry point
modules/home/ # Home Manager modules (shell, git, gtk, development)
modules/system/ # NixOS system modules (shell, docker, plymouth, sshd)
- Hyprland — Wayland compositor with XWayland support
- Plymouth — Graphical boot splash (
lonepreset, silent boot, systemd initrd) - Home Manager — Declarative user environment (Neovim, Ghostty, Kitty, Waybar, Rofi, Starship, swww)
- Audio — PipeWire via
modules/system/audio.nix - Bluetooth — Optional via
modules/system/bluetooth.nix - 1Password — System-level GUI + CLI integration
- Fingerprint —
fprintdenabled for sudo and polkit-1 authentication
bat btop curl envsubst fzf gvfs gzip jq lsd ncdu neovim ripgrep starship stow tmux tree unzip vim wget yazi zoxide
Fonts: JetBrains Mono Nerd Font · BioRhyme · SF Pro Display · Special Elite
Media: imv mpv pinta playerctl plex-desktop plexamp spotify vlc
Desktop: ghostty kitty libnotify rofi swaynotificationcenter swayosd swww waybar yazi
Utility: brightnessctl grimblast libsecret neovim pavucontrol starship wl-clipboard
Development (host-level toggle via modules.development.enable): black bun gcc github-cli gnumake go gopls gotools hugo isort just nixd nodejs prettier python3 stylua tree-sitter uv + mise for runtime version management
IMPORTANT: I don't use a display manager like sddm. This hardware setup assumes your main disk is encrypted. While you
can certainly modify, unless you encrypt your disk and/or use a display manager, using this configuration leaves you vulnerable.
Basic LUKS encryption setup (Assuming UEFI boot, swap, and OS partitions on a modern NVME drive):
cryptsetup luksFormat /dev/nvme0n1p3
cryptsetup luksOpen /dev/nvme0n1p3 cryptroot
mkfs.ext4 /dev/mapper/cryptroot
List enrolled fingerprints for the current user:
fprintd-list $USEREnroll a finger (default: right-index-finger):
fprintd-enrollTo enroll a specific finger, pass -f <finger>. Valid finger names: left-thumb, left-index-finger, left-middle-finger, left-ring-finger, left-little-finger, right-thumb, right-index-finger, right-middle-finger, right-ring-finger, right-little-finger.
Verify an enrolled finger:
fprintd-verify# Build and switch (replace <host> with erebor, imladris, or nixvm)
sudo nixos-rebuild switch --flake .#<host>There are two utility aliases for bash and zsh that will rebuild and garbage collect, respectively. The hostname is determined in the alias, so you don't need to specify the host name.
Rebuild and switch
nix-rbsBuild only (no activation)
nix-rbbTest (activate, no persistence across reboot)
nix-rbtGarbage Collect
nix-gc