Files
NixOS-Configs/home/nvim/default.nix
Anish Govind d1e243dd12 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.
2026-09-19 01:14:33 -07:00

88 lines
1.9 KiB
Nix

{
config,
pkgs,
lib,
my,
...
}:
let
treesitterParsers = pkgs.symlinkJoin {
name = "treesitter-parsers";
paths = builtins.attrValues pkgs.vimPlugins.nvim-treesitter.passthru.grammarPlugins;
};
in
{
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
withNodeJs = true;
withPython3 = true;
extraPackages = with pkgs; [
# Native compilation tools & Treesitter CLI
gcc
clang
gnumake
cmake
tree-sitter
# Search & Fuzzy Finding
ripgrep
fd
fzf
# Archive and Network Utilities
git
curl
unzip
gnutar
gzip
# Language Servers, Linters & Formatters (Declarative, no Mason needed)
# Nix
nil
nixfmt
statix
# Lua
lua-language-server
stylua
# C / C++
llvmPackages_latest.clang-tools
llvmPackages_latest.lldb
# Rust
rust-analyzer
# Python
pyright
ruff
# Web / TypeScript / JavaScript / HTML / CSS / JSON
vtsls
vscode-langservers-extracted
prettier
# Shell
shfmt
shellcheck
];
extraWrapperArgs = [
"--set"
"NVIM_TREESITTER_PARSERS"
"${treesitterParsers}"
];
};
# 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";
}