about summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2023-10-08 10:16:06 +0200
committerVladimír Čunát <v@cunat.cz>2023-10-08 10:16:06 +0200
commit2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1 (patch)
tree6ca3a236a2670838fbe1af22ccff02445a45c751 /nixos/modules
parent20fa19f5292240cc7aae26d0aed125ddc3f95248 (diff)
parent6b66e2fc9cd0f27771e12ef87cea6c40938c0840 (diff)
downloadnixlib-2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1.tar
nixlib-2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1.tar.gz
nixlib-2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1.tar.bz2
nixlib-2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1.tar.lz
nixlib-2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1.tar.xz
nixlib-2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1.tar.zst
nixlib-2ec92384d7f81b6a6cfd5d9c9285af48c3f4fad1.zip
Merge #258361: nixos/knot: compatibility with 23.05 config
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/networking/knot.nix16
1 files changed, 10 insertions, 6 deletions
diff --git a/nixos/modules/services/networking/knot.nix b/nixos/modules/services/networking/knot.nix
index d98c0ce25bf4..4f6ac945cf97 100644
--- a/nixos/modules/services/networking/knot.nix
+++ b/nixos/modules/services/networking/knot.nix
@@ -103,11 +103,15 @@ let
   in result;
 
   configFile = if cfg.settingsFile != null then
-    assert cfg.settings == {} && cfg.keyFiles == [];
+    # Note: with extraConfig, the 23.05 compat code did include keyFiles from settingsFile.
+    assert cfg.settings == {} && (cfg.keyFiles == [] || cfg.extraConfig != null);
     cfg.settingsFile
-  else pkgs.writeTextFile {
+  else
+    mkConfigFile yamlConfig;
+
+  mkConfigFile = configString: pkgs.writeTextFile {
     name = "knot.conf";
-    text = (concatMapStringsSep "\n" (file: "include: ${file}") cfg.keyFiles) + "\n" + yamlConfig;
+    text = (concatMapStringsSep "\n" (file: "include: ${file}") cfg.keyFiles) + "\n" + configString;
     # TODO: maybe we could do some checks even when private keys complicate this?
     checkPhase = lib.optionalString (cfg.keyFiles == []) ''
       ${cfg.package}/bin/knotc --config=$out conf-check
@@ -174,7 +178,7 @@ in {
         description = lib.mdDoc ''
           As alternative to ``settings``, you can provide whole configuration
           directly in the almost-YAML format of Knot DNS.
-          You might want to utilize ``writeTextFile`` for this.
+          You might want to utilize ``pkgs.writeText "knot.conf" "longConfigString"`` for this.
         '';
       };
 
@@ -189,9 +193,9 @@ in {
     };
   };
   imports = [
-    # Compatibility with NixOS 23.05.  At least partial, as it fails assert if used with keyFiles.
+    # Compatibility with NixOS 23.05.
     (mkChangedOptionModule [ "services" "knot" "extraConfig" ] [ "services" "knot" "settingsFile" ]
-      (config: pkgs.writeText "knot.conf" config.services.knot.extraConfig)
+      (config: mkConfigFile config.services.knot.extraConfig)
     )
   ];