clanCore: init machine_id.nix with clan.core.machine.{id,diskId}

This commit is contained in:
Qubasa
2024-09-06 18:05:40 +02:00
parent 0d83a59d8e
commit b16a53f510
28 changed files with 219 additions and 48 deletions

View File

@@ -18,5 +18,6 @@
./vm.nix
./wayland-proxy-virtwl.nix
./zerotier
./machine_id.nix
];
}

View File

@@ -0,0 +1,58 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.clan.core.machine;
in
{
options.clan.core.machine = {
id = lib.mkOption {
type = lib.types.nullOr lib.types.str;
description = "The machine id";
};
idShort = lib.mkOption {
readOnly = true;
type = lib.types.nullOr lib.types.str;
description = "The short machine id";
};
diskId = lib.mkOption {
type = lib.types.nullOr lib.types.str;
description = "The disk id";
};
};
config = {
clan.core.machine.id =
lib.mkDefault
config.clan.core.facts.services."machine_id".public."machine_id".value;
clan.core.machine.idShort = if (cfg.id != null) then (lib.substring 0 8 cfg.id) else null;
clan.core.machine.diskId =
lib.mkDefault
config.clan.core.facts.services."machine_id".public."diskId".value;
clan.core.facts.services."machine_id" = {
public."machine_id" = { };
public."diskId" = { };
generator.path = [
pkgs.coreutils
];
generator.script = ''
machine_uuid=$(dd if=/dev/urandom bs=1 count=16 2>/dev/null | od -An -tx1 | tr -d ' \n')
disk_uuid=$(dd if=/dev/urandom bs=1 count=3 2>/dev/null | od -An -tx1 | tr -d ' \n')
echo -n "$machine_uuid" > "$facts"/machine_id
echo -n "$disk_uuid" > "$facts"/diskId
'';
};
networking.hostId = lib.mkIf (cfg.id != null) (lib.mkDefault cfg.idShort);
boot.kernelParams = lib.mkIf (cfg.id != null) [
''systemd.machine_id=${cfg.id}''
];
};
}