refactor(flake): split assembly by concept

This commit is contained in:
2026-08-28 11:01:15 -04:00
parent fc834168aa
commit d0b00ada96
11 changed files with 117 additions and 81 deletions

View File

@@ -3,22 +3,12 @@
lib,
self,
specialArgs,
bridgeName,
moduleFiles,
registryAssembly,
dotfilesLib,
}:
let
inherit (lib) escapeShellArg mapAttrsToList;
deriveMac =
name:
let
hash = builtins.hashString "sha256" name;
octet = i: builtins.substring (i * 2) 2 hash;
in
lib.concatStringsSep ":" ([ "02" ] ++ map octet [ 0 1 2 3 4 ]);
guest =
mkGuest =
{
name,
interior ? { },
@@ -59,13 +49,13 @@ let
createdMounts = lib.filterAttrs (_guestPath: m: m.create != null) cfg.mounts;
mountCreateScript = lib.concatStringsSep "\n" (
mapAttrsToList (
lib.mapAttrsToList (
_guestPath: m:
let
create = m.create;
in
''
${config.system.path}/bin/install -d -o ${escapeShellArg (toString create.owner)} -g ${escapeShellArg create.group} -m ${escapeShellArg create.mode} ${escapeShellArg m.hostPath}
${config.system.path}/bin/install -d -o ${lib.escapeShellArg (toString create.owner)} -g ${lib.escapeShellArg create.group} -m ${lib.escapeShellArg create.mode} ${lib.escapeShellArg m.hostPath}
''
) createdMounts
);
@@ -113,7 +103,7 @@ let
};
mac = lib.mkOption {
type = lib.types.str;
default = deriveMac name;
default = dotfilesLib.deriveMac name;
defaultText = lib.literalMD "a stable address derived from the guest's namespace path";
example = "bc:24:11:00:00:01";
description = ''
@@ -316,7 +306,7 @@ let
}
(lib.mkIf networked (
let
bridgeDevice = "sys-subsystem-net-devices-${lib.replaceStrings [ "-" ] [ "\\x2d" ] (bridgeName cfg.vlan)}.device";
bridgeDevice = "sys-subsystem-net-devices-${lib.replaceStrings [ "-" ] [ "\\x2d" ] (dotfilesLib.bridgeName cfg.vlan)}.device";
in
{
after = [ bridgeDevice ];
@@ -329,7 +319,7 @@ let
containers.${machineName} = lib.mkIf (cfg.backend == "container") {
autoStart = cfg.autoStart;
privateNetwork = lib.mkDefault true;
hostBridge = lib.mkIf networked (bridgeName cfg.vlan);
hostBridge = lib.mkIf networked (dotfilesLib.bridgeName cfg.vlan);
privateUsers = lib.mkDefault "no";
additionalCapabilities = lib.optionals cfg.nesting [ "CAP_NET_ADMIN" ];
allowedDevices = lib.optionals cfg.nesting [
@@ -366,5 +356,5 @@ let
};
in
{
inherit deriveMac guest;
inherit mkGuest;
}