{ inputs, lib, pkgs, ... }: let nvim-remote = pkgs.writeShellApplication { name = "nvim-remote"; text = '' _sess=$(echo -n "$USER@''${SSH_CONNECTION:-$HOSTNAME}" | tr -c '[:alnum:]@.' '_') _nvim_sock="''${XDG_RUNTIME_DIR:-/tmp}/nvim.$_sess.sock" exec nvim --listen "$_nvim_sock" --server "$_nvim_sock" "$@" ''; }; in { imports = [ ./treesitter.nix ]; home.packages = [ nvim-remote ]; programs.man.generateCaches = false; programs.neovim = { enable = true; package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; defaultEditor = true; viAlias = true; vimAlias = true; withNodeJs = false; withPython3 = false; withRuby = false; extraLuaConfig = lib.fileContents ./init.lua; extraPackages = with pkgs; [ codeium harper lua-language-server nixd shellcheck shfmt stylua ]; plugins = with pkgs.vimPlugins; [ friendly-snippets go-nvim targets-vim ts-comments-nvim { plugin = pkgs.vimUtils.buildVimPlugin { name = "direnv-nvim"; src = pkgs.fetchFromGitHub { owner = "actionshrimp"; repo = "direnv.nvim"; rev = "main"; hash = "sha256-7NcVskgAurbIuEVIXxHvXZfYQBOEXLURGzllfVEQKNE="; }; }; type = "lua"; config = '' require('direnv-nvim').setup { type = "dir" } ''; } { plugin = nvim-lspconfig; type = "lua"; config = lib.fileContents ./lsp.lua; } { plugin = blink-cmp; type = "lua"; config = lib.fileContents ./blink-cmp.lua; } { plugin = pkgs.vimUtils.buildVimPlugin { name = "blink.compat"; src = pkgs.fetchFromGitHub { owner = "saghen"; repo = "blink.compat"; rev = "5ca8848c8cc32abdc980e5db4f0eb7bb8fbf84dc"; # Dec 25, 2024 hash = "sha256-tFQeKyqdo3mvptYnWxKhTpI4ROFNQ6u3P8cLqtlsozw="; }; }; type = "lua"; config = '' require('blink.compat').setup() ''; } { plugin = pkgs.vimUtils.buildVimPlugin { name = "inlay-hints"; src = pkgs.fetchFromGitHub { owner = "MysticalDevil"; repo = "inlay-hints.nvim"; rev = "3259b54f3b954b4d8260f3ee49ceabe978ea5636"; hash = "sha256-99KCGoPowa4PA1jkCm4ZbbgrFl84NWnKQMgkfy8KS5E="; }; }; type = "lua"; config = '' require('inlay-hints').setup { autocmd = { enable = false }, } ''; } { plugin = codeium-nvim; type = "lua"; config = '' require'codeium'.setup { enable_chat = false, } ''; } { plugin = pkgs.vimUtils.buildVimPlugin { name = "neocodeium"; src = pkgs.fetchFromGitHub { owner = "monkoose"; repo = "neocodeium"; rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0 hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU="; }; doCheck = false; }; type = "lua"; config = '' local neocodeium =require('neocodeium') neocodeium.setup() vim.keymap.set("i", "", neocodeium.accept, { remap = true }) vim.keymap.set("i", "", neocodeium.accept, { remap = true }) vim.keymap.set("i", "", neocodeium.cycle_or_complete, { remap = true }) ''; } { plugin = pkgs.vimUtils.buildVimPlugin { name = "diagflow"; src = pkgs.fetchFromGitHub { owner = "dgagn"; repo = "diagflow.nvim"; rev = "fc09d55d2e60edc8ed8f9939ba97b7b7e6488c99"; hash = "sha256-2WNuaIEXcAgUl2Kb/cCHEOrtehw9alaoM96qb4MLArw="; }; }; type = "lua"; config = '' require('diagflow').setup { scope = "line", gap_size = 0, max_width = 50, max_height = 20, show_borders = true, toggle_event = { "InsertEnter", "InsertLeave" }, } ''; } { plugin = pkgs.vimUtils.buildVimPlugin { name = "dieter-nvim"; src = ./dieter; }; type = "lua"; config = '' vim.cmd.colorscheme "dieter-nocolor" ''; } { plugin = mini-nvim; type = "lua"; config = lib.fileContents ./mini.lua; } { plugin = rustaceanvim; type = "lua"; config = lib.fileContents ./rust.lua; } ]; }; }