diff --git a/nix/hosts.nix b/nix/hosts.nix index b245074d..2e4f063a 100644 --- a/nix/hosts.nix +++ b/nix/hosts.nix @@ -44,6 +44,7 @@ in modules = [ cfg.modules.darwin.user-primary cfg.modules.darwin.sudo-env-wrapper + cfg.modules.darwin.claude-code ]; }; }; diff --git a/nix/modules/claude-code.nix b/nix/modules/claude-code.nix new file mode 100644 index 00000000..3a5314e9 --- /dev/null +++ b/nix/modules/claude-code.nix @@ -0,0 +1,8 @@ +{ + config.flake.allowedUnfreePackages = [ "claude-code" ]; + config.flake.modules.darwin.claude-code = + { pkgs, ... }: + { + home-manager.sharedModules = [ { home.packages = [ pkgs.claude-code ]; } ]; + }; +} diff --git a/nix/modules/pi-agent.nix b/nix/modules/pi-agent.nix index 44759390..c49400a5 100644 --- a/nix/modules/pi-agent.nix +++ b/nix/modules/pi-agent.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ config, lib, ... }: let cfg = config.flake; osModule = { @@ -11,6 +11,9 @@ in nixos.pi-agent = osModule; homeManager.pi-agent = { pkgs, ... }: + let + package = pkgs.pi-coding-agent; + in { home = { file.".pi/agent/AGENTS.md".text = '' @@ -31,7 +34,25 @@ in - `nix flake metadata --json | jq '.locks.nodes | keys'` - `nix eval --impure --raw --expr '(builtins.getFlake (toString ./.)).inputs..outPath'` ''; - packages = [ pkgs.pi-coding-agent ]; + file.".pi/agent/settings.json".text = builtins.toJSON { + lastChangelogVersion = lib.getVersion package; + packages = [ "npm:@vanillagreen/pi-claude-bridge" ]; + defaultProvider = "claude-bridge"; + defaultModel = "claude-sonnet-4-6"; + }; + packages = [ + (pkgs.symlinkJoin { + inherit (package) meta; + name = "${lib.getName package}-wrapped-${lib.getVersion package}"; + paths = [ package ]; + preferLocalBuild = true; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/pi \ + --suffix PATH : ${lib.makeBinPath [ pkgs.nodejs_22 ]} + ''; + }) + ]; }; }; };