From 627c848d1dab0fb3c8ba29349bbf07582b49a10e Mon Sep 17 00:00:00 2001 From: emmatherock Date: Mon, 21 Sep 2026 08:43:50 -0300 Subject: [PATCH] refactor(neovim): move configuration to nixvim branch --- flake.lock | 63 +------- flake.nix | 8 - home/emmatherock/core.nix | 3 +- home/emmatherock/neovim.nix | 286 --------------------------------- hosts/miku-homelab/default.nix | 1 - hosts/vps/default.nix | 1 - 6 files changed, 2 insertions(+), 360 deletions(-) delete mode 100644 home/emmatherock/neovim.nix diff --git a/flake.lock b/flake.lock index 587b940..b3cce19 100644 --- a/flake.lock +++ b/flake.lock @@ -176,27 +176,6 @@ } }, "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1787559586, - "narHash": "sha256-onL0VLf9vPllmT0H/OlURIU5r5t5WIEl7t4tVNKT0Nw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9d0d87172c374f89da73c1cfe6d81ae62feac1f1", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, @@ -390,28 +369,6 @@ "type": "github" } }, - "nixvim": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_3" - }, - "locked": { - "lastModified": 1788190018, - "narHash": "sha256-59BAfH0txPAZrPBF4QJqwvUWppD+ICrcjA1LZAmPnrQ=", - "owner": "nix-community", - "repo": "nixvim", - "rev": "41844750e55f17b1385d5b09ca7ade5f11f49506", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixvim", - "type": "github" - } - }, "ny": { "flake": false, "locked": { @@ -456,7 +413,6 @@ "nix-flatpak": "nix-flatpak", "nix-vscode-extensions": "nix-vscode-extensions", "nixpkgs": "nixpkgs_4", - "nixvim": "nixvim", "plasma-manager": "plasma-manager", "sidra": "sidra", "vscode-server": "vscode-server" @@ -596,23 +552,6 @@ "type": "github" } }, - "systems_3": { - "flake": false, - "locked": { - "lastModified": 1774449309, - "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=", - "owner": "nix-systems", - "repo": "default", - "rev": "c29398b59d2048c4ab79345812849c9bd15e9150", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "ref": "future-26.11", - "repo": "default", - "type": "github" - } - }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -636,7 +575,7 @@ }, "vscode-server": { "inputs": { - "flake-parts": "flake-parts_3" + "flake-parts": "flake-parts_2" }, "locked": { "lastModified": 1784312229, diff --git a/flake.nix b/flake.nix index 4dcc544..df51811 100644 --- a/flake.nix +++ b/flake.nix @@ -21,10 +21,6 @@ url = "github:gmodena/nix-flatpak/?ref=latest"; }; vscode-server.url = "github:nix-community/nixos-vscode-server"; - nixvim = { - url = "github:nix-community/nixvim"; - inputs.nixpkgs.follows = "nixpkgs"; - }; llm-agents.url = "github:numtide/llm-agents.nix"; nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; agenix = { @@ -57,7 +53,6 @@ home-manager.extraSpecialArgs = { inherit inputs; }; home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager - inputs.nixvim.homeModules.nixvim ]; home-manager.users.emmatherock = { osConfig, ... }: { imports = [ ./home/emmatherock/core.nix ] ++ osConfig.myHomeProfile.extraPrograms; @@ -79,9 +74,6 @@ home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit inputs; }; - home-manager.sharedModules = [ - inputs.nixvim.homeModules.nixvim - ]; home-manager.users.emmatherock = { osConfig, ... }: { imports = [ ./home/emmatherock/core.nix ] ++ osConfig.myHomeProfile.extraPrograms; }; diff --git a/home/emmatherock/core.nix b/home/emmatherock/core.nix index d8d7d38..7afa71b 100644 --- a/home/emmatherock/core.nix +++ b/home/emmatherock/core.nix @@ -8,8 +8,7 @@ programs.home-manager.enable = true; programs.btop.enable = true; - # Per-project toolchain resolution (nix-shell / flake devShell), used by - # nixvim's LSP servers so they don't need language toolchains installed globally. + # Per-project toolchain resolution through nix-shell / flake devShell. programs.direnv = { enable = true; nix-direnv.enable = true; diff --git a/home/emmatherock/neovim.nix b/home/emmatherock/neovim.nix deleted file mode 100644 index deb5707..0000000 --- a/home/emmatherock/neovim.nix +++ /dev/null @@ -1,286 +0,0 @@ -# Declarative Neovim config via nixvim. Goal: a real, lean IDE — not a -# feature-for-feature VSCode clone. Every plugin here earns its place. - -{ pkgs, ... }: - -{ - programs.nixvim = { - enable = true; - defaultEditor = true; - vimAlias = true; # `vim` -> nvim, handy when SSH'd into the VPS/homelab - - colorschemes.catppuccin = { - enable = true; - settings.flavour = "mocha"; - }; - - globals.mapleader = " "; - - # --- System clipboard over OSC 52, so "+y / "+p work over SSH - # (Termius -> VPS/homelab) without a local clipboard provider. - # Requires Neovim 0.10+ for vim.ui.clipboard.osc52; confirmed - # present (Neovim 0.12.5 on the pinned nixpkgs as of 2026-09). - extraConfigLua = '' - vim.g.clipboard = { - name = "OSC 52", - copy = { - ["+"] = require("vim.ui.clipboard.osc52").copy("+"), - ["*"] = require("vim.ui.clipboard.osc52").copy("*"), - }, - paste = { - ["+"] = require("vim.ui.clipboard.osc52").paste("+"), - ["*"] = require("vim.ui.clipboard.osc52").paste("*"), - }, - } - ''; - - opts = { - number = true; - relativenumber = true; - shiftwidth = 2; - tabstop = 2; - expandtab = true; - termguicolors = true; - signcolumn = "yes"; - scrolloff = 8; - }; - - # --- File explorer --- - plugins.neo-tree = { - enable = true; - settings.window.width = 30; - }; - - # --- Fuzzy finder: files, grep, buffers, LSP symbols --- - plugins.telescope = { - enable = true; - extensions.fzf-native.enable = true; - }; - - # --- Treesitter: syntax highlighting/parsing for your stack --- - plugins.treesitter = { - enable = true; - settings.ensure_installed = [ - "nix" "bash" "lua" "markdown" "json" "yaml" - "rust" "go" "gomod" "c" "cpp" "c_sharp" "python" - "javascript" "typescript" "tsx" "vue" "html" "css" "dockerfile" - ]; - }; - - # --- LSP: one server per language/toolchain you use --- - plugins.lsp = { - enable = true; - servers = { - nixd.enable = true; - bashls.enable = true; - rust_analyzer = { - enable = true; - installCargo = true; - installRustc = true; - }; - gopls.enable = true; - clangd.enable = true; # C / C++ - csharp_ls.enable = true; - pyright.enable = true; - ts_ls.enable = true; # JS/TS, React - volar.enable = true; # Vue - html.enable = true; - cssls.enable = true; - tailwindcss.enable = true; - jsonls.enable = true; - dockerls.enable = true; - docker_compose_language_service.enable = true; - }; - keymaps.lspBuf = { - "gd" = "definition"; - "gr" = "references"; - "K" = "hover"; - "rn" = "rename"; - "ca" = "code_action"; - }; - }; - - # --- Autocompletion --- - plugins.cmp = { - enable = true; - settings.sources = [ - { name = "nvim_lsp"; } - { name = "luasnip"; } - { name = "path"; } - { name = "buffer"; } - ]; - settings.snippet.expand = '' - function(args) - require("luasnip").lsp_expand(args.body) - end - ''; - settings.mapping = { - "" = '' - cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif require("luasnip").expand_or_jumpable() then - require("luasnip").expand_or_jump() - else - fallback() - end - end, { "i", "s" }) - ''; - "" = '' - cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif require("luasnip").jumpable(-1) then - require("luasnip").jump(-1) - else - fallback() - end - end, { "i", "s" }) - ''; - }; - }; - plugins.cmp-nvim-lsp.enable = true; - plugins.cmp_luasnip.enable = true; - plugins.cmp-path.enable = true; - plugins.cmp-buffer.enable = true; - - # --- Snippets --- - plugins.luasnip = { - enable = true; - fromVscode = [ { paths = "${pkgs.vimPlugins.friendly-snippets}"; } ]; - }; - - # --- Pairs and surrounding text --- - plugins.nvim-autopairs.enable = true; - plugins.nvim-surround.enable = true; - - # --- Format on save --- - plugins.conform-nvim = { - enable = true; - settings = { - format_on_save = { - lsp_fallback = true; - timeout_ms = 500; - }; - formatters_by_ft = { - rust = [ "rustfmt" ]; - go = [ "gofmt" ]; - c = [ "clang-format" ]; - cpp = [ "clang-format" ]; - python = [ "black" ]; - javascript = [ "prettier" ]; - typescript = [ "prettier" ]; - javascriptreact = [ "prettier" ]; - typescriptreact = [ "prettier" ]; - vue = [ "prettier" ]; - nix = [ "nixpkgs-fmt" ]; - }; - }; - }; - - # --- Git: gutter signs, hunk stage/reset, blame --- - plugins.gitsigns.enable = true; - - # --- Git: interactive status/commit/diff/blame --- - plugins.fugitive.enable = true; - - # --- Statusline --- - plugins.lualine.enable = true; - - # --- Discoverable keybindings while you're still learning --- - plugins.which-key.enable = true; - - # --- AI agent: CodeCompanion, curated natively in nixvim --- - # Configured to reuse your existing `claude`/`codex` CLI auth via ACP - # adapters instead of a separate Anthropic Console/OpenAI API key. - # - # Verified against https://codecompanion.olimorris.dev/configuration/adapters-acp - # (CodeCompanion >= v18.0.0, which is what's pinned by nixvim's nixpkgs as of - # 2026-08). Two things changed from an older/assumed layout: - # - the default-adapter key is `interactions.chat.adapter`, not - # `strategies.chat.adapter` (renamed in v18.0.0); - # - the built-in adapter name is `claude_code` (no `_acp` suffix) and - # lives under `adapters.acp.`. - # - # Neither adapter has a true zero-config mode that silently piggybacks on - # an already-logged-in CLI session: - # - codex: extends the built-in `codex` preset. `defaults.auth_method` - # accepts "api-key" | "chat-gpt" (confirmed against the docs above, - # not "chatgpt"/"openai-api-key"/"codex-api-key"). "chat-gpt" reuses - # your ChatGPT/Codex CLI login instead of an OPENAI_API_KEY. - # - claude_code: there's no oauth-personal equivalent. Run - # `claude setup-token` once (ties to your Pro/Max subscription rather - # than a Console API key) and save the result to - # ~/.config/codecompanion/claude-oauth-token (chmod 600, outside the - # nix store). It's read at runtime via the `cmd:` prefix below rather - # than embedded in this file. - plugins.codecompanion = { - enable = true; - settings = { - interactions.chat.adapter = "claude_code"; # switch to "codex" per-chat - interactions.inline.adapter = "claude_code"; - adapters.acp = { - opts.show_presets = false; - claude_code.__raw = '' - function() - return require("codecompanion.adapters").extend("claude_code", { - env = { - CLAUDE_CODE_OAUTH_TOKEN = "cmd:cat ~/.config/codecompanion/claude-oauth-token", - }, - }) - end - ''; - codex.__raw = '' - function() - return require("codecompanion.adapters").extend("codex", { - defaults = { - auth_method = "chat-gpt", - }, - }) - end - ''; - }; - adapters.http.opts.show_presets = false; - display.chat.window = { - layout = "vertical"; - position = "right"; - width = 0.4; - }; - }; - }; - - # --- Editor-level tooling only: formatters conform.nvim shells out to. - # Language toolchains themselves (cargo, go, dotnet-sdk, nodejs, - # a compiler, a python interpreter) come from your per-project - # nix-shell / flake devShell, not from here — launch nvim from - # inside that shell (`nix develop`, or nix-shell + direnv) so LSP - # servers resolve the right toolchain via PATH. - extraPackages = with pkgs; [ - python3Packages.black - prettier - nixpkgs-fmt - file - ripgrep - sqlite - ]; - - keymaps = [ - { mode = "n"; key = "e"; action = "Neotree toggle"; } - { mode = "n"; key = "ff"; action = "Telescope find_files"; } - { mode = "n"; key = "fg"; action = "Telescope live_grep"; } - { mode = "n"; key = "fb"; action = "Telescope buffers"; } - - # CodeCompanion - { mode = [ "n" "v" ]; key = "ac"; action = "CodeCompanionChat Toggle"; } - { mode = "v"; key = "aa"; action = "CodeCompanionChat Add"; } - { mode = "n"; key = "ai"; action = "CodeCompanion"; } # inline assistant - - # Fugitive - { mode = "n"; key = "gs"; action = "Git"; } # status - { mode = "n"; key = "gc"; action = "Git commit"; } # interactive commit - { mode = "n"; key = "gp"; action = "Git push"; } - { mode = "n"; key = "gl"; action = "Git pull"; } - { mode = "n"; key = "gd"; action = "Gvdiffsplit"; } # diff current file - ]; - }; -} diff --git a/hosts/miku-homelab/default.nix b/hosts/miku-homelab/default.nix index 135d8a9..13c8819 100644 --- a/hosts/miku-homelab/default.nix +++ b/hosts/miku-homelab/default.nix @@ -28,7 +28,6 @@ ../../home/emmatherock/deskflow.nix ../../home/emmatherock/gaming.nix ../../home/emmatherock/media.nix - ../../home/emmatherock/neovim.nix ../../home/emmatherock/packages.nix ../../home/emmatherock/plasma.nix ../../home/emmatherock/vscode.nix diff --git a/hosts/vps/default.nix b/hosts/vps/default.nix index 50209fa..5d6e39c 100644 --- a/hosts/vps/default.nix +++ b/hosts/vps/default.nix @@ -13,7 +13,6 @@ myHomeProfile.extraPrograms = [ ../../home/emmatherock/agents.nix - ../../home/emmatherock/neovim.nix ]; myNetworking = {