Forcing these inputs to follow the root nixpkgs changed the ComfyUI
package's derivation hash, which invalidated the binary cache and queued
a 91-derivation rebuild (the full ComfyUI Python closure plus cudnn, nccl
and libnvshmem). Restore each input's own locked nixpkgs and the original
flake.lock, which matches the already-built, cached closure.
A dry-build now reports nothing to build. The single-nixpkgs cleanup is
not worth forcing multi-hour CUDA rebuilds.
Symlink three configs straight from the repo with mkOutOfStoreSymlink so
edits apply without a rebuild:
- home/hypr/hyprland.lua -> reload with `hyprctl reload`
- home/hypr/quickshell/** -> restart quickshell
- home/nvim/config/** -> next nvim start (lazy-lock.json now writable)
Hyprland's config was generated Lua; extract it to a hand-maintained file
and keep the palette and per-host monitors as generated fragments
(theme.lua / monitors.lua) loaded via dofile. The file also restores the
startup hook that imports the Wayland env into systemd and starts
graphical-session.target, which the removed home-manager hyprland module
used to provide.
Verified: lua syntax + execution against a stub hl, and flake check.
- add home/theme.nix as the single Silicon Volt palette and pass it to
home modules via extraSpecialArgs
- drive foot, hyprland, hyprlock, mako, fzf, starship, rofi and the
herdr picker from that palette; raw config files use @color@ tokens
substituted at build time
- pass my = config.my into home-manager; add my.pi.enable, my.flakeDir
- gate home/pi.nix on my.pi.enable (enabled on hades)
- route zshconf/hyprconf aliases and FLAKE_CONFIG through my.flakeDir
- rename the hyprland monitor option volt.monitors -> hypr.monitors
- fix use_auto_tmux command-substitution bug in zsh/init.zsh
- track home/nvim/config/lazy-lock.json for reproducible plugins
- document theming and toggles in the README
Replace the hl.exec_cmd autostart block with declarative home-manager
services so the desktop shell has proper ordering and lifecycle:
- services.hyprpaper (with settings) for hyprpaper
- services.cliphist for the text/image clipboard watchers
- services.hyprpolkitagent for the polkit agent
- programs.quickshell.systemd for the quickshell shell
- a hand-written systemd.user.services.mako (home-manager has no unit)
All are tied to config.wayland.systemd.target (graphical-session.target),
which start-hyprland already activates. No UWSM required.
- add my.username / my.gaming.enable / my.ai.local.enable options and
gate optional app modules on them instead of per-host import lists
- move vendor-neutral hardware.graphics into modules/graphical, leaving
only NVIDIA-specific drivers and env vars in modules/hardware/nvidia
- derive the primary user everywhere from my.username (users, getty,
home-manager, tmpfiles)
- de-duplicate Hyprland autostart down to a single system loginShellInit
using the start-hyprland wrapper
- consolidate all nixpkgs overlays into modules/core/nix.nix and use
final.stdenv.hostPlatform.system
- make the zsh rebuild helper target $(hostname) instead of hardcoded hades
- add nixpkgs follows for nixos-hardware, pi and comfy-ui (single nixpkgs)
- add .gitignore and a nixfmt flake formatter; format all nix files
- remove empty browser.nix/display-configuration.nix and rename
local_ai.nix -> local-ai.nix
- document the my.* toggles in the README
Swap the illogical-impulse-derived components for the upstream
quickshell-overview standalone module, update Hyprland keybinds
(Super+Tab overview, rofi launcher), refresh foot colors and
starship theme, and adjust related host/module wiring.