summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2021-07-19 15:22:50 +0100
committerGitHub <noreply@github.com>2021-07-19 15:22:50 +0100
commit58128d690dce9e88936be24c314b0f66875550a7 (patch)
tree8c8e3e0f328ddfb4972196190d4459ebacdb61d4 /nixos
parentd53846e29ef3d614b73ff749c0dab659d8991062 (diff)
parentefbd199ffbb5a09a7400e3adcef7552d263c9668 (diff)
downloadnixpkgs-58128d690dce9e88936be24c314b0f66875550a7.tar
nixpkgs-58128d690dce9e88936be24c314b0f66875550a7.tar.gz
nixpkgs-58128d690dce9e88936be24c314b0f66875550a7.tar.bz2
nixpkgs-58128d690dce9e88936be24c314b0f66875550a7.tar.lz
nixpkgs-58128d690dce9e88936be24c314b0f66875550a7.tar.xz
nixpkgs-58128d690dce9e88936be24c314b0f66875550a7.tar.zst
nixpkgs-58128d690dce9e88936be24c314b0f66875550a7.zip
Merge pull request #130633 from zimbatm/k3s-configPath
nixos/k3s: add configPath option
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/cluster/k3s/default.nix24
1 files changed, 14 insertions, 10 deletions
diff --git a/nixos/modules/services/cluster/k3s/default.nix b/nixos/modules/services/cluster/k3s/default.nix
index d0fb8cc5098..e5c51441690 100644
--- a/nixos/modules/services/cluster/k3s/default.nix
+++ b/nixos/modules/services/cluster/k3s/default.nix
@@ -67,6 +67,12 @@ in
       default = false;
       description = "Only run the server. This option only makes sense for a server.";
     };
+
+    configPath = mkOption {
+      type = types.nullOr types.path;
+      default = null;
+      description = "File path containing the k3s YAML config. This is useful when the config is generated (for example on boot).";
+    };
   };
 
   # implementation
@@ -74,12 +80,12 @@ in
   config = mkIf cfg.enable {
     assertions = [
       {
-        assertion = cfg.role == "agent" -> cfg.serverAddr != "";
-        message = "serverAddr should be set if role is 'agent'";
+        assertion = cfg.role == "agent" -> (cfg.configPath != null || cfg.serverAddr != "");
+        message = "serverAddr or configPath (with 'server' key) should be set if role is 'agent'";
       }
       {
-        assertion = cfg.role == "agent" -> cfg.token != "" || cfg.tokenFile != null;
-        message = "token or tokenFile should be set if role is 'agent'";
+        assertion = cfg.role == "agent" -> cfg.configPath != null || cfg.tokenFile != null || cfg.token != "";
+        message = "token or tokenFile or configPath (with 'token' or 'token-file' keys) should be set if role is 'agent'";
       }
     ];
 
@@ -115,12 +121,10 @@ in
             "${cfg.package}/bin/k3s ${cfg.role}"
           ] ++ (optional cfg.docker "--docker")
           ++ (optional cfg.disableAgent "--disable-agent")
-          ++ (optional (cfg.role == "agent") "--server ${cfg.serverAddr} ${
-            if cfg.tokenFile != null then
-              "--token-file ${cfg.tokenFile}"
-            else
-              "--token ${cfg.token}"
-          }")
+          ++ (optional (cfg.serverAddr != "") "--server ${cfg.serverAddr}")
+          ++ (optional (cfg.token != "") "--token ${cfg.token}")
+          ++ (optional (cfg.tokenFile != null) "--token-file ${cfg.tokenFile}")
+          ++ (optional (cfg.configPath != null) "--config ${cfg.configPath}")
           ++ [ cfg.extraFlags ]
         );
       };