Commit 9ba528f

HPCesia <me@hpcesia.com>
2026-08-01 06:29:41
Migrate LLM Agents config to Hjem
1 parent 6e004fd
Changed files (3)
modules
modules/develop/agents/crush.nix
@@ -8,33 +8,34 @@
       ];
     };
 
-    homeManager = {
-      pkgs,
+    hjem = {
       config,
+      pkgs,
       ...
-    }: let
-      crushCfg = {
-        "$schema" = "${pkgs.llm-agents.crush}/share/crush/schema.json";
-        lsp = {
-          nix = {
-            command = "nixd";
+    }: {
+      packages = [pkgs.llm-agents.crush];
+
+      xdg.config.files."crush/crush.json" = {
+        generator = (pkgs.formats.json {}).generate "crush-config.json";
+        value = {
+          "$schema" = "${pkgs.llm-agents.crush}/share/crush/schema.json";
+          lsp = {
+            nix = {
+              command = "nixd";
+            };
           };
-        };
-        mcp = {
-          deepwiki = {
-            type = "http";
-            url = "https://mcp.deepwiki.com/mcp";
+          mcp = {
+            deepwiki = {
+              type = "http";
+              url = "https://mcp.deepwiki.com/mcp";
+            };
           };
         };
       };
-    in {
-      home.packages = [pkgs.llm-agents.crush];
 
-      xdg.configFile."crush/crush.json".text = builtins.toJSON crushCfg;
-
-      systemd.user.tmpfiles.rules = [
-        "L+ ${config.xdg.configHome}/crush/skills - - - - ${config.xdg.configHome}/agents/skills"
-      ];
+      xdg.config.files."crush/skills" = {
+        source = "${config.xdg.config.directory}/agents/skills";
+      };
     };
   };
 }
modules/develop/agents/default.nix
@@ -1,4 +1,8 @@
-{inputs, ...}: {
+{
+  inputs,
+  lib,
+  ...
+}: {
   flake-file.inputs.llm-agents = {
     url = "github:numtide/llm-agents.nix";
     inputs.flake-parts.follows = "flake-parts";
@@ -15,46 +19,16 @@
         )
       ];
     };
-    homeManager = {
-      pkgs,
-      lib,
-      ...
-    }: let
+    hjem = {pkgs, ...}: let
       skills = {
         grilling = ./skills/grilling;
         jujutsu = ./skills/jujutsu;
         open-websearch = "${pkgs.open-websearch.src}/skills/open-websearch";
       };
     in {
-      nixpkgs.overlays = [
-        (
-          final: prev: {
-            llm-agents = inputs.llm-agents.packages.${pkgs.stdenv.hostPlatform.system};
-          }
-        )
-      ];
+      packages = [pkgs.open-websearch];
 
-      home.packages = with pkgs; [
-        open-websearch
-      ];
-
-      xdg.configFile =
-        lib.mapAttrs' (
-          name: content:
-            if lib.hm.strings.isPathLike content && lib.pathIsDirectory content
-            then
-              lib.nameValuePair "agents/skills/${name}" {
-                source = content;
-                recursive = true;
-              }
-            else
-              lib.nameValuePair "agents/skills/${name}/SKILL.md" (
-                if lib.hm.strings.isPathLike content
-                then {source = content;}
-                else {text = content;}
-              )
-        )
-        skills;
+      xdg.config.files = lib.mapAttrs' (n: v: lib.nameValuePair "agents/skills/${n}" {source = v;}) skills;
     };
   };
 }
modules/develop/agents/opencode.nix
@@ -15,15 +15,16 @@
       ];
     };
 
-    homeManager = {
-      pkgs,
+    hjem = {
       config,
+      pkgs,
       ...
     }: {
-      programs.opencode = {
-        enable = true;
-        package = pkgs.llm-agents.opencode;
-        settings = {
+      packages = [pkgs.llm-agents.opencode];
+
+      xdg.config.files."opencode/opencode.json" = {
+        generator = (pkgs.formats.json {}).generate "opencode-config.json";
+        value = {
           permission = {
             external_directory = {
               "/nix/store/**" = "allow";
@@ -56,19 +57,21 @@
         };
       };
 
-      systemd.user.tmpfiles.rules = [
-        "L+ ${config.xdg.configHome}/opencode/skills - - - - ${config.xdg.configHome}/agents/skills"
-      ];
+      xdg.config.files."opencode/tui.json" = {
+        generator = (pkgs.formats.json {}).generate "opencode-config-tui.json";
+        value = {
+        };
+      };
+
+      xdg.config.files."opencode/skills" = {
+        source = "${config.xdg.config.directory}/agents/skills";
+      };
     };
   };
 
   den.aspects.develop.opencode.themes = {
     catppuccin = {
-      homeManager = {
-        programs.opencode = {
-          tui.theme = "catppuccin";
-        };
-      };
+      hjem.xdg.config.files."opencode/tui.json".value.theme = "catppuccin";
     };
   };
 }