diff --git a/flake.lock b/flake.lock index d2b22c3..ddf7975 100644 --- a/flake.lock +++ b/flake.lock @@ -1293,11 +1293,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1771702014, - "narHash": "sha256-/P7uAp8q1xFhaw9Z+OG7lUK3wVz1Q/wreAyeiMyyjLI=", + "lastModified": 1771439456, + "narHash": "sha256-HtQgNJrjYvZdpqpPJddF+TxGCazNyxvA8umbDcjrxT8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cceb9213362e92c06b60b50c1e2877bc5fb95887", + "rev": "f84d6f6cd5f17d594439710f40349ba7d0706f4b", "type": "github" }, "original": { diff --git a/homes/modules/programs/neovim/init.lua b/homes/modules/programs/neovim/init.lua index 7ec6af4..b46afbe 100644 --- a/homes/modules/programs/neovim/init.lua +++ b/homes/modules/programs/neovim/init.lua @@ -14,46 +14,34 @@ local colors = {} -- function to load colors local function load_colors() - local new_colors = {} - for line in io.lines(colorscheme_filepath) do - table.insert(new_colors, line) - end + local new_colors = {} + for line in io.lines(colorscheme_filepath) do + table.insert(new_colors, line) + end - -- ensure the table has enough entries to avoid indexing issues - if #new_colors >= 18 then - colors = new_colors - require("base16-colorscheme").setup({ - base00 = colors[17], - base01 = colors[1], - base02 = colors[3], - base03 = colors[3], - base04 = colors[5], - base05 = colors[8], - base06 = colors[5], - base07 = colors[8], - base08 = colors[18], - base09 = colors[4], - base0A = colors[11], - base0B = colors[5], - base0C = colors[6], - base0D = colors[7], - base0E = colors[6], - base0F = colors[16], - }) + -- ensure the table has enough entries to avoid indexing issues + if #new_colors >= 18 then + colors = new_colors + require('base16-colorscheme').setup({ + base00 = colors[17], base01 = colors[1], base02 = colors[3], base03 = colors[3], + base04 = colors[5], base05 = colors[8], base06 = colors[5], base07 = colors[8], + base08 = colors[18], base09 = colors[4], base0A = colors[11], base0B = colors[5], + base0C = colors[6], base0D = colors[7], base0E = colors[6], base0F = colors[16], + }) - -- set colors for blink.cmp's completion menu - vim.api.nvim_set_hl(0, "BlinkCmpMenu", { bg = colors[17] }) - vim.api.nvim_set_hl(0, "BlinkCmpMenuBorder", { bg = colors[17], fg = colors[13] }) - vim.api.nvim_set_hl(0, "BlinkCmpMenuSelection", { bg = colors[15], fg = colors[17] }) - vim.api.nvim_set_hl(0, "BlinkCmpScrollBarThumb", { bg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpKind", { bg = colors[17], fg = colors[14] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabel", { bg = colors[17], fg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabelMatch", { bg = colors[17], fg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabelDetail", { bg = colors[17], fg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabelDescription", { bg = colors[17], fg = colors[18] }) - else - print("Error: Not enough colors in file") - end + -- set colors for blink.cmp's completion menu + vim.api.nvim_set_hl(0, 'BlinkCmpMenu', { bg = colors[17] }) + vim.api.nvim_set_hl(0, 'BlinkCmpMenuBorder', { bg = colors[17], fg = colors[13] }) + vim.api.nvim_set_hl(0, 'BlinkCmpMenuSelection', { bg = colors[15], fg = colors[17] }) + vim.api.nvim_set_hl(0, 'BlinkCmpScrollBarThumb', { bg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpKind', { bg = colors[17], fg = colors[14] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabel', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelMatch', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelDetail', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelDescription', { bg = colors[17], fg = colors[18] }) + else + print("Error: Not enough colors in file") + end end -- initial load @@ -63,18 +51,19 @@ load_colors() -- set up a file watcher local function watch_colorscheme() - local handle - handle = uv.new_fs_event() - if handle then - uv.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _) - if err then - print("Error watching colorscheme file:", err) - return - end - -- debounce by adding a slight delay before reloading - vim.defer_fn(load_colors, 100) - end) - end + local handle + handle = uv.new_fs_event() + if handle then + uv.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _) + if err then + print("Error watching colorscheme file:", err) + return + end + -- debounce by adding a slight delay before reloading + vim.defer_fn(load_colors, 100) + end) + end end watch_colorscheme() + diff --git a/homes/modules/programs/neovim/lua/lsp/capabilities.lua b/homes/modules/programs/neovim/lua/lsp/capabilities.lua index 7e9957b..9256965 100644 --- a/homes/modules/programs/neovim/lua/lsp/capabilities.lua +++ b/homes/modules/programs/neovim/lua/lsp/capabilities.lua @@ -1,66 +1,59 @@ local M = {} function M.on_attach(_, bufnr) - -- we create a function that lets us more easily define mappings specific - -- for LSP related items. It sets the mode, buffer and description for us each time. + -- we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. - local nmap = function(keys, func, desc) - if desc then - desc = "LSP: " .. desc - end + local nmap = function(keys, func, desc) + if desc then + desc = 'LSP: ' .. desc + end - vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc }) - end + vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) + end - nmap("rn", vim.lsp.buf.rename, "[R]e[n]ame") - nmap("ca", vim.lsp.buf.code_action, "[C]ode [A]ction") + nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') + nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') - nmap("gd", vim.lsp.buf.definition, "[G]oto [D]efinition") + nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') - -- NOTE: why are these functions that call the telescope builtin? - -- because otherwise they would load telescope eagerly when this is defined. - -- due to us using the on_require handler to make sure it is available. - if nixCats("general.telescope") then - nmap("gr", function() - require("telescope.builtin").lsp_references() - end, "[G]oto [R]eferences") - nmap("gI", function() - require("telescope.builtin").lsp_implementations() - end, "[G]oto [I]mplementation") - nmap("ds", function() - require("telescope.builtin").lsp_document_symbols() - end, "[D]ocument [S]ymbols") - nmap("ws", function() - require("telescope.builtin").lsp_dynamic_workspace_symbols() - end, "[W]orkspace [S]ymbols") - nmap("dd", "Telescope diagnostics bufnr=0", "[D]ocument [D]iagnostics") - nmap("wd", "Telescope diagnostics", "[W]orkspace [D]iagnostics") - end -- TODO: someone who knows the builtin versions of these to do instead help me out please. + -- NOTE: why are these functions that call the telescope builtin? + -- because otherwise they would load telescope eagerly when this is defined. + -- due to us using the on_require handler to make sure it is available. + if nixCats('general.telescope') then + nmap('gr', function() require('telescope.builtin').lsp_references() end, '[G]oto [R]eferences') + nmap('gI', function() require('telescope.builtin').lsp_implementations() end, '[G]oto [I]mplementation') + nmap('ds', function() require('telescope.builtin').lsp_document_symbols() end, '[D]ocument [S]ymbols') + nmap('ws', function() require('telescope.builtin').lsp_dynamic_workspace_symbols() end, '[W]orkspace [S]ymbols') + nmap('dd', "Telescope diagnostics bufnr=0", '[D]ocument [D]iagnostics') + nmap('wd', "Telescope diagnostics", '[W]orkspace [D]iagnostics') + end -- TODO: someone who knows the builtin versions of these to do instead help me out please. - nmap("D", vim.lsp.buf.type_definition, "Type [D]efinition") - nmap("e", vim.diagnostic.open_float, "Show [E]rror") + nmap('D', vim.lsp.buf.type_definition, 'Type [D]efinition') + nmap('e', vim.diagnostic.open_float, 'Show [E]rror') - -- See `:help K` for why this keymap - nmap("K", vim.lsp.buf.hover, "Hover Documentation") - nmap("", vim.lsp.buf.signature_help, "Signature Documentation") + -- See `:help K` for why this keymap + nmap('K', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') - -- Lesser used LSP functionality - nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") - nmap("wa", vim.lsp.buf.add_workspace_folder, "[W]orkspace [A]dd Folder") - nmap("wr", vim.lsp.buf.remove_workspace_folder, "[W]orkspace [R]emove Folder") - nmap("wl", function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, "[W]orkspace [L]ist Folders") + -- Lesser used LSP functionality + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') + nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') + nmap('wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, '[W]orkspace [L]ist Folders') + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) - -- Create a command `:Format` local to the LSP buffer - vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_) - vim.lsp.buf.format() - end, { desc = "Format current buffer with LSP" }) end function M.get(server_name) - local capabilities = require("blink.cmp").get_lsp_capabilities() + local capabilities = require('blink.cmp').get_lsp_capabilities() - return capabilities + return capabilities end return M diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua b/homes/modules/programs/neovim/lua/lsp/completion.lua index 2e485d9..cdbc9db 100644 --- a/homes/modules/programs/neovim/lua/lsp/completion.lua +++ b/homes/modules/programs/neovim/lua/lsp/completion.lua @@ -1,88 +1,88 @@ return { - { - "friendly-snippets", - dep_of = { "blink.cmp" }, + { + "friendly-snippets", + dep_of = { "blink.cmp" }, + }, + { + "blink.cmp", + event = { "InsertEnter", "CmdlineEnter" }, + on_require = "blink", + load = function (name) + vim.cmd.packadd(name) + end, + after = function(plugin) + local blink = require('blink.cmp') + + blink.setup({ + keymap = { + preset = 'default', + }, + + appearance = { + nerd_font_variant = 'mono', }, - { - "blink.cmp", - event = { "InsertEnter", "CmdlineEnter" }, - on_require = "blink", - load = function(name) - vim.cmd.packadd(name) - end, - after = function(plugin) - local blink = require("blink.cmp") - blink.setup({ - keymap = { - preset = "default", - }, - - appearance = { - nerd_font_variant = "mono", - }, - - sources = { - default = { "lsp", "path", "snippets", "buffer" }, - providers = { - lsp = { - name = "LSP", - module = "blink.cmp.sources.lsp", - enabled = true, - }, - path = { - name = "Path", - module = "blink.cmp.sources.path", - enabled = true, - }, - snippets = { - name = "Snippets", - module = "blink.cmp.sources.snippets", - enabled = true, - }, - buffer = { - name = "Buffer", - module = "blink.cmp.sources.buffer", - enabled = true, - }, - }, - }, - - completion = { - accept = { - auto_brackets = { - enabled = true, - }, - }, - - menu = { - border = "rounded", - max_height = 12, - scrolloff = 2, - - draw = { - columns = { - { "kind_icon", gap = 1 }, - { "label", "label_description", gap = 1 }, - }, - }, - }, - - documentation = { - auto_show = false, - window = { - border = "rounded", - }, - }, - }, - - signature = { - enabled = true, - window = { - border = "rounded", - }, - }, - }) - end, + sources = { + default = { 'lsp', 'path', 'snippets', 'buffer' }, + providers = { + lsp = { + name = 'LSP', + module = 'blink.cmp.sources.lsp', + enabled = true, + }, + path = { + name = 'Path', + module = 'blink.cmp.sources.path', + enabled = true, + }, + snippets = { + name = 'Snippets', + module = 'blink.cmp.sources.snippets', + enabled = true, + }, + buffer = { + name = 'Buffer', + module = 'blink.cmp.sources.buffer', + enabled = true, + }, + }, }, + + completion = { + accept = { + auto_brackets = { + enabled = true, + }, + }, + + menu = { + border = 'rounded', + max_height = 12, + scrolloff = 2, + + draw = { + columns = { + { "kind_icon", gap = 1, }, + { "label", "label_description", gap = 1, }, + }, + }, + }, + + documentation = { + auto_show = false, + window = { + border = 'rounded', + }, + }, + }, + + signature = { + enabled = true, + window = { + border = 'rounded', + }, + }, + }) + end + }, } diff --git a/homes/modules/programs/neovim/lua/lsp/indentation.lua b/homes/modules/programs/neovim/lua/lsp/indentation.lua index b7b65ac..df7c2a8 100644 --- a/homes/modules/programs/neovim/lua/lsp/indentation.lua +++ b/homes/modules/programs/neovim/lua/lsp/indentation.lua @@ -1,17 +1,17 @@ vim.api.nvim_create_autocmd("FileType", { - pattern = "lua", - callback = function() - vim.opt_local.shiftwidth = 2 - vim.opt_local.tabstop = 2 - vim.opt_local.expandtab = true - end, + pattern = "lua", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, }) vim.api.nvim_create_autocmd("FileType", { - pattern = "nix", - callback = function() - vim.opt_local.shiftwidth = 2 - vim.opt_local.tabstop = 2 - vim.opt_local.expandtab = true - end, + pattern = "nix", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, }) diff --git a/homes/modules/programs/neovim/lua/lsp/init.lua b/homes/modules/programs/neovim/lua/lsp/init.lua index e2d09ed..647d24f 100644 --- a/homes/modules/programs/neovim/lua/lsp/init.lua +++ b/homes/modules/programs/neovim/lua/lsp/init.lua @@ -1,6 +1,6 @@ -require("lze").load({ - { import = "lsp.completion" }, -}) +require("lze").load { + { import = "lsp.completion", }, +} require("lsp.indentation") require("lsp.lsp") diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua index fd8bd1b..18e3c80 100644 --- a/homes/modules/programs/neovim/lua/lsp/lsp.lua +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -1,87 +1,87 @@ local servers = {} servers.lua_ls = { - settings = { - Lua = { - formatters = { - ignoreComments = false, - }, - signatureHelp = { enable = true }, - diagnostics = { - globals = { "nixCats", "vim" }, - -- disable = { 'missing-fields' }, - }, - workspace = { - -- make the server aware of the neovim runtime files - library = vim.api.nvim_get_runtime_file("", true), - checkThirdParty = false, - }, - }, - telemetry = { enabled = false }, - }, + settings = { + Lua = { + formatters = { + ignoreComments = false, + }, + signatureHelp = { enable = true }, + diagnostics = { + globals = { 'nixCats', 'vim' }, + -- disable = { 'missing-fields' }, + }, + workspace = { + -- make the server aware of the neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false, + }, + }, + telemetry = { enabled = false }, + }, } servers.nil_ls = { - settings = {}, + settings = {}, } local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD") servers.rust_analyzer = { - cmd = { rust_analyzer_cmd }, - settings = { - server = { - -- For debugging rust-analyzer, to see log location do :LspInfo in neovim - -- extraEnv = { {["RA_LOG"]="project_model=debug"} }, - }, - cargo = { - allFeatures = false, - allTargets = false, - buildScripts = { enable = true }, - target = "x86_64-unknown-linux-gnu", - }, - diagnostics = { - enable = true, - }, - }, + cmd = { rust_analyzer_cmd }, + settings = { + server = { + -- For debugging rust-analyzer, to see log location do :LspInfo in neovim + -- extraEnv = { {["RA_LOG"]="project_model=debug"} }, + }, + cargo = { + allFeatures = false, + allTargets = false, + buildScripts = { enable = true }, + target = "x86_64-unknown-linux-gnu", + }, + diagnostics = { + enable = true, + }, + }, } servers.zls = { - settings = {}, + settings = {}, } local elixir_ls_cmd = os.getenv("ELIXIR_LS_CMD") servers.elixirls = { - cmd = { elixir_ls_cmd }, - settings = {}, + cmd = { elixir_ls_cmd }, + settings = {}, } servers.gleam = { - settings = {}, + settings = {}, } servers.hls = { - settings = {}, + settings = {}, } local java_home = os.getenv("JAVA_HOME") servers.jdtls = { - settings = { - java = { - contentProvider = { preferred = "fernflower" }, - configuration = { - runtimes = { - { - name = "OpenJDK 17", - path = os.getenv("OPENJDK_17"), - }, - { - name = "OpenJDK 21", - path = os.getenv("OPENJDK_21"), - }, - }, - }, - }, - }, + settings = { + java = { + contentProvider = { preferred = 'fernflower' }, + configuration = { + runtimes = { + { + name = "OpenJDK 17", + path = os.getenv("OPENJDK_17"), + }, + { + name = "OpenJDK 21", + path = os.getenv("OPENJDK_21"), + }, + } + } + }, + } } -- Taken from nixCats example: @@ -90,41 +90,41 @@ servers.jdtls = { -- nvim-lspconfig, it would do the same thing. -- come to think of it, it might be better because then lspconfig doesnt have to be called before lsp attach? -- but you would still end up triggering on a FileType event anyway, so, it makes little difference. -vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("nixCats-lsp-attach", { clear = true }), - callback = function(event) - require("lsp.capabilities").on_attach(vim.lsp.get_client_by_id(event.data.client_id), event.buf) - end, +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('nixCats-lsp-attach', { clear = true }), + callback = function(event) + require('lsp.capabilities').on_attach(vim.lsp.get_client_by_id(event.data.client_id), event.buf) + end }) -require("lze").load({ - { - "nvim-lspconfig", - event = "FileType", - after = function(plugin) - -- Just register configs, don't enable yet - for server_name, cfg in pairs(servers) do - vim.lsp.config(server_name, { - capabilities = require("lsp.capabilities").get(server_name), - settings = (cfg or {}).settings, - filetypes = (cfg or {}).filetypes, - cmd = (cfg or {}).cmd, - root_pattern = (cfg or {}).root_pattern, - }) - end +require("lze").load { + { + "nvim-lspconfig", + event = "FileType", + after = function(plugin) + -- Just register configs, don't enable yet + for server_name, cfg in pairs(servers) do + vim.lsp.config(server_name, { + capabilities = require('lsp.capabilities').get(server_name), + settings = (cfg or {}).settings, + filetypes = (cfg or {}).filetypes, + cmd = (cfg or {}).cmd, + root_pattern = (cfg or {}).root_pattern, + }) + end - -- Enable on-demand per filetype - for server_name, cfg in pairs(servers) do - local filetypes = cfg.filetypes or vim.lsp.config[server_name].filetypes - if filetypes then - vim.api.nvim_create_autocmd("FileType", { - pattern = filetypes, - callback = function() - vim.lsp.enable(server_name) - end, - }) - end - end - end, - }, -}) + -- Enable on-demand per filetype + for server_name, cfg in pairs(servers) do + local filetypes = cfg.filetypes or vim.lsp.config[server_name].filetypes + if filetypes then + vim.api.nvim_create_autocmd('FileType', { + pattern = filetypes, + callback = function() + vim.lsp.enable(server_name) + end, + }) + end + end + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/comment.lua b/homes/modules/programs/neovim/lua/plugins/comment.lua deleted file mode 100644 index cf45027..0000000 --- a/homes/modules/programs/neovim/lua/plugins/comment.lua +++ /dev/null @@ -1,23 +0,0 @@ -return { - { - "comment.nvim", - event = { "BufReadPost", "BufNewFile" }, - after = function(plugin) - require("Comment").setup({ - toggler = { - line = "cc", - block = "bc", - }, - opLeader = { - line = "c", - block = "b", - }, - extra = { - above = "c0", - below = "bo", - eol = "cA", - }, - }) - end, - }, -} diff --git a/homes/modules/programs/neovim/lua/plugins/dressing.lua b/homes/modules/programs/neovim/lua/plugins/dressing.lua index 42e7280..bca1775 100644 --- a/homes/modules/programs/neovim/lua/plugins/dressing.lua +++ b/homes/modules/programs/neovim/lua/plugins/dressing.lua @@ -1,5 +1,5 @@ return { - { - "dressing.nvim", - }, + { + "dressing.nvim" + }, } diff --git a/homes/modules/programs/neovim/lua/plugins/format.lua b/homes/modules/programs/neovim/lua/plugins/format.lua deleted file mode 100644 index 2097d75..0000000 --- a/homes/modules/programs/neovim/lua/plugins/format.lua +++ /dev/null @@ -1,33 +0,0 @@ --- docs -> https://github.com/stevearc/conform.nvim -return { - { - "conform.nvim", - enabled = nixCats("format") or false, - keys = { - { "p", desc = "Format File (pretty :3)" }, - }, - after = function(plugin) - local conform = require("conform") - - conform.setup({ - formatters_by_ft = { - lua = nixCats("lang.lua.format") and { "stylua" } or nil, - nix = nixCats("lang.nix.format") and { "nixfmt" } or nil, - rust = nixCats("lang.rust.format") and { "rustfmt", lsp_format = "fallback" } or nil, - haskell = nixCats("lang.haskell.format") and { "ormolu" } or nil, - }, - format_on_save = { - timeout_ms = 500, - }, - }) - - vim.keymap.set({ "n", "v" }, "p", function() - conform.format({ - lsp_fallback = false, - async = false, - timeout_ms = 1000, - }) - end, { desc = "Format File (pretty :3)" }) - end, - }, -} diff --git a/homes/modules/programs/neovim/lua/plugins/fyler.lua b/homes/modules/programs/neovim/lua/plugins/fyler.lua index 2737b78..dd2bdab 100644 --- a/homes/modules/programs/neovim/lua/plugins/fyler.lua +++ b/homes/modules/programs/neovim/lua/plugins/fyler.lua @@ -1,22 +1,15 @@ return { - { - "fyler.nvim", - cmd = { "Fyler" }, - keys = { - { - "tf", - function() - return require("fyler").toggle({ kind = "split_right" }) - end, - mode = { "n" }, - desc = "Open [F]yler", - }, - }, - load = function(name) - vim.cmd.packadd(name) - end, - after = function(plugin) - local fyler = require("fyler").setup() - end, - }, + { + "fyler.nvim", + cmd = { "Fyler" }, + keys = { + { "tf", function() return require('fyler').toggle({ kind = "split_right" }) end, mode = {"n"}, desc = 'Open [F]yler' }, + }, + load = function (name) + vim.cmd.packadd(name) + end, + after = function(plugin) + local fyler = require("fyler").setup() + end, + }, } diff --git a/homes/modules/programs/neovim/lua/plugins/init.lua b/homes/modules/programs/neovim/lua/plugins/init.lua index 62de146..c45bebd 100644 --- a/homes/modules/programs/neovim/lua/plugins/init.lua +++ b/homes/modules/programs/neovim/lua/plugins/init.lua @@ -1,9 +1,7 @@ -require("lze").load({ - { import = "plugins.dressing" }, - { import = "plugins.telescope" }, - { import = "plugins.treesitter" }, - { import = "plugins.fyler" }, - { import = "plugins.mini-hipatterns" }, - { import = "plugins.format" }, - { import = "plugins.comment" }, -}) +require("lze").load { + { import = "plugins.dressing", }, + { import = "plugins.telescope", }, + { import = "plugins.treesitter", }, + { import = "plugins.fyler", }, + { import = "plugins.mini-hipatterns", }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua b/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua index f41688e..a7c6c2a 100644 --- a/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua +++ b/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua @@ -1,76 +1,76 @@ return { - { - "mini.hipatterns", - after = function(plugin) - local hipatterns = require("mini.hipatterns") + { + "mini.hipatterns", + after = function(plugin) + local hipatterns = require("mini.hipatterns") - -- Returns hex color group for matching short hex color. - -- - ---@param match string - ---@return string - local hex_color_short = function(_, match) - local style = "fg" -- 'fg' or 'bg', for extmark_opts_inline use 'fg' - local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4) - local hex = string.format("#%s%s%s%s%s%s", r, r, g, g, b, b) - return hipatterns.compute_hex_color_group(hex, style) - end + -- Returns hex color group for matching short hex color. + -- + ---@param match string + ---@return string + local hex_color_short = function(_, match) + local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg' + local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4) + local hex = string.format('#%s%s%s%s%s%s', r, r, g, g, b, b) + return hipatterns.compute_hex_color_group(hex, style) + end - -- Returns hex color group for matching alpha hex color. - -- - ---@param match string - ---@return string - local hex_color_alpha = function(_, match) - local style = "fg" -- 'fg' or 'bg', for extmark_opts_inline use 'fg' - local r, g, b = match:sub(2, 3), match:sub(4, 5), match:sub(6, 7) - local hex = string.format("#%s%s%s", r, g, b) - return hipatterns.compute_hex_color_group(hex, style) - end + -- Returns hex color group for matching alpha hex color. + -- + ---@param match string + ---@return string + local hex_color_alpha = function(_, match) + local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg' + local r, g, b = match:sub(2, 3), match:sub(4, 5), match:sub(6, 7) + local hex = string.format('#%s%s%s', r, g, b) + return hipatterns.compute_hex_color_group(hex, style) + end - -- Returns extmark opts for highlights with virtual inline text. - -- - ---@param data table Includes `hl_group`, `full_match` and more. - ---@return table - local extmark_opts_inline = function(_, _, data) - return { - virt_text = { { "󰧞", data.hl_group } }, - virt_text_pos = "inline", - right_gravity = false, - } - end + -- Returns extmark opts for highlights with virtual inline text. + -- + ---@param data table Includes `hl_group`, `full_match` and more. + ---@return table + local extmark_opts_inline = function(_, _, data) + return { + virt_text = { { '󰧞', data.hl_group } }, + virt_text_pos = 'inline', + right_gravity = false, + } + end - -- Returns extmark opts for highlights with virtual inline text. - -- - ---@param data table Includes `hl_group`, `full_match` and more. - ---@return table - local extmark_opts_inline_alpha = function(_, _, data) - return { - virt_text = { { "󱡓", data.hl_group } }, - virt_text_pos = "inline", - right_gravity = false, - } - end + -- Returns extmark opts for highlights with virtual inline text. + -- + ---@param data table Includes `hl_group`, `full_match` and more. + ---@return table + local extmark_opts_inline_alpha = function(_, _, data) + return { + virt_text = { { '󱡓', data.hl_group } }, + virt_text_pos = 'inline', + right_gravity = false, + } + end - hipatterns.setup({ - highlighters = { - -- #rrggbb - hex_color = hipatterns.gen_highlighter.hex_color({ - style = "inline", - inline_text = "󰧞", - }), - -- #rgb - hex_color_short = { - pattern = "#%x%x%x%f[%X]", - group = hex_color_short, - extmark_opts = extmark_opts_inline, - }, - -- #rrggbbaa - hex_color_alpha = { - pattern = "#%x%x%x%x%x%x%x%x%f[%X]", - group = hex_color_alpha, - extmark_opts = extmark_opts_inline_alpha, - }, - }, - }) - end, + hipatterns.setup({ + highlighters = { + -- #rrggbb + hex_color = hipatterns.gen_highlighter.hex_color({ + style = "inline", + inline_text = '󰧞', + }), + -- #rgb + hex_color_short = { + pattern = "#%x%x%x%f[%X]", + group = hex_color_short, + extmark_opts = extmark_opts_inline, + }, + -- #rrggbbaa + hex_color_alpha = { + pattern = "#%x%x%x%x%x%x%x%x%f[%X]", + group = hex_color_alpha, + extmark_opts = extmark_opts_inline_alpha, + }, }, + }) + end, + }, } diff --git a/homes/modules/programs/neovim/lua/plugins/telescope.lua b/homes/modules/programs/neovim/lua/plugins/telescope.lua index a61f19c..919f3bd 100644 --- a/homes/modules/programs/neovim/lua/plugins/telescope.lua +++ b/homes/modules/programs/neovim/lua/plugins/telescope.lua @@ -1,78 +1,36 @@ return { - { - "telescope.nvim", - cmd = { "Telescope" }, - keys = { - { - "f", - function() - return require("telescope.builtin").find_files() - end, - mode = { "n" }, - desc = "Telescope search [F]iles", - }, - { - "tr", - function() - return require("telescope.builtin").oldfiles() - end, - mode = { "n" }, - desc = "[T]elescope search [R]ecent files", - }, - { - "ts", - function() - return require("telescope.builtin").live_grep() - end, - mode = { "n" }, - desc = "[T]elescope [S]earch cwd with grep", - }, - { - "tw", - function() - return require("telescope.builtin").grep_string() - end, - mode = { "n" }, - desc = "[T]elescope search current [W]ord", - }, - { - "tk", - function() - return require("telescope.builtin").keymaps() - end, - mode = { "n" }, - desc = "[T]elescope search [K]eymaps", - }, - { - "tb", - function() - return require("telescope.builtin").buffers() - end, - mode = { "n" }, - desc = "[T]elescope search [B]uffers", - }, - }, - load = function(name) - vim.cmd.packadd(name) - vim.cmd.packadd("telescope-fzf-native.nvim") - end, - after = function(plugin) - local telescope = require("telescope") - local actions = require("telescope.actions") + { + "telescope.nvim", + cmd = { "Telescope" }, + keys = { + { "f", function() return require('telescope.builtin').find_files() end, mode = {"n"}, desc = 'Telescope search [F]iles' }, + { "tr", function() return require('telescope.builtin').oldfiles() end, mode = {"n"}, desc = '[T]elescope search [R]ecent files' }, + { "ts", function() return require('telescope.builtin').live_grep() end, mode = {"n"}, desc = '[T]elescope [S]earch cwd with grep' }, + { "tw", function() return require('telescope.builtin').grep_string() end, mode = {"n"}, desc = '[T]elescope search current [W]ord' }, + { "tk", function() return require('telescope.builtin').keymaps() end, mode = {"n"}, desc = '[T]elescope search [K]eymaps' }, + { "tb", function() return require('telescope.builtin').buffers() end, mode = {"n"}, desc = '[T]elescope search [B]uffers' }, + }, + load = function (name) + vim.cmd.packadd(name) + vim.cmd.packadd("telescope-fzf-native.nvim") + end, + after = function(plugin) + local telescope = require("telescope") + local actions = require("telescope.actions") - telescope.setup({ - defaults = { - mappings = { - i = { - [""] = actions.move_selection_previous, -- move to prev result - [""] = actions.move_selection_next, -- move to next result - [""] = actions.send_selected_to_qflist + actions.open_qflist, - }, - }, - }, - }) + telescope.setup { + defaults = { + mappings = { + i = { + [""] = actions.move_selection_previous, -- move to prev result + [""] = actions.move_selection_next, -- move to next result + [""] = actions.send_selected_to_qflist + actions.open_qflist + } + } + } + } - pcall(telescope.load_extension, "fzf") - end, - }, + pcall(telescope.load_extension, "fzf") + end, + }, } diff --git a/homes/modules/programs/neovim/lua/plugins/treesitter.lua b/homes/modules/programs/neovim/lua/plugins/treesitter.lua index 55984c7..489ecf9 100644 --- a/homes/modules/programs/neovim/lua/plugins/treesitter.lua +++ b/homes/modules/programs/neovim/lua/plugins/treesitter.lua @@ -2,94 +2,94 @@ -- https://github.com/BirdeeHub/nixCats-nvim/blob/3c9bc4d7123e1b48d92f25ba505b889af541e897/templates/example/lua/myLuaConf/plugins/treesitter.lua return { - { - "nvim-treesitter", - lazy = false, - after = function(plugin) - --@param buf integer - --@param language string - local function treesitter_try_attach(buf, language) - --check if parser exists and load it - if not vim.treesitter.language.add(language) then - return - end + { + "nvim-treesitter", + lazy = false, + after = function (plugin) + --@param buf integer + --@param language string + local function treesitter_try_attach(buf, language) + --check if parser exists and load it + if not vim.treesitter.language.add(language) then + return + end - -- enables syntax highlight and other treesitter features - vim.treesitter.start(buf, language) + -- enables syntax highlight and other treesitter features + vim.treesitter.start(buf, language) - -- enables treesitter based folds - vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()" + -- enables treesitter based folds + vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()" - -- enables treesiter based indentation - vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" - end + -- enables treesiter based indentation + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end - local available_parsers = require("nvim-treesitter").get_available() - vim.api.nvim_create_autocmd("FileType", { - callback = function(args) - local buf, filetype = args.buf, args.match - local language = vim.treesitter.language.get_lang(filetype) - if not language then - return - end + local available_parsers = require("nvim-treesitter").get_available() + vim.api.nvim_create_autocmd("FileType", { + callback = function(args) + local buf, filetype = args.buf, args.match + local language = vim.treesitter.language.get_lang(filetype) + if not language then + return + end - local installed_parsers = require("nvim-treesitter").get_installed("parsers") + local installed_parsers = require("nvim-treesitter").get_installed("parsers") - if vim.tbl_contains(installed_parsers, language) then - -- enable the parser if it is installed - treesitter_try_attach(buf, language) - elseif vim.tbl_contains(available_parsers, language) then - -- if a parser is available in `nvim-treesitter` enable it after ensuring it is installed - require("nvim-treesitter").install(language):await(function() - treesitter_try_attach(buf, language) - end) - else - -- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter` - treesitter_try_attach(buf, language) - end - end, - }) - end, + if vim.tbl_contains(installed_parsers, language) then + -- enable the parser if it is installed + treesitter_try_attach(buf, language) + elseif vim.tbl_contains(available_parsers, language) then + -- if a parser is available in `nvim-treesitter` enable it after ensuring it is installed + require("nvim-treesitter").install(language):await(function() + treesitter_try_attach(buf, language) + end) + else + -- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter` + treesitter_try_attach(buf, language) + end + end, + }) + end, + }, + { + "nvim-treesitter-textobjects", + lazy = false, + before = function(plugin) + vim.g.no_plugin_maps = true + end, + after = function(plugin) + require("nvim-treesitter-textobjects").setup { + select = { + lookahead = true, + selection_modes = { + ['@parameter.outer'] = 'v', -- charwise + ['@function.outer'] = 'V', -- linewise + }, + include_surrounding_whitespace = false, }, - { - "nvim-treesitter-textobjects", - lazy = false, - before = function(plugin) - vim.g.no_plugin_maps = true - end, - after = function(plugin) - require("nvim-treesitter-textobjects").setup({ - select = { - lookahead = true, - selection_modes = { - ["@parameter.outer"] = "v", -- charwise - ["@function.outer"] = "V", -- linewise - }, - include_surrounding_whitespace = false, - }, - }) + } - -- keymaps - vim.keymap.set({ "x", "o" }, "am", function() - require("nvim-treesitter-textobjects.select").select_textobject("@function.outer", "textobjects") - end) - vim.keymap.set({ "x", "o" }, "im", function() - require("nvim-treesitter-textobjects.select").select_textobject("@function.inner", "textobjects") - end) - vim.keymap.set({ "x", "o" }, "ac", function() - require("nvim-treesitter-textobjects.select").select_textobject("@class.outer", "textobjects") - end) - vim.keymap.set({ "x", "o" }, "ic", function() - require("nvim-treesitter-textobjects.select").select_textobject("@class.inner", "textobjects") - end) - -- You can also use captures from other query groups like `locals.scm` - vim.keymap.set({ "x", "o" }, "as", function() - require("nvim-treesitter-textobjects.select").select_textobject("@local.scope", "locals") - end) + -- keymaps + vim.keymap.set({ "x", "o" }, "am", function() + require "nvim-treesitter-textobjects.select".select_textobject("@function.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "im", function() + require "nvim-treesitter-textobjects.select".select_textobject("@function.inner", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ac", function() + require "nvim-treesitter-textobjects.select".select_textobject("@class.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ic", function() + require "nvim-treesitter-textobjects.select".select_textobject("@class.inner", "textobjects") + end) + -- You can also use captures from other query groups like `locals.scm` + vim.keymap.set({ "x", "o" }, "as", function() + require "nvim-treesitter-textobjects.select".select_textobject("@local.scope", "locals") + end) - -- NOTE: for more textobjects options, see the following link. - -- This template is using the new `main` branch of the repo. - -- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/tree/main - end, - }, + -- NOTE: for more textobjects options, see the following link. + -- This template is using the new `main` branch of the repo. + -- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/tree/main + end, + }, } diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index a90113f..e9061cf 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -1,17 +1,14 @@ -# TODO: look into changing to this: -# https://github.com/BirdeeHub/nix-wrapper-modules { inputs, spkgs, mpkgs, ... -}: -let - inherit (inputs.nixcats) +}: let + inherit + (inputs.nixcats) utils ; -in -{ +in { imports = [ inputs.nixcats.homeModule ]; @@ -26,250 +23,211 @@ in # add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins # It will not apply to overall system, just nixCats. addOverlays = - # (import ./overlays inputs) ++ + /* + (import ./overlays inputs) ++ + */ [ (utils.standardPluginOverlay inputs) ]; # see the packageDefinitions below. # This says which of those to install. - packageNames = [ "auroranvim" ]; + packageNames = ["auroranvim"]; luaPath = "${./.}"; # the .replace vs .merge options are for modules based on existing configurations, # they refer to how multiple categoryDefinitions get merged together by the module. # for useage of this section, refer to :h nixCats.flake.outputs.categories - categoryDefinitions.replace = - { - pkgs, - settings, - categories, - extra, - name, - mkNvimPlugin, - ... - }@packageDef: - { - lspsAndRuntimeDeps = with pkgs; { - general = [ - ripgrep - fd + categoryDefinitions.replace = { + pkgs, + settings, + categories, + extra, + name, + mkNvimPlugin, + ... + } @ packageDef: { + lspsAndRuntimeDeps = { + general = with pkgs; [ + ripgrep + fd + ]; + treesitter = with pkgs; [ + tree-sitter + ]; + lang = with pkgs; { + lua = [ + lua-language-server ]; - treesitter = [ - tree-sitter + nix = [ + nil + nix-doc ]; - lang = { - lua = { - lsp = [ lua-language-server ]; - format = [ stylua ]; - }; - nix = { - lsp = [ - nil - nix-doc # TODO: i forgot what this is for - ]; - format = [ nixfmt ]; - }; - rust = { - lsp = [ - cargo - mpkgs.rust-analyzer - ]; - format = [ rustfmt ]; - }; - zig = [ - spkgs.zls # FIX: using spkgs version as zls is broken rn ;-; - ]; - elixir = [ - elixir-ls - ]; - gleam = [ - gleam - ]; - haskell = { - lsp = [ haskell-language-server ]; - format = [ ormolu ]; - }; - java = [ - jdt-language-server - javaPackages.compiler.openjdk17 - javaPackages.compiler.openjdk21 - ]; - }; - }; - - startupPlugins = with pkgs.vimPlugins; { - general = [ - lze - plenary-nvim - nvim-notify - nvim-web-devicons - base16-nvim - mini-nvim + rust = with pkgs; [ + cargo + mpkgs.rust-analyzer ]; - treesitter = [ - nvim-treesitter-textobjects - nvim-treesitter.withAllGrammars + zig = with pkgs; [ + spkgs.zls # FIX: using spkgs version as zls is broken rn ;-; ]; - }; - - optionalPlugins = with pkgs.vimPlugins; { - general = [ + elixir = with pkgs; [ + elixir-ls ]; - ui = [ - dressing-nvim + gleam = with pkgs; [ + gleam ]; - qol = [ - undotree - mini-hipatterns + haskell = with pkgs; [ + haskell-language-server + ormolu ]; - telescope = [ - telescope-nvim - telescope-fzf-native-nvim - telescope-ui-select-nvim + java = with pkgs; [ + jdt-language-server + javaPackages.compiler.openjdk17 + javaPackages.compiler.openjdk21 ]; - fyler = [ - fyler-nvim - ]; - lsp = [ - nvim-lspconfig - ]; - completion = [ - blink-cmp - nvim-cmp - luasnip - friendly-snippets - cmp_luasnip - cmp-buffer - cmp-path - cmp-nvim-lua - cmp-nvim-lsp - cmp-cmdline - cmp-nvim-lsp-signature-help - cmp-cmdline-history - lspkind-nvim - ]; - format = [ - conform-nvim - ]; - comment = [ - comment-nvim - ]; - lang = { - java = [ - nvim-jdtls - ]; - }; - }; - - # shared libraries to be added to LD_LIBRARY_PATH - # variable available to nvim runtime - sharedLibraries = { - general = with pkgs; [ - # libgit2 - ]; - }; - - environmentVariables = { - lang = { - rust.lsp = { - # it literally won't see the rust-analyzer provided to it - # if you don't use an envrionment variable to tell it - RUST_ANALYZER_CMD = "${mpkgs.rust-analyzer}/bin/rust-analyzer"; - }; - elixir.lsp = { - ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh"; - }; - java.lsp = { - JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}"; - OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}"; - OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}"; - }; - }; - }; - - extraWrapperArgs = { - test = [ - ''--set CATTESTVAR2 "It worked again!"'' - ]; - }; - # lists of the functions you would have passed to - # python.withPackages or lua.withPackages - - # get the path to this python environment - # in your lua config via - # vim.g.python3_host_prog - # or run from nvim terminal via :!-python3 - extraPython3Packages = { - test = _: [ ]; - }; - # populates $LUA_PATH and $LUA_CPATH - extraLuaPackages = { - test = [ (_: [ ]) ]; }; }; + startupPlugins = { + general = with pkgs.vimPlugins; [ + lze + plenary-nvim + nvim-notify + nvim-web-devicons + base16-nvim + mini-nvim + ]; + treesitter = with pkgs.vimPlugins; [ + nvim-treesitter-textobjects + nvim-treesitter.withAllGrammars + ]; + }; + optionalPlugins = { + general = with pkgs.vimPlugins; [ + ]; + ui = with pkgs.vimPlugins; [ + dressing-nvim + ]; + qol = with pkgs.vimPlugins; [ + undotree + mini-hipatterns + ]; + telescope = with pkgs.vimPlugins; [ + telescope-nvim + telescope-fzf-native-nvim + telescope-ui-select-nvim + ]; + fyler = with pkgs.vimPlugins; [ + fyler-nvim + ]; + lsp = with pkgs.vimPlugins; [ + nvim-lspconfig + ]; + completion = with pkgs.vimPlugins; [ + blink-cmp + nvim-cmp + luasnip + friendly-snippets + cmp_luasnip + cmp-buffer + cmp-path + cmp-nvim-lua + cmp-nvim-lsp + cmp-cmdline + cmp-nvim-lsp-signature-help + cmp-cmdline-history + lspkind-nvim + ]; + lang = with pkgs.vimPlugins; { + java = [ + nvim-jdtls + ]; + }; + }; + + # shared libraries to be added to LD_LIBRARY_PATH + # variable available to nvim runtime + sharedLibraries = { + general = with pkgs; [ + # libgit2 + ]; + }; + environmentVariables = { + lang = { + rust = { + # it literally won't see the rust-analyzer provided to it + # if you don't use an envrionment variable to tell it + RUST_ANALYZER_CMD = "${pkgs.rust-analyzer}/bin/rust-analyzer"; + }; + elixir = { + ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh"; + }; + java = { + JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}"; + OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}"; + OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}"; + }; + }; + }; + extraWrapperArgs = { + test = [ + ''--set CATTESTVAR2 "It worked again!"'' + ]; + }; + # lists of the functions you would have passed to + # python.withPackages or lua.withPackages + + # get the path to this python environment + # in your lua config via + # vim.g.python3_host_prog + # or run from nvim terminal via :!-python3 + extraPython3Packages = { + test = _: []; + }; + # populates $LUA_PATH and $LUA_CPATH + extraLuaPackages = { + test = [(_: [])]; + }; + }; + # see :help nixCats.flake.outputs.packageDefinitions packageDefinitions.replace = { # these are the names of your packages # you can include as many as you wish. - auroranvim = - { pkgs, ... }: - { - # they contain a settings set defined above - # see :help nixCats.flake.outputs.settings - settings = { - wrapRc = true; - # IMPORTANT: - # your alias may not conflict with your other packages. - aliases = [ - "auroravim" - "auravim" - "foxyvim" - "avix" - "fvix" - "auim" - ]; - }; - # and a set of categories that you want - # (and other information to pass to lua) - categories = { - general = true; + auroranvim = {pkgs, ...}: { + # they contain a settings set defined above + # see :help nixCats.flake.outputs.settings + settings = { + wrapRc = true; + # IMPORTANT: + # your alias may not conflict with your other packages. + aliases = ["auroravim" "auravim" "foxyvim" "avix" "fvix" "auim"]; + }; + # and a set of categories that you want + # (and other information to pass to lua) + categories = { + general = true; - ui = true; - qol = true; - telescope = true; - fyler = true; - lsp = true; - completion = true; - treesitter = true; - format = true; - comment = true; + ui = true; + qol = true; + telescope = true; + fyler = true; + lsp = true; + completion = true; + treesitter = true; - lang = { - lua = { - lsp = true; - format = true; - }; - nix = { - lsp = true; - format = true; - }; - rust = { - lsp = true; - format = true; - }; - zig = true; - elixir = true; - gleam = true; - haskell = { - lsp = true; - format = true; - }; - java = true; - }; + lang = { + lua = true; + nix = true; + rust = true; + zig = true; + elixir = true; + gleam = true; + haskell = true; + java = true; }; }; + }; }; }; }; diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix index 6bd53fe..0779ae1 100644 --- a/hosts/arcturus/default.nix +++ b/hosts/arcturus/default.nix @@ -23,7 +23,6 @@ networking = { useNetworkd = false; - networkmanager.enable = false; useDHCP = false; nftables.enable = true; @@ -93,7 +92,6 @@ Gateway = "10.16.1.1"; DNS = ["10.16.1.1"]; LinkLocalAddressing = "no"; - DHCP = "no"; }; linkConfig.RequiredForOnline = "routable"; }; diff --git a/snow.nix b/snow.nix index c927050..0be6e6b 100644 --- a/snow.nix +++ b/snow.nix @@ -75,11 +75,11 @@ cerulean.mkNexus ./. (self: { ]; volumes = [ - #{ - #image = "/var/lib/microvms/home-assistant/data.img"; - #mountPoint = "/var/lib/hass"; - #autoCreate = false; - #} + { + image = "/var/lib/microvms/home-assistant/data.img"; + mountPoint = "/var/lib/hass"; + size = 16384; # 16GB + } ]; }; diff --git a/vms/home-assistant/default.nix b/vms/home-assistant/default.nix index 70bcd07..17ad40c 100644 --- a/vms/home-assistant/default.nix +++ b/vms/home-assistant/default.nix @@ -2,7 +2,7 @@ { services.home-assistant = { enable = true; - configDir = "/var/lib/hass/hass"; + configDir = "/var/lib/hass"; # disables config generation, i don't wanna configure home assistant # through nix at the moment @@ -16,32 +16,15 @@ extraPackages = python3Packages: with python3Packages; [ getmac - aiohue - numpy - aiodhcpwatcher - async-upnp-client - gtts - numpy - plexapi - pyipp - paho-mqtt - pyturbojpeg ]; }; - # configures the config directory to be mounted - # correctly with the right permissions - systemd.services.hass-permissions = { - wantedBy = [ "multi-user.target" ]; - after = [ "var-lib-hass.mount" ]; - requires = [ "var-lib-hass.mount" ]; - before = [ "home-assistant.service" ]; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${pkgs.bash}/bin/bash -c 'mkdir -p /var/lib/hass/hass && chown hass:hass /var/lib/hass/hass'"; - RemainAfterExit = true; - }; - }; + systemd.tmpfiles.rules = [ + # configures the config directory to be mounted + # correclty with the right permissions + "z /var/lib/hass 0755 hass hass -" + "z /var/lib/hass/lost+found 0755 hass hass -" + ]; networking = { nftables.enable = true;