diff --git a/flake.lock b/flake.lock index bc5a405..e6e8ab7 100644 --- a/flake.lock +++ b/flake.lock @@ -202,11 +202,11 @@ ] }, "locked": { - "lastModified": 1773796797, - "narHash": "sha256-/wlvKw9ztX3ePhwHiKEa9e3hQl85QehHtqXFa1mDOpE=", + "lastModified": 1773969361, + "narHash": "sha256-SrcN2XRc+u/YGVS/C5UqLTIgBcFtXbFqWuAhq2VnryM=", "owner": "AvengeMedia", "repo": "dms-plugin-registry", - "rev": "dcb3908dac1abde08ed2ff3fafd88a700d4b46fd", + "rev": "72d0c4135b5a73d5452d1508360e0498bebccdda", "type": "github" }, "original": { @@ -374,11 +374,11 @@ ] }, "locked": { - "lastModified": 1773681845, - "narHash": "sha256-o8hrZrigP0JYcwnglCp8Zi8jQafWsxbDtRRPzuVwFxY=", + "lastModified": 1773963144, + "narHash": "sha256-WzBOBfSay3GYilUfKaUa1Mbf8/jtuAiJIedx7fWuIX4=", "owner": "nix-community", "repo": "home-manager", - "rev": "0759e0e137305bc9d0c52c204c6d8dffe6f601a6", + "rev": "a91b3ea73a765614d90360580b689c48102d1d33", "type": "github" }, "original": { @@ -448,11 +448,11 @@ ] }, "locked": { - "lastModified": 1773832159, - "narHash": "sha256-3/NopFIsqGECDQ/qN0yyOspqqhPRiYlIdgBtt3rPS9w=", + "lastModified": 1773979202, + "narHash": "sha256-cFe/HoD9XFkCQALm+y1kTOBvKGQA8p0YsBxLpWCsZAw=", "owner": "numtide", "repo": "llm-agents.nix", - "rev": "adb2db566d35cded281fea2c0583b6f5b8efa557", + "rev": "124f2bbdf02a73235a74bc353fc9c706a3b0e015", "type": "github" }, "original": { @@ -537,11 +537,11 @@ ] }, "locked": { - "lastModified": 1773809319, - "narHash": "sha256-ZuMZEuxqWneGaK+HAXz50JyCmtFo0neo6mp6F2NWj24=", + "lastModified": 1773889880, + "narHash": "sha256-cu23CGP+mD2wKPKaoGM7evZ1dXfjd+cjryqqqx2HloE=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "c4ee62058cd37d7b842c3b081917f792efee9082", + "rev": "63767d4572eb2e3da5e68f68de77d8f2cdeca8dd", "type": "github" }, "original": { @@ -640,11 +640,11 @@ ] }, "locked": { - "lastModified": 1773801820, - "narHash": "sha256-l4pB6hCC5K0ygw63q9T8uRiETCGlR14DL3nIwR16WvQ=", + "lastModified": 1773974133, + "narHash": "sha256-YNmOHKQM4pHAw0Kjn+0cCoV06VkUjG7JCWqjO8OA+lc=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "741d7a97cedfe976743166c44f4b58f3ec1df72d", + "rev": "2776c24f60b202f872703f820d322f1cd0747b4f", "type": "github" }, "original": { @@ -689,11 +689,11 @@ ] }, "locked": { - "lastModified": 1773794880, - "narHash": "sha256-Ta6qtvm9JFGvJBQMCi/MtWsC7JT0fgUFQxgFg0hqQoo=", + "lastModified": 1773994878, + "narHash": "sha256-vA7ZUmJ2CvW0utYZaJoAPrUbK4JzykBXu1lcBNc67AQ=", "owner": "kaylorben", "repo": "nixcord", - "rev": "6a503af15e1cb2b0b2e4acdc7c7e8f25ab6251a2", + "rev": "148c632f3ba29e32695225631a1e7d255136f749", "type": "github" }, "original": { @@ -749,11 +749,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1773705440, - "narHash": "sha256-HrGloA/j2MflqpYyyq2xeOYCQTk4eUIR7LfqXkW8bec=", - "rev": "48652e9d5aea46e555b3df87354280d4f29cd3a3", + "lastModified": 1773814637, + "narHash": "sha256-mzgnItm0yK1PcmhALIWc5v2iZCuYjKdgKJ+vo7XhbHY=", + "rev": "fea3b367d61c1a6592bc47c72f40a9f3e6a53e96", "type": "tarball", - "url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.7702.48652e9d5aea/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.7766.fea3b367d61c/nixexprs.tar.xz" }, "original": { "type": "tarball", @@ -762,11 +762,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1773734432, - "narHash": "sha256-RUGFJsZyqsAuWCL9eESO8PCv4qiBx6/h+GDyHbFAmLs=", - "rev": "cda48547b432e8d3b18b4180ba07473762ec8558", + "lastModified": 1773821835, + "narHash": "sha256-p0tPeJJbg+PKaH741F1CWa9Bf9vf6g02HK9V/g4TkHo=", + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre964459.cda48547b432/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre964859.b40629efe5d6/nixexprs.tar.xz" }, "original": { "type": "tarball", @@ -783,11 +783,11 @@ ] }, "locked": { - "lastModified": 1773831707, - "narHash": "sha256-By+BDtmJTKpvZYEQndmIdvDvpk2fjW1/eG5cj8bT0J4=", + "lastModified": 1774007207, + "narHash": "sha256-zbNHZpVMc6tkNhb6WPkoyz7d5K6n1EKATEwd9YTqo0o=", "owner": "nix-community", "repo": "NUR", - "rev": "afc57b7040ac8dde32ce922c8da264809f55fb43", + "rev": "2c357bd5d64ffcd4a33b4ff83b0ecf86f7ee871c", "type": "github" }, "original": { @@ -917,11 +917,11 @@ ] }, "locked": { - "lastModified": 1773698643, - "narHash": "sha256-VCiDjE8kNs8uCAK73Ezk1r3fFuc4JepvW07YFqaN968=", + "lastModified": 1773889674, + "narHash": "sha256-+ycaiVAk3MEshJTg35cBTUa0MizGiS+bgpYw/f8ohkg=", "owner": "Mic92", "repo": "sops-nix", - "rev": "8237de83e8200d16fe0c4467b02a1c608ff28044", + "rev": "29b6519f3e0780452bca0ac0be4584f04ac16cc5", "type": "github" }, "original": { diff --git a/nix/flake/flake-modules.nix b/nix/flake/flake-modules.nix index da53bdd..879cce3 100644 --- a/nix/flake/flake-modules.nix +++ b/nix/flake/flake-modules.nix @@ -1,8 +1,8 @@ { - self, + config, ... }: { - flake.flakeModules = self.modules.flake; + flake.flakeModules = config.flake.modules.flake; } diff --git a/nix/flake/home-configurations.nix b/nix/flake/home-configurations.nix index f9cc3b3..2e52623 100644 --- a/nix/flake/home-configurations.nix +++ b/nix/flake/home-configurations.nix @@ -1,4 +1,5 @@ { + config, inputs, self, withSystem, @@ -36,7 +37,7 @@ let inputs.sops-nix.homeModules.sops inputs.stylix.homeModules.stylix - self.homeModules.default + config.flake.homeModules.default modulesPath ]; @@ -53,6 +54,6 @@ in flake.homeConfigurations = { ilkecan = mkHomeConfiguration "x86_64-linux" "${self}/nix/users/ilkecan" - self.nixosConfigurations.mephistopheles.config; + config.flake.nixosConfigurations.mephistopheles.config; }; } diff --git a/nix/flake/home-modules.nix b/nix/flake/home-modules.nix index aaa2e15..6030524 100644 --- a/nix/flake/home-modules.nix +++ b/nix/flake/home-modules.nix @@ -1,8 +1,8 @@ { - self, + config, ... }: { - flake.homeModules = self.modules.homeManager; + flake.homeModules = config.flake.modules.homeManager; } diff --git a/nix/flake/nixos-configurations.nix b/nix/flake/nixos-configurations.nix index a71798c..f3e374b 100644 --- a/nix/flake/nixos-configurations.nix +++ b/nix/flake/nixos-configurations.nix @@ -1,4 +1,5 @@ { + config, inputs, self, withSystem, @@ -30,7 +31,7 @@ let inputs.nixos-cli.nixosModules.nixos-cli inputs.sops-nix.nixosModules.sops - self.nixosModules.default + config.flake.nixosModules.default modulesPath ]; @@ -51,6 +52,6 @@ in flake.nixosConfigurations = { mephistopheles = mkNixosConfiguration "x86_64-linux" "${self}/nix/hosts/mephistopheles" - self.homeConfigurations.ilkecan.config; + config.flake.homeConfigurations.ilkecan.config; }; } diff --git a/nix/flake/nixos-modules.nix b/nix/flake/nixos-modules.nix index bd96557..7db00bf 100644 --- a/nix/flake/nixos-modules.nix +++ b/nix/flake/nixos-modules.nix @@ -1,8 +1,8 @@ { - self, + config, ... }: { - flake.nixosModules = self.modules.nixos; + flake.nixosModules = config.flake.modules.nixos; } diff --git a/nix/flake/per-system/apps.nix b/nix/flake/per-system/apps.nix new file mode 100644 index 0000000..4999d4d --- /dev/null +++ b/nix/flake/per-system/apps.nix @@ -0,0 +1,37 @@ +{ + lib, + ... +}: + +let + inherit (lib.my) + importTree + ; + + inherit (lib) + getExe + removeSuffix + ; + + mkApp = drv: { + type = "app"; + program = getExe drv; + inherit (drv) meta; + }; +in +{ + perSystem = + { config, pkgs, ... }: + { + apps = + importTree { + root = ./apps; + depth = 1; + importFn = x: mkApp (import x { inherit pkgs; }); + normalizeNameFn = removeSuffix ".nix"; + } + // { + default = config.apps.ci; + }; + }; +} diff --git a/nix/flake/per-system/apps/default.nix b/nix/flake/per-system/apps/default.nix deleted file mode 100644 index c3a3ee3..0000000 --- a/nix/flake/per-system/apps/default.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - lib, - ... -}: - -let - inherit (lib) getExe; - - mkApp = drv: { - type = "app"; - program = getExe drv; - inherit (drv) meta; - }; -in -{ - perSystem = - { self', pkgs, ... }: - { - apps = { - ci = mkApp (import ./ci.nix { inherit pkgs; }); - default = self'.apps.ci; - }; - }; -} diff --git a/nix/flake/per-system/checks.nix b/nix/flake/per-system/checks.nix new file mode 100644 index 0000000..da39649 --- /dev/null +++ b/nix/flake/per-system/checks.nix @@ -0,0 +1,27 @@ +{ + lib, + self, + ... +}: + +let + inherit (lib) + removeSuffix + ; + + inherit (lib.my) + importTree + ; +in +{ + perSystem = + { pkgs, ... }: + { + checks = importTree { + root = ./checks; + depth = 1; + importFn = x: import x { inherit pkgs self; }; + normalizeNameFn = removeSuffix ".nix"; + }; + }; +} diff --git a/nix/flake/per-system/checks/default.nix b/nix/flake/per-system/checks/default.nix deleted file mode 100644 index 7cad9d2..0000000 --- a/nix/flake/per-system/checks/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - self, - ... -}: - -{ - perSystem = - { pkgs, ... }: - let - args = { inherit pkgs self; }; - mkCheck = file: import file args; - in - { - checks = { - trufflehog = mkCheck ./trufflehog.nix; - }; - }; -} diff --git a/nix/flake/per-system/pre-commit.nix b/nix/flake/per-system/pre-commit.nix index 2ca9758..419942a 100644 --- a/nix/flake/per-system/pre-commit.nix +++ b/nix/flake/per-system/pre-commit.nix @@ -17,6 +17,7 @@ nil.enable = true; nixf-diagnose.enable = true; nixfmt.enable = true; + pre-commit-hook-ensure-sops.enable = true; ripsecrets.enable = true; }; }; diff --git a/nix/modules/home-manager/serena-mcp-dynamic-context-arg.nix b/nix/modules/home-manager/serena-mcp-dynamic-context-arg.nix new file mode 100644 index 0000000..1f51189 --- /dev/null +++ b/nix/modules/home-manager/serena-mcp-dynamic-context-arg.nix @@ -0,0 +1,55 @@ +{ + config, + lib, + ... +}: + +let + inherit (lib) + mkIf + replaceElemAt + ; + + inherit (lib.lists) + findFirstIndex + ; + + mcpCfg = config.programs.mcp; + serenaCfg = mcpCfg.servers.serena; + + contextArgIndex = findFirstIndex (x: x == "--context") null serenaCfg.args; + noContextArg = contextArgIndex == null; + contextArgValueIndex = contextArgIndex + 1; + mkSerenaArgs = + context: + if noContextArg then + serenaCfg.args + ++ [ + "--context" + context + ] + else + replaceElemAt serenaCfg.args contextArgValueIndex context; +in +{ + config = mkIf mcpCfg.enable { + programs = { + claude-code = mkIf config.programs.claude-code.enableMcpIntegration { + mcpServers.serena = { + inherit (serenaCfg) command; + args = mkSerenaArgs "claude"; + enabled = true; + type = "stdio"; + }; + }; + + codex = mkIf config.programs.codex.enableMcpIntegration { + settings.mcp_servers.serena = { + inherit (serenaCfg) command; + args = mkSerenaArgs "codex"; + enabled = true; + }; + }; + }; + }; +} diff --git a/nix/users/ilkecan/llm/mcp.nix b/nix/users/ilkecan/llm/mcp.nix index 5771b7b..43da6ad 100644 --- a/nix/users/ilkecan/llm/mcp.nix +++ b/nix/users/ilkecan/llm/mcp.nix @@ -18,7 +18,6 @@ serena = { enable = true; args = [ "--project-from-cwd" ]; - context = "claude-code"; enableWebDashboard = true; }; terraform.enable = true; diff --git a/nix/users/ilkecan/nix/optnix.nix b/nix/users/ilkecan/nix/optnix.nix index 8e78428..785e5b5 100644 --- a/nix/users/ilkecan/nix/optnix.nix +++ b/nix/users/ilkecan/nix/optnix.nix @@ -16,28 +16,28 @@ let inherit (inputs'.optnix.mkLib pkgs) mkOptionsList; - mkFlakePartsScope = self': { + mkFlakePartsScope = flake: { description = "flake-parts top level configuration"; options-list-file = mkOptionsList { - inherit (self'.debug) options; + inherit (flake.debug) options; excluded = [ "perSystem" ]; }; - evaluator = "nix eval ${self'}#debug.config.{{ .Option }}"; + evaluator = "nix eval ${flake}#debug.config.{{ .Option }}"; }; - mkFlakePartsPerSystemScope = self': system: { + mkFlakePartsPerSystemScope = flake: system: { description = "flake-parts `perSystem` configuration for `${system}`"; - options-list-file = mkOptionsList { inherit (self'.allSystems.${system}.debug) options; }; - evaluator = "nix eval ${self'}#allSystems.${system}.debug.config.{{ .Option }}"; + options-list-file = mkOptionsList { inherit (flake.allSystems.${system}.debug) options; }; + evaluator = "nix eval ${flake}#allSystems.${system}.debug.config.{{ .Option }}"; }; - mkHomeManagerScope = name: value: { + mkHomeManagerScope = flake: name: value: { description = "Home Manager configuration for `${name}`"; options-list-file = mkOptionsList { inherit (value) options; }; - evaluator = "nix eval ${self'}#homeConfigurations.${name}.config.{{ .Option }}"; + evaluator = "nix eval ${flake}#homeConfigurations.${name}.config.{{ .Option }}"; }; - mkNixosScope = name: value: { + mkNixosScope = flake: name: value: { description = "NixOS configuration for `${name}`"; options-list-file = mkOptionsList { inherit (value) options; }; - evaluator = "nix eval ${self'}#nixosConfigurations.${name}.config.{{ .Option }}"; + evaluator = "nix eval ${flake}#nixosConfigurations.${name}.config.{{ .Option }}"; }; in { @@ -56,8 +56,8 @@ in (genAttrs' self'.debug.systems ( x: nameValuePair "flake-parts.${x}" (mkFlakePartsPerSystemScope self' x) )) - (mapAttrs mkHomeManagerScope self'.homeConfigurations) - (mapAttrs mkNixosScope self'.nixosConfigurations) + (mapAttrs (mkHomeManagerScope self') self'.homeConfigurations) + (mapAttrs (mkNixosScope self') self'.nixosConfigurations) ]; }; };