nixpkgs/nixos/lib/systemd-types.nix
Silvan Mosberger 4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00

257 lines
4.9 KiB
Nix

{
lib,
systemdUtils,
pkgs,
}:
let
inherit (systemdUtils.lib)
automountConfig
makeUnit
mountConfig
pathConfig
sliceConfig
socketConfig
stage1ServiceConfig
stage2ServiceConfig
targetConfig
timerConfig
unitConfig
;
inherit (systemdUtils.unitOptions)
concreteUnitOptions
stage1AutomountOptions
stage1CommonUnitOptions
stage1MountOptions
stage1PathOptions
stage1ServiceOptions
stage1SliceOptions
stage1SocketOptions
stage1TimerOptions
stage2AutomountOptions
stage2CommonUnitOptions
stage2MountOptions
stage2PathOptions
stage2ServiceOptions
stage2SliceOptions
stage2SocketOptions
stage2TimerOptions
;
inherit (lib)
mkDefault
mkDerivedConfig
mkEnableOption
mkIf
mkOption
;
inherit (lib.types)
attrsOf
coercedTo
enum
lines
listOf
nullOr
oneOf
package
path
singleLineStr
submodule
;
initrdStorePathModule =
{ config, ... }:
{
options = {
enable = (mkEnableOption "copying of this file and symlinking it") // {
default = true;
};
target = mkOption {
type = nullOr path;
description = ''
Path of the symlink.
'';
default = null;
};
source = mkOption {
type = path;
description = "Path of the source file.";
};
dlopen = {
usePriority = mkOption {
type = enum [
"required"
"recommended"
"suggested"
];
default = "recommended";
description = ''
Priority of dlopen ELF notes to include. "required" is
minimal, "recommended" includes "required", and
"suggested" includes "recommended".
See: https://systemd.io/ELF_DLOPEN_METADATA/
'';
};
features = mkOption {
type = listOf singleLineStr;
default = [ ];
description = ''
Features to enable via dlopen ELF notes. These will be in
addition to anything included via 'usePriority',
regardless of their priority.
'';
};
};
};
};
in
{
units = attrsOf (
submodule (
{ name, config, ... }:
{
options = concreteUnitOptions;
config = {
name = mkDefault name;
unit = mkDefault (makeUnit name config);
};
}
)
);
services = attrsOf (submodule [
stage2ServiceOptions
unitConfig
stage2ServiceConfig
]);
initrdServices = attrsOf (submodule [
stage1ServiceOptions
unitConfig
stage1ServiceConfig
]);
targets = attrsOf (submodule [
stage2CommonUnitOptions
unitConfig
targetConfig
]);
initrdTargets = attrsOf (submodule [
stage1CommonUnitOptions
unitConfig
targetConfig
]);
sockets = attrsOf (submodule [
stage2SocketOptions
unitConfig
socketConfig
]);
initrdSockets = attrsOf (submodule [
stage1SocketOptions
unitConfig
socketConfig
]);
timers = attrsOf (submodule [
stage2TimerOptions
unitConfig
timerConfig
]);
initrdTimers = attrsOf (submodule [
stage1TimerOptions
unitConfig
timerConfig
]);
paths = attrsOf (submodule [
stage2PathOptions
unitConfig
pathConfig
]);
initrdPaths = attrsOf (submodule [
stage1PathOptions
unitConfig
pathConfig
]);
slices = attrsOf (submodule [
stage2SliceOptions
unitConfig
sliceConfig
]);
initrdSlices = attrsOf (submodule [
stage1SliceOptions
unitConfig
sliceConfig
]);
mounts = listOf (submodule [
stage2MountOptions
unitConfig
mountConfig
]);
initrdMounts = listOf (submodule [
stage1MountOptions
unitConfig
mountConfig
]);
automounts = listOf (submodule [
stage2AutomountOptions
unitConfig
automountConfig
]);
initrdAutomounts = attrsOf (submodule [
stage1AutomountOptions
unitConfig
automountConfig
]);
initrdStorePath = listOf (
coercedTo (oneOf [
singleLineStr
package
]) (source: { inherit source; }) (submodule initrdStorePathModule)
);
initrdContents = attrsOf (
submodule (
{
config,
options,
name,
...
}:
{
imports = [ initrdStorePathModule ];
options = {
text = mkOption {
default = null;
type = nullOr lines;
description = "Text of the file.";
};
};
config = {
target = mkDefault name;
source = mkIf (config.text != null) (
let
name' = "initrd-" + baseNameOf name;
in
mkDerivedConfig options.text (pkgs.writeText name')
);
};
}
)
);
}