programs.claude-code: avoid watching the Nix store
This commit is contained in:
committed by
Robert Helgesson
parent
a02190edf9
commit
56ccab8918
@@ -233,20 +233,28 @@ in
|
||||
|
||||
file = lib.mkMerge [
|
||||
(lib.mkIf (cfg.settings != { } || cfg.marketplaces != { } || disabledMcpServerNames != [ ]) {
|
||||
"${cfg.configDir}/settings.json".source = jsonFormat.generate "claude-code-settings.json" (
|
||||
cfg.settings
|
||||
// {
|
||||
"$schema" = "https://json.schemastore.org/claude-code-settings.json";
|
||||
}
|
||||
// lib.optionalAttrs (cfg.marketplaces != { }) {
|
||||
extraKnownMarketplaces = lib.mapAttrs mkMarketplaceEntry cfg.marketplaces;
|
||||
}
|
||||
// lib.optionalAttrs (disabledMcpServerNames != [ ]) {
|
||||
disabledMcpjsonServers = lib.unique (
|
||||
(cfg.settings.disabledMcpjsonServers or [ ]) ++ disabledMcpServerNames
|
||||
"${cfg.configDir}/settings.json".source =
|
||||
let
|
||||
settingsFile = jsonFormat.generate "claude-code-settings.json" (
|
||||
cfg.settings
|
||||
// {
|
||||
"$schema" = "https://json.schemastore.org/claude-code-settings.json";
|
||||
}
|
||||
// lib.optionalAttrs (cfg.marketplaces != { }) {
|
||||
extraKnownMarketplaces = lib.mapAttrs mkMarketplaceEntry cfg.marketplaces;
|
||||
}
|
||||
// lib.optionalAttrs (disabledMcpServerNames != [ ]) {
|
||||
disabledMcpjsonServers = lib.unique (
|
||||
(cfg.settings.disabledMcpjsonServers or [ ]) ++ disabledMcpServerNames
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
settingsDirectory = pkgs.runCommand "claude-code-settings-directory" { } ''
|
||||
install -Dm444 ${settingsFile} "$out/settings.json"
|
||||
'';
|
||||
in
|
||||
"${settingsDirectory}/settings.json";
|
||||
})
|
||||
(
|
||||
if lib.isPath cfg.context then
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
programs.claude-code = {
|
||||
enable = true;
|
||||
@@ -117,6 +118,19 @@
|
||||
};
|
||||
};
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion =
|
||||
let
|
||||
settingsSource =
|
||||
toString
|
||||
config.home.file."${config.programs.claude-code.configDir}/settings.json".source;
|
||||
in
|
||||
dirOf settingsSource != builtins.storeDir && baseNameOf settingsSource == "settings.json";
|
||||
message = "Claude Code settings source must be inside a dedicated store directory";
|
||||
}
|
||||
];
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.claude/settings.json
|
||||
assertFileContent home-files/.claude/settings.json ${./expected-settings.json}
|
||||
|
||||
Reference in New Issue
Block a user