hypr,nvim,quickshell: make configs live-editable

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.
This commit is contained in:
2026-09-19 01:14:33 -07:00
parent 8010cea0bc
commit d1e243dd12
5 changed files with 374 additions and 575 deletions

View File

@@ -2,6 +2,7 @@
config,
pkgs,
lib,
my,
...
}:
@@ -72,15 +73,14 @@ in
];
};
# Symlink LazyVim configuration to ~/.config/nvim recursively. This includes
# lazy-lock.json, which pins every plugin to a specific commit for
# reproducible builds. To update plugins, run `:Lazy update` in a writable
# copy and commit the resulting lazy-lock.json back to this repo, since the
# linked file is read-only.
xdg.configFile."nvim" = {
source = ./config;
recursive = true;
};
# Live LazyVim config symlinked straight from the repo: edits (and
# `:Lazy update` writes to lazy-lock.json) apply without a rebuild.
xdg.configFile."nvim/init.lua".source =
config.lib.file.mkOutOfStoreSymlink "${my.flakeDir}/home/nvim/config/init.lua";
xdg.configFile."nvim/lua".source =
config.lib.file.mkOutOfStoreSymlink "${my.flakeDir}/home/nvim/config/lua";
xdg.configFile."nvim/lazy-lock.json".source =
config.lib.file.mkOutOfStoreSymlink "${my.flakeDir}/home/nvim/config/lazy-lock.json";
# Symlink precompiled Treesitter parsers directly into ~/.config/nvim/parser
xdg.configFile."nvim/parser".source = "${treesitterParsers}/parser";