From d08ce627c92c6dc3b10e745feb390bdf246f5425 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Fri, 7 Nov 2025 18:13:47 +0100 Subject: [PATCH] Configure zk notes path --- modules/editor/vim/vim.nix | 539 +++++++++++++++++++------------------ 1 file changed, 271 insertions(+), 268 deletions(-) diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index 9b113cb..13f618d 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -14,285 +14,288 @@ in }; config = lib.mkIf cfg.enable { - home-manager.users.${config.user.name} = { + home-manager.users.${config.user.name} = + { config, ... }: + { - programs.neovim = { - enable = true; - package = pkgs.neovim-unwrapped; - vimAlias = true; - vimdiffAlias = true; - withNodeJs = true; - plugins = with pkgs.vimPlugins; [ - # base distro - LazyVim - conform-nvim - nvim-lint - markdown-preview-nvim - render-markdown-nvim + programs.neovim = { + enable = true; + package = pkgs.neovim-unwrapped; + vimAlias = true; + vimdiffAlias = true; + withNodeJs = true; + plugins = with pkgs.vimPlugins; [ + # base distro + LazyVim + conform-nvim + nvim-lint + markdown-preview-nvim + render-markdown-nvim - # theme - gruvbox-nvim + # theme + gruvbox-nvim - # UI - bufferline-nvim - gitsigns-nvim - neogit - diffview-nvim - edgy-nvim - dashboard-nvim - toggleterm-nvim - trouble-nvim - lualine-nvim - which-key-nvim - nvim-web-devicons - mini-nvim - mini-ai - mini-comment - mini-icons - mini-pairs - noice-nvim - nui-nvim - nvim-notify - nvim-lsp-notify - neo-tree-nvim - nvim-navic - dressing-nvim - aerial-nvim - snacks-nvim + # UI + bufferline-nvim + gitsigns-nvim + neogit + diffview-nvim + edgy-nvim + dashboard-nvim + toggleterm-nvim + trouble-nvim + lualine-nvim + which-key-nvim + nvim-web-devicons + mini-nvim + mini-ai + mini-comment + mini-icons + mini-pairs + noice-nvim + nui-nvim + nvim-notify + nvim-lsp-notify + neo-tree-nvim + nvim-navic + dressing-nvim + aerial-nvim + snacks-nvim - # project management - project-nvim - neoconf-nvim - persistence-nvim + # project management + project-nvim + neoconf-nvim + persistence-nvim - # smart typing - guess-indent-nvim - vim-illuminate + # smart typing + guess-indent-nvim + vim-illuminate + + # LSP + nvim-lspconfig + nvim-lightbulb # lightbulb for quick actions + # nvim-code-action-menu # code action menu + neodev-nvim + SchemaStore-nvim # load known formats for json and yaml + nvim-metals + nvim-jdtls + + # cmp plugins + nvim-cmp + blink-cmp # completion plugin + cmp_luasnip # snipper completions + + # snippets + luasnip # snippet engine + friendly-snippets # a bunch of snippets to use + + # search functionality + plenary-nvim + telescope-nvim + telescope-fzf-native-nvim + fzf-lua + grug-far-nvim + flash-nvim + + # treesitter + nvim-treesitter-context + nvim-ts-autotag + nvim-treesitter-textobjects + nvim-treesitter.withAllGrammars + + # comments + ts-comments-nvim + nvim-ts-context-commentstring + todo-comments-nvim + + # leap + vim-repeat + leap-nvim + flit-nvim + + # DAP + nvim-dap + nvim-dap-ui + nvim-dap-virtual-text + one-small-step-for-vimkind + + # neotest + neotest + neotest-rust + neotest-elixir + + # SQL + vim-dadbod + vim-dadbod-ui + vim-dadbod-completion + + lazy-nvim + lazydev-nvim + vim-startuptime + yazi-nvim + zk-nvim + ]; + + extraPackages = with pkgs; [ + gcc # needed for nvim-treesitter + + # HTML, CSS, JSON + vscode-langservers-extracted + + # Nix + nixd + statix + nixfmt-rfc-style + + # SQL + sqlfluff + + # LazyVim defaults + stylua + shfmt + + # Markdown extra + markdownlint-cli2 + marksman + + # Docker extra + dockerfile-language-server + hadolint + docker-compose-language-service + + # JSON and YAML extras + nodePackages.yaml-language-server + + # Java + jdt-language-server + + # Elixir + beam28Packages.elixir-ls + + # Custom + editorconfig-checker + shellcheck + ]; + + extraLuaConfig = # lua + '' + require("gruvbox").setup({ + overrides = { + Include = { ["link"] = "GruvboxRed" }, + ["@constructor"] = { ["link"] = "GruvboxYellow" }, + ["@function.builtin"] = { ["link"] = "GruvboxFg1" }, + ["@function.call"] = { ["link"] = "GruvboxFg1" }, + ["@function.macro"] = { ["link"] = "GruvboxFg1" }, + ["@function.method.call.scala"] = { ["link"] = "GruvboxFg1" }, + ["@method.call"] = { ["link"] = "GruvboxFg1" }, + ["@variable.member.scala"] = { ["link"] = "GruvboxFg1" }, + ["@lsp.type.type.scala"] = { ["link"] = "" }, + ["@lsp.type.method.scala"] = { ["link"] = "" }, + ["@lsp.type.modifier.scala"] = { ["link"] = "GruvboxOrange" }, + ["@lsp.type.typeParameter.scala"] = { ["link"] = "GruvboxAqua" }, + ["@lsp.type.type.nix"] = { ["link"] = "" }, + ["@lsp.type.method.nix"] = { ["link"] = "" }, + ["@lsp.type.macro.nix"] = { ["link"] = "" }, + ["@lsp.type.interface.nix"] = { ["link"] = "" }, + }, + }) + + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import any extras modules here + { import = "lazyvim.plugins.extras.dap.core" }, + { import = "lazyvim.plugins.extras.dap.nlua" }, + { import = "lazyvim.plugins.extras.ui.edgy" }, + { import = "lazyvim.plugins.extras.coding.mini-comment" }, + { import = "lazyvim.plugins.extras.editor.aerial" }, + { import = "lazyvim.plugins.extras.editor.leap" }, + { import = "lazyvim.plugins.extras.editor.navic" }, + { import = "lazyvim.plugins.extras.formatting.prettier" }, + { import = "lazyvim.plugins.extras.lang.angular" }, + { import = "lazyvim.plugins.extras.lang.docker" }, + { import = "lazyvim.plugins.extras.lang.java" }, + { import = "lazyvim.plugins.extras.lang.json" }, + { import = "lazyvim.plugins.extras.lang.markdown" }, + { import = "lazyvim.plugins.extras.lang.sql" }, + { import = "lazyvim.plugins.extras.lang.yaml" }, + { import = "lazyvim.plugins.extras.lang.scala" }, + { import = "lazyvim.plugins.extras.lang.elixir" }, + { import = "lazyvim.plugins.extras.test.core" }, + { import = "lazyvim.plugins.extras.lang.typescript" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + performance = { + -- Used for NixOS + reset_packpath = false, + rtp = { + reset = false, + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + } + }, + dev = { + path = "${pkgs.vimUtils.packDir config.programs.neovim.finalPackage.passthru.packpathDirs}/pack/myNeovimPackages/start", + patterns = {""}, + }, + install = { + missing = false, + }, + }) + ''; + }; + + xdg.configFile."nvim/lua" = { + recursive = true; + source = ./lua; + }; + + home.sessionVariables = { + ZK_NOTEBOOK_DIR = "${config.home.homeDirectory}/Nextcloud/notes"; + }; + + home.packages = with pkgs; [ + ripgrep + fd + nodejs + opentofu + coursier # LSP - nvim-lspconfig - nvim-lightbulb # lightbulb for quick actions - # nvim-code-action-menu # code action menu - neodev-nvim - SchemaStore-nvim # load known formats for json and yaml - nvim-metals - nvim-jdtls - - # cmp plugins - nvim-cmp - blink-cmp # completion plugin - cmp_luasnip # snipper completions - - # snippets - luasnip # snippet engine - friendly-snippets # a bunch of snippets to use - - # search functionality - plenary-nvim - telescope-nvim - telescope-fzf-native-nvim - fzf-lua - grug-far-nvim - flash-nvim - - # treesitter - nvim-treesitter-context - nvim-ts-autotag - nvim-treesitter-textobjects - nvim-treesitter.withAllGrammars - - # comments - ts-comments-nvim - nvim-ts-context-commentstring - todo-comments-nvim - - # leap - vim-repeat - leap-nvim - flit-nvim - - # DAP - nvim-dap - nvim-dap-ui - nvim-dap-virtual-text - one-small-step-for-vimkind - - # neotest - neotest - neotest-rust - neotest-elixir - - # SQL - vim-dadbod - vim-dadbod-ui - vim-dadbod-completion - - lazy-nvim - lazydev-nvim - vim-startuptime - yazi-nvim - zk-nvim - ]; - - extraPackages = with pkgs; [ - gcc # needed for nvim-treesitter - - # HTML, CSS, JSON - vscode-langservers-extracted - - # Nix + yaml-language-server + typos-lsp + nodePackages.typescript-language-server + nodePackages.prettier + terraform-ls + sqls nixd - statix - nixfmt-rfc-style - - # SQL - sqlfluff - - # LazyVim defaults - stylua - shfmt - - # Markdown extra - markdownlint-cli2 marksman - - # Docker extra - dockerfile-language-server - hadolint + lua-language-server docker-compose-language-service - - # JSON and YAML extras - nodePackages.yaml-language-server - - # Java - jdt-language-server - - # Elixir - beam28Packages.elixir-ls - - # Custom - editorconfig-checker - shellcheck + bash-language-server + angular-language-server + vtsls + zk ]; - - extraLuaConfig = # lua - '' - require("gruvbox").setup({ - overrides = { - Include = { ["link"] = "GruvboxRed" }, - ["@constructor"] = { ["link"] = "GruvboxYellow" }, - ["@function.builtin"] = { ["link"] = "GruvboxFg1" }, - ["@function.call"] = { ["link"] = "GruvboxFg1" }, - ["@function.macro"] = { ["link"] = "GruvboxFg1" }, - ["@function.method.call.scala"] = { ["link"] = "GruvboxFg1" }, - ["@method.call"] = { ["link"] = "GruvboxFg1" }, - ["@variable.member.scala"] = { ["link"] = "GruvboxFg1" }, - ["@lsp.type.type.scala"] = { ["link"] = "" }, - ["@lsp.type.method.scala"] = { ["link"] = "" }, - ["@lsp.type.modifier.scala"] = { ["link"] = "GruvboxOrange" }, - ["@lsp.type.typeParameter.scala"] = { ["link"] = "GruvboxAqua" }, - ["@lsp.type.type.nix"] = { ["link"] = "" }, - ["@lsp.type.method.nix"] = { ["link"] = "" }, - ["@lsp.type.macro.nix"] = { ["link"] = "" }, - ["@lsp.type.interface.nix"] = { ["link"] = "" }, - }, - }) - - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - -- import any extras modules here - { import = "lazyvim.plugins.extras.dap.core" }, - { import = "lazyvim.plugins.extras.dap.nlua" }, - { import = "lazyvim.plugins.extras.ui.edgy" }, - { import = "lazyvim.plugins.extras.coding.mini-comment" }, - { import = "lazyvim.plugins.extras.editor.aerial" }, - { import = "lazyvim.plugins.extras.editor.leap" }, - { import = "lazyvim.plugins.extras.editor.navic" }, - { import = "lazyvim.plugins.extras.formatting.prettier" }, - { import = "lazyvim.plugins.extras.lang.angular" }, - { import = "lazyvim.plugins.extras.lang.docker" }, - { import = "lazyvim.plugins.extras.lang.java" }, - { import = "lazyvim.plugins.extras.lang.json" }, - { import = "lazyvim.plugins.extras.lang.markdown" }, - { import = "lazyvim.plugins.extras.lang.sql" }, - { import = "lazyvim.plugins.extras.lang.yaml" }, - { import = "lazyvim.plugins.extras.lang.scala" }, - { import = "lazyvim.plugins.extras.lang.elixir" }, - { import = "lazyvim.plugins.extras.test.core" }, - { import = "lazyvim.plugins.extras.lang.typescript" }, - -- import/override with your plugins - { import = "plugins" }, - }, - defaults = { - -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. - -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. - lazy = false, - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = false, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - }, - performance = { - -- Used for NixOS - reset_packpath = false, - rtp = { - reset = false, - -- disable some rtp plugins - disabled_plugins = { - "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - }, - } - }, - dev = { - path = "${ - pkgs.vimUtils.packDir - config.home-manager.users.${config.user.name}.programs.neovim.finalPackage.passthru.packpathDirs - }/pack/myNeovimPackages/start", - patterns = {""}, - }, - install = { - missing = false, - }, - }) - ''; }; - - xdg.configFile."nvim/lua" = { - recursive = true; - source = ./lua; - }; - - home.packages = with pkgs; [ - ripgrep - fd - nodejs - opentofu - coursier - - # LSP - yaml-language-server - typos-lsp - nodePackages.typescript-language-server - nodePackages.prettier - terraform-ls - sqls - nixd - marksman - lua-language-server - docker-compose-language-service - bash-language-server - angular-language-server - vtsls - zk - ]; - }; }; }