diff --git a/flake.nix b/flake.nix index 0a9b86f..2796168 100644 --- a/flake.nix +++ b/flake.nix @@ -96,6 +96,7 @@ package-contents = pkgs.callPackage ./nix/checks/openclaw-package-contents.nix { openclawGateway = packageSetStable.openclaw-gateway; }; + default-instance = pkgs.callPackage ./nix/checks/openclaw-default-instance.nix { }; config-validity = pkgs.callPackage ./nix/checks/openclaw-config-validity.nix { openclawGateway = packageSetStable.openclaw-gateway; }; @@ -120,7 +121,6 @@ { config-options = sourceChecks; source-checks = sourceChecks; - default-instance = pkgs.callPackage ./nix/checks/openclaw-default-instance.nix { }; hm-activation = import ./nix/checks/openclaw-hm-activation.nix { inherit pkgs home-manager; }; diff --git a/nix/checks/openclaw-default-instance.nix b/nix/checks/openclaw-default-instance.nix index ad62a83..5b08f06 100644 --- a/nix/checks/openclaw-default-instance.nix +++ b/nix/checks/openclaw-default-instance.nix @@ -103,8 +103,8 @@ let lib.file.mkOutOfStoreSymlink = path: path; programs.openclaw = { enable = true; - launchd.enable = false; - systemd.enable = true; + launchd.enable = pkgs.stdenv.hostPlatform.isDarwin; + systemd.enable = pkgs.stdenv.hostPlatform.isLinux; } // openclawConfig; }; @@ -135,10 +135,13 @@ let defaultEval = moduleEval { }; defaultConfig = builtins.fromJSON defaultEval.config.home.file.".openclaw/openclaw.json".text; - hasUnit = builtins.hasAttr "openclaw-gateway" defaultEval.config.systemd.user.services; + hasLinuxUnit = builtins.hasAttr "openclaw-gateway" defaultEval.config.systemd.user.services; + hasDarwinAgent = builtins.hasAttr "com.steipete.openclaw.gateway" defaultEval.config.launchd.agents; defaultCheck = builtins.deepSeq (requireNoAssertionFailures "default instance" defaultEval) ( - if !hasUnit then + if pkgs.stdenv.hostPlatform.isLinux && !hasLinuxUnit then throw "Default OpenClaw instance missing systemd.unitName." + else if pkgs.stdenv.hostPlatform.isDarwin && !hasDarwinAgent then + throw "Default OpenClaw instance missing launchd.label." else if (((defaultConfig.gateway or { }).mode or null) != "local") then throw "Default OpenClaw instance missing gateway.mode." else