2022-04-24 19:47:28 +01:00
|
|
|
{ lib, systemdUtils, pkgs }:
|
2022-03-19 08:02:39 +00:00
|
|
|
|
|
|
|
with systemdUtils.lib;
|
|
|
|
with systemdUtils.unitOptions;
|
|
|
|
with lib;
|
|
|
|
|
|
|
|
rec {
|
|
|
|
units = with types;
|
|
|
|
attrsOf (submodule ({ name, config, ... }: {
|
|
|
|
options = concreteUnitOptions;
|
|
|
|
config = { unit = mkDefault (systemdUtils.lib.makeUnit name config); };
|
|
|
|
}));
|
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
services = with types; attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
|
|
|
|
initrdServices = with types; attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
|
2022-03-19 08:02:39 +00:00
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
targets = with types; attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
|
|
|
|
initrdTargets = with types; attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
|
2022-03-19 08:02:39 +00:00
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
sockets = with types; attrsOf (submodule [ stage2SocketOptions unitConfig ]);
|
|
|
|
initrdSockets = with types; attrsOf (submodule [ stage1SocketOptions unitConfig ]);
|
2022-03-19 08:02:39 +00:00
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
timers = with types; attrsOf (submodule [ stage2TimerOptions unitConfig ]);
|
|
|
|
initrdTimers = with types; attrsOf (submodule [ stage1TimerOptions unitConfig ]);
|
2022-03-19 08:02:39 +00:00
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
paths = with types; attrsOf (submodule [ stage2PathOptions unitConfig ]);
|
|
|
|
initrdPaths = with types; attrsOf (submodule [ stage1PathOptions unitConfig ]);
|
2022-03-19 08:02:39 +00:00
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
slices = with types; attrsOf (submodule [ stage2SliceOptions unitConfig ]);
|
|
|
|
initrdSlices = with types; attrsOf (submodule [ stage1SliceOptions unitConfig ]);
|
2022-03-19 08:02:39 +00:00
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
mounts = with types; listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
|
|
|
|
initrdMounts = with types; listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
|
2022-03-19 08:02:39 +00:00
|
|
|
|
2022-04-01 09:44:08 +01:00
|
|
|
automounts = with types; listOf (submodule [ stage2AutomountOptions unitConfig automountConfig ]);
|
|
|
|
initrdAutomounts = with types; attrsOf (submodule [ stage1AutomountOptions unitConfig automountConfig ]);
|
2022-04-24 19:47:28 +01:00
|
|
|
|
|
|
|
initrdContents = types.attrsOf (types.submodule ({ config, options, name, ... }: {
|
|
|
|
options = {
|
2022-08-28 20:18:44 +01:00
|
|
|
enable = mkEnableOption (lib.mdDoc "copying of this file and symlinking it") // { default = true; };
|
2022-04-24 19:47:28 +01:00
|
|
|
|
|
|
|
target = mkOption {
|
|
|
|
type = types.path;
|
2022-08-28 20:18:44 +01:00
|
|
|
description = lib.mdDoc ''
|
2022-04-24 19:47:28 +01:00
|
|
|
Path of the symlink.
|
|
|
|
'';
|
|
|
|
default = name;
|
|
|
|
};
|
|
|
|
|
|
|
|
text = mkOption {
|
|
|
|
default = null;
|
|
|
|
type = types.nullOr types.lines;
|
2022-08-28 20:18:44 +01:00
|
|
|
description = lib.mdDoc "Text of the file.";
|
2022-04-24 19:47:28 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
source = mkOption {
|
|
|
|
type = types.path;
|
2022-08-28 20:18:44 +01:00
|
|
|
description = lib.mdDoc "Path of the source file.";
|
2022-04-24 19:47:28 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = {
|
|
|
|
source = mkIf (config.text != null) (
|
|
|
|
let name' = "initrd-" + baseNameOf name;
|
|
|
|
in mkDerivedConfig options.text (pkgs.writeText name')
|
|
|
|
);
|
|
|
|
};
|
|
|
|
}));
|
2022-03-19 08:02:39 +00:00
|
|
|
}
|