Skip to content

Commit efeab03

Browse files
committed
make nvim usable standalone
1 parent b744f90 commit efeab03

File tree

9 files changed

+148
-38
lines changed

9 files changed

+148
-38
lines changed

flake.lock

Lines changed: 8 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 119 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
inputs.nixpkgs.follows = "nixpkgs";
1717
};
1818
impermanence.url = "github:nix-community/impermanence";
19+
# neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
20+
1921
niri-unstable = {
2022
url = "github:YaLTeR/niri/2761922210a6c92dc22bbc5c8dce8c3771b02a54";
2123
flake = false;
@@ -24,23 +26,19 @@
2426
url = "github:sodiboo/niri-flake";
2527
inputs.niri-unstable.follows = "niri-unstable";
2628
};
27-
# neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
29+
2830
# private flakes
29-
gridx = {
30-
url = "git+ssh://[email protected]/debugloop/gridx";
31-
# url = "path:/home/danieln/code/gridx";
32-
inputs.nixpkgs.follows = "nixpkgs";
33-
};
34-
wunschkonzert-install = {
35-
url = "git+ssh://[email protected]/debugloop/wunschkonzert-install";
36-
# url = "path:/home/danieln/code/wunschkonzert-install";
37-
};
31+
gridx.url = "git+ssh://[email protected]/debugloop/gridx";
32+
# gridx.url = "path:/home/danieln/code/gridx";
33+
wunschkonzert-install.url = "git+ssh://[email protected]/debugloop/wunschkonzert-install";
34+
# wunschkonzert-install.url = "path:/home/danieln/code/wunschkonzert-install";
3835
};
3936

4037
outputs = inputs @ {nixpkgs, ...}: {
4138
formatter = {
4239
x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
4340
};
41+
4442
nixosConfigurations = {
4543
simmons = nixpkgs.lib.nixosSystem {
4644
system = "x86_64-linux";
@@ -88,5 +86,116 @@
8886
];
8987
};
9088
};
89+
90+
packages.x86_64-linux.nvim = let
91+
pkgs = nixpkgs.legacyPackages.x86_64-linux;
92+
treesitterParsers = pkgs.symlinkJoin {
93+
name = "treesitter-parsers";
94+
paths = pkgs.vimPlugins.nvim-treesitter.withAllGrammars.dependencies;
95+
};
96+
in
97+
pkgs.symlinkJoin {
98+
name = "nvim";
99+
buildInputs = [pkgs.makeWrapper];
100+
paths = [
101+
home/nvim
102+
];
103+
postBuild = ''
104+
mkdir -p $out/bin $out/config/nvim $out/local/nvim/{nixpkgs,lazy}
105+
106+
cat >$out/config/nvim/init.lua <<EOL
107+
local root = vim.fn.fnamemodify("/tmp/debugloop-nvim", ":p")
108+
for _, name in ipairs({ "data", "state", "cache" }) do
109+
vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
110+
end
111+
112+
require("aucmd")
113+
require("options")
114+
require("maps")
115+
require("lsp")
116+
117+
NIXPLUG_PATH = "$out" .. "/local/nvim/nixpkgs"
118+
119+
local lazypath = NIXPLUG_PATH .. "/lazy-nvim"
120+
vim.opt.rtp:prepend(lazypath)
121+
122+
require("lazy").setup({
123+
spec = {
124+
{ import = "plugins" },
125+
},
126+
defaults = {
127+
lazy = true,
128+
},
129+
change_detection = {
130+
enabled = false,
131+
},
132+
performance = {
133+
rtp = {
134+
disabled_plugins = {
135+
"gzip",
136+
"matchit",
137+
"matchparen",
138+
"netrwPlugin",
139+
"tarPlugin",
140+
"tohtml",
141+
"tutor",
142+
"zipPlugin",
143+
},
144+
},
145+
},
146+
})
147+
vim.keymap.set("n", "<leader>l", "<cmd>Lazy<cr>", { desc = "Manage plugins" })
148+
EOL
149+
150+
# all other config
151+
cp -r $out/{lua,ftplugin,after} ${treesitterParsers}/parser $out/config/nvim/
152+
153+
cp -r ${pkgs.vimPlugins.blink-cmp} $out/local/nvim/nixpkgs/blink-cmp
154+
cp -r ${pkgs.vimPlugins.conform-nvim} $out/local/nvim/nixpkgs/conform-nvim
155+
cp -r ${pkgs.vimPlugins.diffview-nvim} $out/local/nvim/nixpkgs/diffview-nvim
156+
cp -r ${pkgs.vimPlugins.friendly-snippets} $out/local/nvim/nixpkgs/friendly-snippets
157+
cp -r ${pkgs.vimPlugins.kanagawa-nvim} $out/local/nvim/nixpkgs/kanagawa-nvim
158+
cp -r ${pkgs.vimPlugins.kulala-nvim} $out/local/nvim/nixpkgs/kulala-nvim
159+
cp -r ${pkgs.vimPlugins.lazy-nvim} $out/local/nvim/nixpkgs/lazy-nvim
160+
cp -r ${pkgs.vimPlugins.lazydev-nvim} $out/local/nvim/nixpkgs/lazydev-nvim
161+
cp -r ${pkgs.vimPlugins.noice-nvim} $out/local/nvim/nixpkgs/noice-nvim
162+
cp -r ${pkgs.vimPlugins.nui-nvim} $out/local/nvim/nixpkgs/nui-nvim
163+
cp -r ${pkgs.vimPlugins.nvim-bqf} $out/local/nvim/nixpkgs/nvim-bqf
164+
cp -r ${pkgs.vimPlugins.nvim-dap} $out/local/nvim/nixpkgs/nvim-dap
165+
cp -r ${pkgs.vimPlugins.nvim-impairative} $out/local/nvim/nixpkgs/nvim-impairative
166+
cp -r ${pkgs.vimPlugins.nvim-lint} $out/local/nvim/nixpkgs/nvim-lint
167+
cp -r ${pkgs.vimPlugins.nvim-tree-lua} $out/local/nvim/nixpkgs/nvim-tree-lua
168+
cp -r ${pkgs.vimPlugins.nvim-treesitter} $out/local/nvim/nixpkgs/nvim-treesitter
169+
cp -r ${pkgs.vimPlugins.nvim-treesitter-context} $out/local/nvim/nixpkgs/nvim-treesitter-context
170+
cp -r ${pkgs.vimPlugins.nvim-treesitter-textobjects} $out/local/nvim/nixpkgs/nvim-treesitter-textobjects
171+
cp -r ${pkgs.vimPlugins.quicker-nvim} $out/local/nvim/nixpkgs/quicker-nvim
172+
cp -r ${pkgs.vimPlugins.render-markdown-nvim} $out/local/nvim/nixpkgs/render-markdown-nvim
173+
cp -r ${pkgs.vimPlugins.snacks-nvim} $out/local/nvim/nixpkgs/snacks-nvim
174+
175+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-ai
176+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-bracketed
177+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-bufremove
178+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-clue
179+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-diff
180+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-extra
181+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-files
182+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-git
183+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-hipatterns
184+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-icons
185+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-indentscope
186+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-jump
187+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-operators
188+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-pairs
189+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-pick
190+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-splitjoin
191+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-statusline
192+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-surround
193+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-tabline
194+
cp -r ${pkgs.vimPlugins.mini-nvim} $out/local/nvim/nixpkgs/mini-visits
195+
196+
cp ${pkgs.neovim}/bin/nvim $out/bin/nvim
197+
wrapProgram $out/bin/nvim --set XDG_CONFIG_HOME $out/config
198+
'';
199+
};
91200
};
92201
}
File renamed without changes.

home/nvim/gotmpl-injections.scm renamed to home/nvim/after/queries/gotmpl/gotmpl-injections.scm

File renamed without changes.

home/nvim/default.nix

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
22
pkgs,
33
lib,
4-
inputs,
5-
config,
64
...
75
}: {
86
programs.neovim = {
@@ -22,13 +20,12 @@
2220
};
2321
in {
2422
"nvim/init.lua".source = ./init.lua;
25-
# "nvim/lua".source = ./lua;
26-
"nvim/lua".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/lua";
27-
# "nvim/ftplugin".source = ./ftplugin;
28-
"nvim/ftplugin".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/ftplugin";
23+
"nvim/lua".source = ./lua;
24+
# "nvim/lua".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/lua";
25+
"nvim/ftplugin".source = ./ftplugin;
26+
# "nvim/ftplugin".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/ftplugin";
2927
"nvim/parser".source = "${treesitterParsers}/parser";
30-
"nvim/after/queries/go/textobjects.scm".source = ./go-textobjects.scm;
31-
"nvim/after/queries/gotmpl/injections.scm".source = ./gotmpl-injections.scm;
28+
"nvim/after".source = ./after;
3229
};
3330

3431
xdg.dataFile = let
@@ -66,7 +63,6 @@
6663
}
6764
)
6865
);
69-
miniPlugin = builtins.getAttr "mini-nvim" pkgs.vimPlugins;
7066
miniPlugins = builtins.listToAttrs (
7167
lib.lists.forEach [
7268
"mini-ai"
@@ -94,7 +90,7 @@
9490
name: {
9591
name = "nvim/nixpkgs/${name}";
9692
value = {
97-
source = miniPlugin;
93+
source = builtins.getAttr "mini-nvim" pkgs.vimPlugins;
9894
};
9995
}
10096
)

home/nvim/init.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ require("options")
33
require("maps")
44
require("lsp")
55

6-
local lazypath = vim.fn.stdpath("data") .. "/nixpkgs/lazy-nvim"
6+
NIXPLUG_PATH = vim.fn.stdpath("data") .. "/nixpkgs"
7+
8+
local lazypath = NIXPLUG_PATH .. "/lazy-nvim"
79
vim.opt.rtp:prepend(lazypath)
810

911
require("lazy").setup({
@@ -34,4 +36,3 @@ require("lazy").setup({
3436
},
3537
},
3638
})
37-
vim.keymap.set("n", "<leader>l", "<cmd>Lazy<cr>", { desc = "Manage plugins" })

home/nvim/lua/maps.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,5 @@ vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "lsp: show definition
185185
vim.keymap.set("n", "gD", vim.lsp.buf.type_definition, { desc = "lsp: show type definition" })
186186
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { desc = "lsp: show implementations" })
187187
vim.keymap.set("n", "<leader>sd", vim.diagnostic.setqflist, { desc = "lsp: list diagnostics" })
188+
189+
vim.keymap.set("n", "<leader>l", "<cmd>Lazy<cr>", { desc = "Manage plugins" })

home/nvim/lua/plugins.lua

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ local function inject(spec)
1010

1111
if spec["dir"] == nil and spec["dev"] ~= true then
1212
local plugin_name = spec[1]:match("[^/]+$")
13-
local nixpkgs_dir = vim.fn.stdpath("data") .. "/nixpkgs/" .. plugin_name:gsub("%.", "-")
13+
local nixpkgs_dir = NIXPLUG_PATH .. "/" .. plugin_name:gsub("%.", "-")
1414
if vim.fn.isdirectory(nixpkgs_dir) == 1 then
1515
spec["dir"] = nixpkgs_dir
1616
end
@@ -576,7 +576,8 @@ return inject_all({
576576
},
577577

578578
{
579-
"echasnovski/mini.git",
579+
"echasnovski/mini-git",
580+
name = "mini.git",
580581
keys = {
581582
{
582583
"<leader>gi",
@@ -823,7 +824,8 @@ return inject_all({
823824
"echasnovski/mini.icons",
824825
},
825826
{
826-
"echasnovski/mini.git",
827+
"echasnovski/mini-git",
828+
name = "mini.git",
827829
},
828830
{
829831
"echasnovski/mini.diff",
@@ -1832,7 +1834,10 @@ return inject_all({
18321834
-- git stuff from snacks
18331835
lazy = false,
18341836
dependencies = {
1835-
{ "echasnovski/mini.git" },
1837+
{
1838+
"echasnovski/mini-git",
1839+
name = "mini.git",
1840+
},
18361841
},
18371842
keys = {
18381843
{

hosts/common/laptops.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
networkmanager = {
2020
enable = true;
2121
plugins = lib.mkForce [];
22-
# logLevel = "DEBUG";
22+
logLevel = "INFO";
2323
wifi = {
2424
scanRandMacAddress = false;
2525
# backend = "iwd";

0 commit comments

Comments
 (0)