Files
nixos/hosts/nb/modules/development/claude-code.nix
2025-11-29 22:42:09 +01:00

44 lines
2.0 KiB
Nix

{ 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
${node}/bin/npm install -g @musistudio/claude-code-router
fi
'';
# Disabled: chrome-devtools MCP spawns headless Chromium for every Claude session.
# For frontend projects, enable per-project with:
# claude mcp add --scope project chrome-devtools \
# -- npx -y chrome-devtools-mcp \
# --executablePath=${pkgs.ungoogled-chromium}/bin/chromium \
# --isolated=true --headless=true \
# --chromeArg=--ozone-platform=wayland \
# --chromeArg=--enable-features=UseOzonePlatform \
# --chromeArg=--force-device-scale-factor=1
#
# 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 --executablePath=${pkgs.ungoogled-chromium}/bin/chromium --isolated=true --headless=true --chromeArg=--ozone-platform=wayland --chromeArg=--enable-features=UseOzonePlatform --chromeArg=--force-device-scale-factor=1 || true
# fi
# '';
};
}