Skip to content

Commit 5a8660d

Browse files
feat: autogenerate plugin flake inputs from a script
1 parent f6ee074 commit 5a8660d

2 files changed

Lines changed: 35 additions & 36 deletions

File tree

flake.nix

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
{
22
description = "Neovim configuration with a side of flakes";
33

4+
inputs = {
5+
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
6+
flake-utils.url = "github:numtide/flake-utils";
7+
};
8+
49
outputs = {
510
self,
611
nixpkgs,
@@ -99,146 +104,118 @@
99104
};
100105
});
101106

102-
inputs = {
103-
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
104-
flake-utils.url = "github:numtide/flake-utils";
105-
106-
# Plugin loader
107-
108-
"lazy.nvim" = {
109-
url = "github:folke/lazy.nvim";
110-
flake = false;
111-
};
107+
# Nvim plugins (autogenerated by generate-nix-inputs.lua)
112108

113-
# Plugins
109+
# PLUGINS START
110+
inputs = {
114111
"blink.cmp" = {
115112
url = "github:Saghen/blink.cmp";
116113
flake = false;
117114
};
118-
119115
"bufferline.nvim" = {
120116
url = "github:akinsho/bufferline.nvim";
121117
flake = false;
122118
};
123-
124119
"catppuccin" = {
125120
url = "github:catppuccin/nvim";
126121
flake = false;
127122
};
128-
129123
"conform.nvim" = {
130124
url = "github:stevearc/conform.nvim";
131125
flake = false;
132126
};
133-
134127
"diffview.nvim" = {
135128
url = "github:sindrets/diffview.nvim";
136129
flake = false;
137130
};
138-
139131
"friendly-snippets" = {
140132
url = "github:rafamadriz/friendly-snippets";
141133
flake = false;
142134
};
143-
144135
"gitsigns.nvim" = {
145136
url = "github:lewis6991/gitsigns.nvim";
146137
flake = false;
147138
};
148-
149139
"guess-indent.nvim" = {
150140
url = "github:NMAC427/guess-indent.nvim";
151141
flake = false;
152142
};
153-
143+
"lazy.nvim" = {
144+
url = "github:folke/lazy.nvim";
145+
flake = false;
146+
};
154147
"lualine.nvim" = {
155148
url = "github:nvim-lualine/lualine.nvim";
156149
flake = false;
157150
};
158-
159151
"markview.nvim" = {
160152
url = "github:OXY2DEV/markview.nvim";
161153
flake = false;
162154
};
163-
164155
"neo-tree.nvim" = {
165156
url = "github:nvim-neo-tree/neo-tree.nvim";
166157
flake = false;
167158
};
168-
169159
"neogit" = {
170160
url = "github:NeogitOrg/neogit";
171161
flake = false;
172162
};
173-
174163
"nui.nvim" = {
175164
url = "github:MunifTanjim/nui.nvim";
176165
flake = false;
177166
};
178-
179167
"nvim-autopairs" = {
180168
url = "github:windwp/nvim-autopairs";
181169
flake = false;
182170
};
183-
184171
"nvim-highlight-colors" = {
185172
url = "github:brenoprata10/nvim-highlight-colors";
186173
flake = false;
187174
};
188-
189175
"nvim-lightbulb" = {
190176
url = "github:kosayoda/nvim-lightbulb";
191177
flake = false;
192178
};
193-
194179
"nvim-lspconfig" = {
195180
url = "github:neovim/nvim-lspconfig";
196181
flake = false;
197182
};
198-
199183
"nvim-treesitter" = {
200184
url = "github:nvim-treesitter/nvim-treesitter";
201185
flake = false;
202186
};
203-
204187
"nvim-treesitter-textobjects" = {
205188
url = "github:nvim-treesitter/nvim-treesitter-textobjects";
206189
flake = false;
207190
};
208-
209191
"nvim-web-devicons" = {
210192
url = "github:nvim-tree/nvim-web-devicons";
211193
flake = false;
212194
};
213-
214195
"persistence.nvim" = {
215196
url = "github:folke/persistence.nvim";
216197
flake = false;
217198
};
218-
219199
"plenary.nvim" = {
220200
url = "github:nvim-lua/plenary.nvim";
221201
flake = false;
222202
};
223-
224203
"satellite.nvim" = {
225204
url = "github:lewis6991/satellite.nvim";
226205
flake = false;
227206
};
228-
229207
"scope.nvim" = {
230208
url = "github:tiagovla/scope.nvim";
231209
flake = false;
232210
};
233-
234211
"snacks.nvim" = {
235212
url = "github:folke/snacks.nvim";
236213
flake = false;
237214
};
238-
239215
"which-key.nvim" = {
240216
url = "github:folke/which-key.nvim";
241217
flake = false;
242218
};
243219
};
220+
# PLUGINS END
244221
}

generate-nix-inputs.lua

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
-- Quick and dirty script to add plugins as flake inputs from a running vim session
2+
-- Use the vim command `:luafile generate-nix-inputs.lua` to update the inputs
3+
4+
local plugins = vim.tbl_map(function(p)
5+
return getmetatable(p).__index[1]
6+
end, require("lazy.core.config").plugins)
7+
8+
plugins = vim.tbl_values(vim.tbl_map(function(p)
9+
return ('"%s"={url="github:%s";flake=false;};'):format(p, plugins[p])
10+
end, vim.tbl_keys(plugins)))
11+
12+
table.sort(plugins)
13+
14+
plugins = "inputs={" .. table.concat(plugins) .. "};"
15+
16+
vim.fn.system(
17+
("sed -i '/^\\s*# PLUGINS START/,/^\\s*# PLUGINS END/{/^\\s*# PLUGINS START/{p; a\\\n%s\n}; /^\\s*# PLUGINS END/p; d}' flake.nix"):format(
18+
plugins
19+
)
20+
)
21+
22+
vim.fn.system "alejandra flake.nix"

0 commit comments

Comments
 (0)