9 nvim-impure = "/home/julm/work/sourcephile/nix/julm-nix/home-manager/profiles/nvim/";
10 optionalPlugin = plugin: {
16 # DevelopmentNote: home-manager provides a (convoluted) wrapper
17 # around pkgs.wrapNeovimUnstable,
18 # and writes a minimal ~/.config/nvim/init.lua
19 # which is here configured to source ./nvim from:
20 # - either ${nvim-impure} which is where I store ./nvim before it gets into the Nix store.
21 # - or ./nvim copied into the Nix store when rebuilding the system with home-manager.
23 # So, for quick feedback:
24 # - if only ./nvim has changed: relaunch nvim
25 # - or if only new plugin packages are required, rebuild nvim:
26 # nix -L build .#nixosConfigurations.nan2gua1.config.home-manager.users.julm.programs.neovim.finalPackage &&
28 # - or if external packages need to be install: reinstall normally
30 enable = lib.mkDefault true;
32 -- Lua config for normal usage
33 vim.opt.runtimepath:prepend('${./nvim}')
35 -- Lua config for quick feedback when changing ./nvim
36 vim.opt.runtimepath:prepend("${nvim-impure}")
38 -- Load ./nvim/lua/config
41 -- Lazy load ./nvim/lua/plugins
42 require("lz.n").load("plugins")
44 -- Overrides `require()` to also search for optional plugins and load them with lz.n
45 require("lzn-auto-require").enable()
49 pkgs.vimPlugins.lzn-auto-require
51 ++ lib.map optionalPlugin [
52 pkgs.vimPlugins.blink-cmp
53 pkgs.vimPlugins.comment-nvim
54 pkgs.vimPlugins.conform-nvim
55 pkgs.vimPlugins.fastaction-nvim
56 #pkgs.vimPlugins.fine-cmdline-nvim
57 pkgs.vimPlugins.git-conflict-nvim
58 pkgs.vimPlugins.github-nvim-theme
59 pkgs.vimPlugins.gitlinker-nvim
60 pkgs.vimPlugins.gitsigns-nvim
61 pkgs.vimPlugins.haskell-tools-nvim
62 pkgs.vimPlugins.hunk-nvim
63 pkgs.vimPlugins.image-nvim
64 (pkgs.vimUtils.buildVimPlugin {
69 pkgs.vimPlugins.lualine-nvim
71 (pkgs.vimUtils.buildVimPlugin {
74 src = inputs.modes-nvim;
77 pkgs.vimPlugins.neo-tree-nvim
78 #pkgs.vimPlugins.neovim-ayu
79 pkgs.vimPlugins.nvim-colorizer-lua
80 pkgs.vimPlugins.nvim-fzf # For telescope
81 pkgs.vimPlugins.nvim-lint
82 pkgs.vimPlugins.nvim-navbuddy
83 pkgs.vimPlugins.nvim-navic # For navbuddy
84 pkgs.vimPlugins.nvim-treesitter
85 pkgs.vimPlugins.nvim-web-devicons
87 (pkgs.vimUtils.buildVimPlugin {
88 pname = "solarized-osaka.nvim";
90 src = inputs.solarized-osaka-nvim;
94 pkgs.vimPlugins.telescope-fzf-native-nvim
95 pkgs.vimPlugins.telescope-git-conflicts-nvim
96 pkgs.vimPlugins.telescope-live-grep-args-nvim
97 pkgs.vimPlugins.telescope-nvim
98 pkgs.vimPlugins.telescope-smart-history-nvim
99 pkgs.vimPlugins.trouble-nvim
100 pkgs.vimPlugins.vim-illuminate
101 pkgs.vimPlugins.which-key-nvim
112 extraLuaPackages = ps: [ ps.magick ];
113 extraPackages = [ pkgs.imagemagick ];
118 package = pkgs.neovim-unwrapped;
123 "--noblacklist=/tmp/tmux-*"
125 # For git status, eg. ~/.config/git/ignore
126 "--noblacklist=\\\${HOME}/.config/git"
128 # Reallow cc for LSPs, including Haskell's LSP
129 "--ignore=include disable-devel.inc"
131 "--profile=${pkgs.firejail}/etc/firejail/nvim.profile"
135 inherit (pkgs.neovim-unwrapped) lua;
138 home.packages = lib.mkIf config.programs.neovim.enable (
143 pkgs.nixfmt-rfc-style
156 pkgs.bash-language-server
157 pkgs.lua-language-server
169 ++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [