NixOS version: Unstable
The main thing this does beyond a standard NixOS setup is a single-variable theme system — themingModule.theme is the only value you change to switch themes, and home/theming/getTheme.nix propagates it everywhere (GTK, Neovim, Waybar CSS, Kitty, Zellij, Rofi, Dunst, Hyprland borders, lock screen wallpaper). Each theme is also baked into the bootloader as a separate entry via NixOS specialisations.
- Themes: Dracula, Catppuccin Frappe, Catppuccin Latte
- Window Manager: Hyprland
- Terminal: Kitty
- Shell: Fish
- Multiplexer: Zellij
- Editor: Neovim via NixVim
- Browser: Brave
- Launcher: Rofi
- Bar: Waybar
- Lock screen: Hyprlock
- Idle daemon: Hypridle
- Notifications: Dunst
- Screenshots: Grimblast
- Wallpapers: Waypaper
- File manager: Yazi
- System monitor: Bottom
- Media player: mpv with sponsorblock, MPRIS, quality menu
- Image viewer:
kitten icat - PDF viewer: Firefox
- Neovim is configured entirely through NixVim — the whole thing is a Nix module. LSPs: clangd, nil_ls, pyright, rust_analyzer, hls, metals, ts_ls, eslint, tinymist, jsonls.
- Discord plugins and themes are managed declaratively via Nixcord (Vencord on Vesktop).
pkgs/wayland-push-to-talk-fix.nixis a custom Nix package wrapping a C tool that remaps a mouse button to a virtual keypress, needed for Discord PTT on Wayland where button passthrough doesn't work natively.userOptions.deviceinflake.nixgates monitor layout, workspace bindings, battery widget, idle timeouts, and package lists — the same config targets both PC and laptop.scripts/shells/has per-language Nix dev shells for Rust, Python, C++, and Haskell. Enter any withdev(nix-shell --command fish).- Waybar workspace labels are Japanese kanji (一二三…).
flake.nix userOptions (theme, device, nvidia, wm)
configuration.nix system-level config
home.nix home-manager entry point
home/
theming/
theming.nix NixOS option: themingModule.theme
getTheme.nix maps theme name → all per-app configs
hypr/ Hyprland + hyprlock + hypridle
wm/ Waybar + per-theme CSS + cava
shell/ Fish, Kitty, Zellij
neovim.nix
discord.nix
modules/
nvidia.nix NVIDIA Wayland (explicit sync, VAAPI, container toolkit)
jellyfin.nix Jellyfin + Sonarr + Bazarr
hosts/main/ hardware config, bootloader, kernel (r8125 driver)
pkgs/ custom package derivations
scripts/
wallpaper_lutgen.sh applies palette LUTs to source wallpapers via lutgen
shells/ per-language nix-shells
This config expects the repo at /etc/nixos — theme asset paths and the Zellij theme directory are hardcoded there.
sudo git clone <repo> /etc/nixos
sudo nixos-rebuild switch --flake /etc/nixos#Jeremy-nixosTo change theme, set theme in flake.nix ("frappe", "latte", or "dracula") and rebuild. The three themes are also available as separate bootloader entries without editing anything.
To target laptop instead of PC, set device = "laptop" in flake.nix.
Wallpapers (requires lutgen in $PATH, run from the wallpapers/ directory):
bash ../scripts/wallpaper_lutgen.shSource images go in wallpapers/originals/ (or wallpapers/originals/anime/). Already-converted files are skipped.