Преглед на файлове

feat: Add opencode.nvim integration

Zander Hawke преди 10 месеца
родител
ревизия
cf5d0e4c42
променени са 5 файла, в които са добавени 43 реда и са изтрити 0 реда
  1. 1 0
      home/features/nvim/default.nix
  2. 19 0
      home/features/nvim/opencode.nix
  3. 6 0
      overlays/default.nix
  4. 1 0
      packages/default.nix
  5. 16 0
      packages/opencode-nvim.nix

+ 1 - 0
home/features/nvim/default.nix

@@ -14,6 +14,7 @@ in
     ./copilot.nix # copilot plugin
     ./lsp.nix
     ./mini.nix # mini.nvim plugin
+    ./opencode.nix
     ./telescope.nix # fuzzy find everything
     ./treesitter.nix # treesitter support
     ./which-key.nix # keybinding helper

+ 19 - 0
home/features/nvim/opencode.nix

@@ -0,0 +1,19 @@
+{ pkgs, ... }:
+{
+  home.packages = with pkgs; [ unstable.opencode ];
+
+  programs.nixvim = {
+    plugins.snacks.enable = true;
+    plugins.snacks.settings.terminal.enabled = true;
+
+    extraPlugins = with pkgs; [ unstable.vimPlugins.opencode-nvim ];
+
+    keymaps = [
+      { key = "<leader>ot"; action = "<cmd>lua require('opencode').toggle()<CR>"; }
+      { key = "<leader>oa"; action = "<cmd>lua require('opencode').ask()<CR>"; mode = "n"; }
+      { key = "<leader>oa"; action = "<cmd>lua require('opencode').ask('@selection: ')<CR>"; mode = "v"; }
+      { key = "<leader>oe"; action = "<cmd>lua require('opencode').select_prompt()<CR>"; mode = [ "n" "v" ]; }
+      { key = "<leader>on"; action = "<cmd>lua require('opencode').command('session_new')<CR>"; }
+    ];
+  };
+}

+ 6 - 0
overlays/default.nix

@@ -21,6 +21,12 @@
       // {
         tmux-select-pane-no-wrap = prev.tmux-select-pane-no-wrap;
       };
+
+    vimPlugins =
+      prev.vimPlugins
+      // {
+        opencode-nvim = prev.opencode-nvim;
+      };
   };
 
   # When applied, the unstable nixpkgs set (declared in the flake inputs) will

+ 1 - 0
packages/default.nix

@@ -1,5 +1,6 @@
 { pkgs ? (import <nixpkgs>) { } }: {
   hello = pkgs.callPackage ./hello.nix { };
+  opencode-nvim = pkgs.callPackage ./opencode-nvim.nix { };
   photo-cli = pkgs.callPackage ./photo-cli.nix { };
   tmux-select-pane-no-wrap = pkgs.callPackage ./tmux-select-pane-no-wrap.nix { };
   tmux-sessionizer = pkgs.callPackage ./tmux-sessionizer.nix { };

+ 16 - 0
packages/opencode-nvim.nix

@@ -0,0 +1,16 @@
+{ fetchFromGitHub
+, vimUtils
+}:
+
+vimUtils.buildVimPlugin {
+  pname = "opencode.nvim";
+  version = "2025-08-08";
+  src = fetchFromGitHub {
+    owner = "NickvanDyke";
+    repo = "opencode.nvim";
+    rev = "b76199843f2fcdd9f66223595d43446c01f86984";
+    sha256 = "sha256-DolWUWcYauRFuyZWGMX1D/qzHk7u7ZvSD1UZ61xXDk0=";
+  };
+  meta.homepage = "https://github.com/NickvanDyke/opencode.nvim/";
+  meta.hydraPlatforms = [ ];
+}