diff --git a/hosts/nb/modules/development/claude-code.nix b/hosts/nb/modules/development/claude-code.nix new file mode 100644 index 0000000..dfea9b7 --- /dev/null +++ b/hosts/nb/modules/development/claude-code.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: +let + user = "dominik"; + home = "/home/${user}"; + npmPrefix = "${home}/.npm-global"; + node = pkgs.nodejs; # or pkgs.nodejs_20 +in { + home-manager.users.dominik = { config, lib, pkgs, ... }: { + home.packages = with pkgs; [ + ]; + + home.activation.installClaudeCode = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + export PATH=${node}/bin:${pkgs.gnutar}/bin:${pkgs.gzip}/bin:${pkgs.unzip}/bin:${pkgs.curl}/bin:$PATH + mkdir -p ${npmPrefix} + if [ ! -x "${npmPrefix}/bin/claude" ]; then + echo "Installing @anthropic-ai/claude-code globally..." + # --global uses prefix from ~/.npmrc; PATH has node for postinstall + ${node}/bin/npm install -g @anthropic-ai/claude-code + fi + ''; + + home.activation.addChromeDevtoolsMCP = lib.hm.dag.entryAfter [ "installClaudeCli" ] '' + # Add via STDIO transport: Claude spawns `npx -y chrome-devtools-mcp ...` + # Browser must be running with remote debugging on 127.0.0.1:9222. + if ${config.home.homeDirectory}/.nix-profile/bin/claude mcp add --help >/dev/null 2>&1; then + ${config.home.homeDirectory}/.nix-profile/bin/claude mcp add --scope user chrome-devtools \ + -- npx -y chrome-devtools-mcp --browserUrl=http://127.0.0.1:9222 || true + fi + ''; + }; + +}