diff --git a/modules/nixos/programs/nixvim/default.nix b/modules/nixos/programs/nixvim/default.nix new file mode 100755 index 0000000..7dd4210 --- /dev/null +++ b/modules/nixos/programs/nixvim/default.nix @@ -0,0 +1,163 @@ +{ pkgs, ... }: +{ + programs.nixvim = { + enable = true; + colorschemes.catppuccin = { + enable = true; + settings.flavour = "macchiato"; + }; + globals.mapleader = " "; + keymaps = [ + { + action = "Neotree toggle"; + key = "e"; + mode = "n"; + options.silent = true; + } + ]; + + plugins = { + avante = { + enable = true; + settings = { + claude = { + model = "claude-3-5-sonnet-latest"; + }; + }; + }; + + trouble.enable = true; + web-devicons.enable = true; + conform-nvim = { + enable = true; + settings = { + formatters_by_ft = { + + css = [ + "prettierd" + "prettier" + ]; + html = [ + "prettierd" + "prettier" + ]; + javascript = [ + "prettierd" + "prettier" + ]; + javascriptreact = [ "prettier" ]; + json = [ "prettier" ]; + markdown = [ "prettier" ]; + nix = [ "nixfmt" ]; + rust = [ "rustfmt" ]; + sh = [ "shfmt" ]; + typescript = [ + "prettierd" + "prettier" + ]; + typescriptreact = [ "prettier" ]; + yaml = [ + "prettierd" + "prettier" + ]; + }; + formatters = { + asmfmt = { + command = "asmfmt"; + stdin = true; + }; + }; + }; + settings.format_on_save = { + lspFallback = true; + timeoutMs = 2000; + }; + }; + direnv = { + enable = true; + }; + treesitter = { + enable = true; + }; + lean.enable = true; + nix.enable = true; + markdown-preview.enable = true; + zellij.enable = true; + zellij-nav.enable = true; + yazi.enable = true; + gitsigns = { + enable = true; + settings = { + current_line_blame = true; + trouble = true; + }; + }; + copilot-chat = { + enable = true; + }; + nvim-tree = { + enable = true; + openOnSetupFile = true; + autoReloadOnWrite = true; + }; + nix-develop.enable = true; + lazygit.enable = true; + haskell-scope-highlighting.enable = true; + lsp = { + enable = true; + servers = { + elmls.enable = true; + hls = { + enable = true; + installGhc = true; + }; + ghcide.enable = true; + leanls.enable = true; + markdown_oxide.enable = true; + nixd.enable = true; + nushell.enable = true; + rls.enable = true; + rust_analyzer = { + enable = true; + installCargo = true; + installRustc = true; + }; + yamlls.enable = true; + java_language_server = { + package = "java-language-server"; + cmd = [ "java-language-server" ]; + }; + }; + }; + }; + opts = { + updatetime = 100; + number = true; + relativenumber = true; + splitbelow = true; + splitright = true; + scrolloff = 4; + + autoindent = true; + clipboard = "unnamedplus"; + expandtab = true; + shiftwidth = 2; + smartindent = true; + tabstop = 2; + + ignorecase = true; + incsearch = true; + smartcase = true; + wildmode = "list:longest"; + + swapfile = false; + undofile = true; + }; + clipboard.providers.wl-copy.enable = true; + extraPlugins = builtins.attrValues { + inherit (pkgs) + + ; + }; + }; +}