Nvim migrate dir - #371
Conversation
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. 📝 WalkthroughSummary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings. WalkthroughNeovim configuration was moved from Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Makefile as Makefile (dev targets)
participant HM as Home Manager module
participant FS as User filesystem (~/.config/nvim)
Note over Makefile,HM: Updated target paths to use home-manager/programs/neovim
Makefile->>HM: invoke neovim-dev / neovim-sync / lua-check-neovim
HM->>FS: create out-of-store symlink -> ~/.config/nvim/init.lua (mkOutOfStoreSymlink)
HM->>FS: after writeBoundary -> copy ./nvim-pack-lock.json to ~/.config/nvim/nvim-pack-lock.json (chmod 644)
Note right of FS: Neovim sees new init.lua and pack-lock.json
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Possibly related PRs
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro Disabled knowledge base sources:
📒 Files selected for processing (1)
🧰 Additional context used📓 Path-based instructions (6)**/*.nix📄 CodeRabbit inference engine (CLAUDE.md)
Files:
**/default.nix📄 CodeRabbit inference engine (CLAUDE.md)
Files:
home-manager/programs/*/default.nix📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Files:
home-manager/programs/**/default.nix📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Files:
home-manager/**/*.nix📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Files:
home-manager/programs/**/*.nix📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Files:
🧠 Learnings (12)📓 Common learnings📚 Learning: 2025-11-25T09:34:55.014ZApplied to files:
📚 Learning: 2025-11-25T09:34:40.062ZApplied to files:
📚 Learning: 2025-11-25T09:35:01.066ZApplied to files:
📚 Learning: 2025-11-25T09:34:55.014ZApplied to files:
📚 Learning: 2025-11-25T09:34:55.014ZApplied to files:
📚 Learning: 2025-11-25T09:34:55.014ZApplied to files:
📚 Learning: 2025-11-25T09:34:55.014ZApplied to files:
📚 Learning: 2025-11-25T09:34:55.014ZApplied to files:
📚 Learning: 2025-11-25T09:35:01.066ZApplied to files:
📚 Learning: 2025-11-25T09:34:55.014ZApplied to files:
📚 Learning: 2025-11-25T09:34:40.062ZApplied to files:
🔇 Additional comments (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary of ChangesHello @shunkakinoki, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request focuses on reorganizing the Neovim configuration by migrating its files to a more structured Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Pull request overview
This PR migrates the Neovim configuration from a standalone config/nvim directory into the home-manager programs structure at home-manager/programs/neovim.
- Moved Neovim configuration files from
config/nvim/tohome-manager/programs/neovim/ - Integrated configuration directly into the home-manager neovim module
- Updated all file path references in the Makefile to point to the new location
Reviewed changes
Copilot reviewed 4 out of 7 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| home-manager/programs/neovim/default.nix | Added nvim configuration management with symlink creation for init.lua and activation script for nvim-pack-lock.json |
| config/nvim/default.nix | Removed entire file as configuration moved to home-manager |
| config/default.nix | Removed import of ./nvim module |
| Makefile | Updated all references from config/nvim/ to home-manager/programs/neovim/ |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| }; | ||
|
|
||
| home.file.".config/nvim/init.lua" = { | ||
| source = config.lib.file.mkOutOfStoreSymlink nvimInitLua; |
There was a problem hiding this comment.
The variable nvimInitLua is a relative path (./init.lua), but mkOutOfStoreSymlink requires an absolute path. This will create a broken symlink. Convert nvimInitLua to an absolute path using "${./.}/init.lua" or reference it relative to the module location.
| home.activation.copyNvimPackLock = lib.hm.dag.entryAfter [ "writeBoundary" ] '' | ||
| $DRY_RUN_CMD mkdir -p "$HOME/.config/nvim" | ||
| $DRY_RUN_CMD cp -f ${nvimPackLockJson} "$HOME/.config/nvim/nvim-pack-lock.json" | ||
| $DRY_RUN_CMD chmod 644 "$HOME/.config/nvim/nvim-pack-lock.json" | ||
| ''; |
There was a problem hiding this comment.
The explanatory comment from the original file explaining why this file is copied instead of symlinked (so Neovim can write to it) has been removed. This comment should be preserved as it documents important behavior that's not obvious from the code.
There was a problem hiding this comment.
Code Review
This pull request successfully migrates the Neovim configuration to a new directory structure under home-manager/programs/neovim. The changes across the Makefile and Nix files are consistent with this goal. My review includes suggestions to improve the maintainability of the Makefile by refactoring several targets to use variables, which will reduce code duplication and make future modifications easier.
| @NVIM_CONFIG="$(PWD)/home-manager/programs/neovim/init.lua"; \ | ||
| if [ ! -f "$$NVIM_CONFIG" ]; then \ | ||
| echo "⚠️ Could not find Neovim configuration at $$NVIM_CONFIG"; \ | ||
| exit 1; \ | ||
| fi | ||
| @echo "📝 Validating Neovim configuration syntax..." | ||
| @mkdir -p ~/.config/nvim | ||
| @ln -sf "$(PWD)/config/nvim/init.lua" ~/.config/nvim/init.lua | ||
| @if [ -f "$(PWD)/config/nvim/nvim-pack-lock.json" ]; then \ | ||
| ln -sf "$(PWD)/config/nvim/nvim-pack-lock.json" ~/.config/nvim/nvim-pack-lock.json; \ | ||
| @ln -sf "$(PWD)/home-manager/programs/neovim/init.lua" ~/.config/nvim/init.lua | ||
| @if [ -f "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ]; then \ | ||
| ln -sf "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ~/.config/nvim/nvim-pack-lock.json; \ | ||
| fi | ||
| @nvim --headless -c "lua dofile('$(PWD)/config/nvim/init.lua')" -c "qa" 2>&1; \ | ||
| @nvim --headless -c "lua dofile('$(PWD)/home-manager/programs/neovim/init.lua')" -c "qa" 2>&1; \ |
There was a problem hiding this comment.
This target defines a shell variable NVIM_CONFIG in one command block, but subsequent commands that could use it are run in separate shells, making the variable unavailable. This is confusing and potentially error-prone. Additionally, the path to the Neovim directory is repeated. To fix this and improve maintainability, you should combine the commands into a single logical block and use variables consistently.
@NVIM_DIR="$(PWD)/home-manager/programs/neovim"; \
NVIM_CONFIG="$$NVIM_DIR/init.lua"; \
if [ ! -f "$$NVIM_CONFIG" ]; then \
echo "⚠️ Could not find Neovim configuration at $$NVIM_CONFIG"; \
exit 1; \
fi; \
echo "📝 Validating Neovim configuration syntax..."; \
mkdir -p ~/.config/nvim; \
ln -sf "$$NVIM_CONFIG" ~/.config/nvim/init.lua; \
if [ -f "$$NVIM_DIR/nvim-pack-lock.json" ]; then \
ln -sf "$$NVIM_DIR/nvim-pack-lock.json" ~/.config/nvim/nvim-pack-lock.json; \
fi; \
nvim --headless -c "lua dofile('$$NVIM_CONFIG')" -c "qa" 2>&1; \
| @ln -sf "$(PWD)/home-manager/programs/neovim/init.lua" "$(HOME)/.config/nvim/init.lua" | ||
| @ln -sf "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" "$(HOME)/.config/nvim/nvim-pack-lock.json" |
There was a problem hiding this comment.
The path to the Neovim configuration directory is repeated. To improve maintainability and reduce redundancy, you can combine these commands into a single logical line and use a shell variable for the directory path.
@NVIM_DIR="$(PWD)/home-manager/programs/neovim"; \
ln -sf "$$NVIM_DIR/init.lua" "$(HOME)/.config/nvim/init.lua"; \
ln -sf "$$NVIM_DIR/nvim-pack-lock.json" "$(HOME)/.config/nvim/nvim-pack-lock.json"
| @if [ -f "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ]; then \ | ||
| if [ "$$(uname)" = "Darwin" ]; then \ | ||
| sed -i '' -e '$$ { /^$$/d; }' "$(PWD)/config/nvim/nvim-pack-lock.json"; \ | ||
| sed -i '' -e '$$ { /^$$/d; }' "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json"; \ | ||
| else \ | ||
| sed -i -e '$$ { /^$$/d; }' "$(PWD)/config/nvim/nvim-pack-lock.json"; \ | ||
| sed -i -e '$$ { /^$$/d; }' "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json"; \ | ||
| fi && \ | ||
| printf '\n' >> "$(PWD)/config/nvim/nvim-pack-lock.json"; \ | ||
| printf '\n' >> "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json"; \ | ||
| fi |
There was a problem hiding this comment.
The path to nvim-pack-lock.json is repeated multiple times within this target. To improve readability and maintainability, you can store it in a variable at the beginning of the command block.
@NVIM_PACK_LOCK="$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json"; \
if [ -f "$$NVIM_PACK_LOCK" ]; then \
if [ "$$(uname)" = "Darwin" ]; then \
sed -i '' -e '$$ { /^$$/d; }' "$$NVIM_PACK_LOCK"; \
else \
sed -i -e '$$ { /^$$/d; }' "$$NVIM_PACK_LOCK"; \
fi && \
printf '\n' >> "$$NVIM_PACK_LOCK"; \
fi
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
Makefile (2)
470-481: Neovim path migration looks consistent; consider centralizing the base pathThe updated symlinks and lockfile handling under
home-manager/programs/neoviminneovim-devandneovim-syncare consistent with the new module location and should behave as before.Given the same base path
$(PWD)/home-manager/programs/neovimis now used in multiple targets, you could optionally introduce a singleNVIM_PROG_DIRvariable near the top of the Makefile and reference it here to keep future path changes localized.Also applies to: 488-501
508-534: lua-check-neovim correctly follows the new layout; minor duplication remainsPointing
NVIM_CONFIGand thedofilecall athome-manager/programs/neovim/init.lua, plus wiring the temporary symlinks into~/.config/nvim, all line up with the relocated Neovim module and should keep the check behavior intact.Same as above, you might factor
$(PWD)/home-manager/programs/neoviminto a shared Make variable to avoid repeating the literal path in multiple Neovim targets.home-manager/programs/neovim/default.nix (1)
1-5: Neovim HM module wiring looks good; clarify mkOutOfStoreSymlink intentThis module cleanly moves Neovim setup into
home-manager/programs/neovim, usesprograms.neovimrather than rolling a custom module, and wires the lockfile viahome.activation, which aligns with the home-manager guidelines.One subtle point:
mkOutOfStoreSymlinkis being called withnvimInitLua = ./init.lua;. With a flake-based setup,./init.luais typically realized as a Nix store path, so the resulting symlink will still ultimately point into the store rather than to a mutable file in your working tree. If your intent is to have a truly out-of-store, live-editableinit.lua(similar to the activation-based handling ofnvim-pack-lock.json), you may want to instead pass an absolute path string under$HOME(e.g. derived fromconfig.home.homeDirectory) or manage the symlink in a smallhome.activationscript, and reserve plainsource = ./init.lua;for the immutable/store-backed case.As-is this will work functionally, but it may not deliver the “edit without rebuild” behavior often expected from
mkOutOfStoreSymlink, so it’s worth double-checking the intended semantics.As per coding guidelines and common home-manager best practices.
Also applies to: 15-24
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (4)
Makefile(3 hunks)config/default.nix(0 hunks)config/nvim/default.nix(0 hunks)home-manager/programs/neovim/default.nix(2 hunks)
💤 Files with no reviewable changes (2)
- config/default.nix
- config/nvim/default.nix
🧰 Additional context used
📓 Path-based instructions (6)
**/*.nix
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.nix: Use nixfmt for formatting all Nix files
Document complex configurations with comments in Nix files
**/*.nix: Use 2 spaces for indentation in Nix files
Keep line length under 100 characters in Nix files
Sort attribute sets alphabetically in Nix files
Use consistent spacing around operators in Nix files
Format lists and sets consistently in Nix filesUse treefmt.toml for formatting Nix files
**/*.nix: UsemkOptionfor configurable options in Nix modules
Implement proper typing for all options in Nix modules
Follow the Nix expression language style guide
Files:
home-manager/programs/neovim/default.nix
**/default.nix
📄 CodeRabbit inference engine (CLAUDE.md)
Use
default.nixfiles for module exports
Files:
home-manager/programs/neovim/default.nix
home-manager/programs/*/default.nix
📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Program configurations should be located in
home-manager/programs/<name>/and use home-manager's built-in modules when available
Files:
home-manager/programs/neovim/default.nix
home-manager/programs/**/default.nix
📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Program configurations must include all necessary dependencies in their configuration
Files:
home-manager/programs/neovim/default.nix
home-manager/**/*.nix
📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
home-manager/**/*.nix: Use typed options whenever possible in Nix configurations
Document all configuration options in Nix modules and programs
Follow home-manager's module structure and keep configurations modular
Use proper indentation and formatting in Nix configuration files
Files:
home-manager/programs/neovim/default.nix
home-manager/programs/**/*.nix
📄 CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Follow program-specific best practices in program configuration files
Program configurations in
home-manager/programs/should be organized by program name, include all necessary dependencies, usehome.packagesfor package installations, and useprograms.<name>when available in home-manager
Files:
home-manager/programs/neovim/default.nix
🧠 Learnings (13)
📓 Common learnings
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/programs/*/default.nix : Program configurations should be located in `home-manager/programs/<name>/` and use home-manager's built-in modules when available
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/nix.mdc:0-0
Timestamp: 2025-11-25T09:35:01.066Z
Learning: Applies to home-manager/programs/**/*.nix : Program configurations in `home-manager/programs/` should be organized by program name, include all necessary dependencies, use `home.packages` for package installations, and use `programs.<name>` when available in home-manager
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/programs/**/*.nix : Follow program-specific best practices in program configuration files
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/**/*.nix : Follow home-manager's module structure and keep configurations modular
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2025-11-25T09:34:40.062Z
Learning: Keep configurations modular across home-manager, hosts, and nix-darwin directories
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/**/*.nix : Use proper indentation and formatting in Nix configuration files
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/services/*/default.nix : Service configurations should be located in `home-manager/services/<name>/` with proper service definitions and correct dependency handling
📚 Learning: 2025-11-25T09:35:01.066Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/nix.mdc:0-0
Timestamp: 2025-11-25T09:35:01.066Z
Learning: Applies to home-manager/programs/**/*.nix : Program configurations in `home-manager/programs/` should be organized by program name, include all necessary dependencies, use `home.packages` for package installations, and use `programs.<name>` when available in home-manager
Applied to files:
Makefilehome-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:40.062Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2025-11-25T09:34:40.062Z
Learning: Document all major changes in Nix configurations
Applied to files:
Makefilehome-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:55.014Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/programs/**/*.nix : Follow program-specific best practices in program configuration files
Applied to files:
Makefilehome-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:40.062Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2025-11-25T09:34:40.062Z
Learning: Test Nix and home-manager configurations locally before pushing using `make test`
Applied to files:
Makefile
📚 Learning: 2025-11-25T09:35:01.066Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/nix.mdc:0-0
Timestamp: 2025-11-25T09:35:01.066Z
Learning: Test configurations before committing using `nix flake check` and `home-manager build --show-trace`
Applied to files:
Makefile
📚 Learning: 2025-11-25T09:34:55.014Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/**/*.nix : Follow home-manager's module structure and keep configurations modular
Applied to files:
Makefilehome-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:55.014Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/programs/*/default.nix : Program configurations should be located in `home-manager/programs/<name>/` and use home-manager's built-in modules when available
Applied to files:
home-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:55.014Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/**/*.nix : Document all configuration options in Nix modules and programs
Applied to files:
home-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:55.014Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/programs/**/default.nix : Program configurations must include all necessary dependencies in their configuration
Applied to files:
home-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:35:01.066Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/nix.mdc:0-0
Timestamp: 2025-11-25T09:35:01.066Z
Learning: Applies to home-manager/modules/**/default.nix : Each module in `home-manager/modules/` should have a clear `default.nix` with proper option declarations following the home-manager module structure
Applied to files:
home-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:55.014Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/home-manager.mdc:0-0
Timestamp: 2025-11-25T09:34:55.014Z
Learning: Applies to home-manager/**/*.nix : Use proper indentation and formatting in Nix configuration files
Applied to files:
home-manager/programs/neovim/default.nix
📚 Learning: 2025-11-25T09:34:40.062Z
Learnt from: CR
Repo: shunkakinoki/dotfiles PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2025-11-25T09:34:40.062Z
Learning: Keep configurations modular across home-manager, hosts, and nix-darwin directories
Applied to files:
home-manager/programs/neovim/default.nix
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
- GitHub Check: cubic · AI code reviewer
- GitHub Check: Mesa Review
- GitHub Check: Mesa Description
- GitHub Check: nix-linux
- GitHub Check: nix-nixos
- GitHub Check: nix-darwin
- GitHub Check: lua-hammerspoon
- GitHub Check: docker-build-push (linux/amd64, amd64, ubuntu-latest)
- GitHub Check: lua-neovim
- GitHub Check: e2e-run (NixOS, ubuntu-latest)
- GitHub Check: e2e-run (Ubuntu, ubuntu-latest)
- GitHub Check: e2e-run (MacOS, macos-latest)
- GitHub Check: docker-build-push (linux/arm64, arm64, ubuntu-24.04-arm)
Mesa DescriptionTL;DRMigrated Neovim configuration to What changed?
Description generated by Mesa. Update settings |
There was a problem hiding this comment.
Performed full review of 2dfd14a...57fe015
Analysis
-
Incorrect use of
mkOutOfStoreSymlinkwith let-bound variables - Using./init.luathrough a let binding causes Nix to evaluate it to a store path prematurely, breaking the out-of-store symlink mechanism that enables live editing without rebuilds. -
Verify file movements - While the migration path looks clean, the diff doesn't explicitly show the movement of
init.luaandnvim-pack-lock.jsonfiles to the new location. This should be verified. -
Inconsistent configuration patterns across similar tools - While this migration creates a cleaner unified pattern for Neovim (which is good), it creates a third pattern in the codebase. Consider similar migrations for starship and direnv which currently have split configurations.
-
Missing documentation - The architectural distinction between when to use
config/vshome-manager/programs/should be documented to prevent future inconsistencies.
Tip
Help
Slash Commands:
/review- Request a full code review/review latest- Review only changes since the last review/describe- Generate PR description. This will update the PR body or issue comment depending on your configuration/help- Get help with Mesa commands and configuration options
4 files reviewed | 0 comments | Edit Agent Settings • Read Docs
Summary by cubic
Migrated Neovim config to home-manager/programs/neovim to keep everything in one place and simplify local development. Updated Makefile and Home Manager to symlink init.lua and copy a writable nvim-pack-lock.json.
Refactors
Migration
Written for commit 10c9d74. Summary will update automatically on new commits.