diff --git a/home-modules/dev.nix b/home-modules/dev.nix index d8ee71a..3fa2672 100644 --- a/home-modules/dev.nix +++ b/home-modules/dev.nix @@ -47,12 +47,33 @@ nodejs_24 codex claude-code - opencode + ( + # Wrapping opencode to set the OPENCODE_ENABLE_EXA environment variable + runCommand "opencode" { + buildInputs = [ makeWrapper ]; + } '' + mkdir -p $out/bin + makeWrapper ${pkgs.opencode}/bin/opencode $out/bin/opencode \ + --set OPENCODE_ENABLE_EXA "1" + '' + ) winbox4 amdgpu_top dua ]; + # Inject the opencode-claude-auth plugin into the user's opencode.json without + # overwriting it — replaces any stale store path for this plugin and adds if absent. + home.activation.opencodeClaudeAuth = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + cfg="$HOME/.config/opencode/opencode.json" + mkdir -p "$(dirname "$cfg")" + [ -f "$cfg" ] || echo '{}' > "$cfg" + tmp=$(mktemp) + ${pkgs.jq}/bin/jq --arg path "file://${pkgs.opencode-claude-auth}" ' + .plugin = ((.plugin // []) | map(select(test("opencode-claude-auth") | not)) + [$path]) + ' "$cfg" > "$tmp" && mv "$tmp" "$cfg" + ''; + # SSH config programs.ssh = { enable = true; @@ -95,4 +116,4 @@ '' ); }; -} \ No newline at end of file +} diff --git a/overlays/pkgs.nix b/overlays/pkgs.nix index 4104b41..304a645 100644 --- a/overlays/pkgs.nix +++ b/overlays/pkgs.nix @@ -1,6 +1,7 @@ self: super: { ddccontrol = super.callPackage ../pkgs/ddccontrol {}; + opencode-claude-auth = super.callPackage ../pkgs/opencode-claude-auth {}; # Pin some kde packages to 6.3.1, 6.3.2 breaks thunderbolt # kdePackages = super.kdePackages.overrideScope(kdeFinal: kdePrev: { # kwin = kdePrev.kwin.overrideAttrs (prevAttrs: { diff --git a/pkgs/opencode-claude-auth/default.nix b/pkgs/opencode-claude-auth/default.nix new file mode 100644 index 0000000..b335b13 --- /dev/null +++ b/pkgs/opencode-claude-auth/default.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + pname = "opencode-claude-auth"; + version = "1.5.0"; + + src = fetchurl { + url = "https://registry.npmjs.org/opencode-claude-auth/-/opencode-claude-auth-1.5.0.tgz"; + hash = "sha512-5NSL+x++VTe2ZrFSznXKv7imiKObIBz0QXPuL+g1NAXAcdTGcbEbQBvvHZeIaSBNjmwpY2MR67Yez1f3LlPl7w=="; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p $out + cp -r ./ $out/ + ''; +}