clanModules/iwd: Migrate from facts to vars

This commit is contained in:
a-kenji
2025-04-29 10:08:31 +02:00
parent 5446923485
commit 287cd4b42a

View File

@@ -7,7 +7,7 @@
let let
cfg = config.clan.iwd; cfg = config.clan.iwd;
secret_path = ssid: config.clan.core.facts.services."iwd.${ssid}".secret."iwd.${ssid}".path; secret_path = ssid: config.clan.core.vars.generators."iwd.${ssid}".files."iwd.${ssid}".path;
secret_generator = name: value: { secret_generator = name: value: {
name = "iwd.${value.ssid}"; name = "iwd.${value.ssid}";
value = value =
@@ -15,17 +15,20 @@ let
secret_name = "iwd.${value.ssid}"; secret_name = "iwd.${value.ssid}";
in in
{ {
secret.${secret_name} = { }; prompts.${secret_name} = {
generator.prompt = "Wifi password for '${value.ssid}'"; description = "Wifi password for '${value.ssid}'";
persist = true;
};
migrateFact = secret_name;
# ref. man iwd.network # ref. man iwd.network
generator.script = '' script = ''
config=" config="
[Settings] [Settings]
AutoConnect=${if value.AutoConnect then "true" else "false"} AutoConnect=${if value.AutoConnect then "true" else "false"}
[Security] [Security]
Passphrase=$(echo -e "$prompt_value" | ${lib.getExe pkgs.gnused} "s=\\\=\\\\\\\=g;s=\t=\\\t=g;s=\r=\\\r=g;s=^ =\\\s=") Passphrase=$(echo -e "$prompt_value/${secret_name}" | ${lib.getExe pkgs.gnused} "s=\\\=\\\\\\\=g;s=\t=\\\t=g;s=\r=\\\r=g;s=^ =\\\s=")
" "
echo "$config" > "$secrets/${secret_name}" echo "$config" > "$out/${secret_name}"
''; '';
}; };
}; };
@@ -72,7 +75,7 @@ in
_: value: "C /var/lib/iwd/${value.ssid}.psk 0600 root root - ${secret_path value.ssid}" _: value: "C /var/lib/iwd/${value.ssid}.psk 0600 root root - ${secret_path value.ssid}"
) cfg.networks; ) cfg.networks;
clan.core.facts.services = lib.mapAttrs' secret_generator cfg.networks; clan.core.vars.generators = lib.mapAttrs' secret_generator cfg.networks;
# TODO: restart the iwd.service if something changes # TODO: restart the iwd.service if something changes
}) })