systemd: add more detail to user unit documentation

The current documentation does not provide guidance to users on how
systemd units are defined in Home Manager. A user may expect the
configuration to be similar to NixOS, when it actually differs.

Fixes #418
This commit is contained in:
Alex Brandt 2018-10-17 21:30:36 -07:00 committed by Robert Helgesson
parent 3b9b897af3
commit 7575e119d6
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

@ -55,6 +55,30 @@ let
merge = loc: foldl' (res: def: recursiveUpdate res def.value) {}; merge = loc: foldl' (res: def: recursiveUpdate res def.value) {};
}; };
unitDescription = type: ''
Definition of systemd per-user ${type} units. Attributes are
merged recursively.
</para><para>
Note that the attributes follow the capitalization and naming used
by systemd. More details can be found in
<citerefentry>
<refentrytitle>systemd.${type}</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry>.
'';
unitExample = type: literalExample ''
{
Unit = {
Description = "Example description";
};
${type} = {
};
}
'';
in in
{ {
@ -76,46 +100,36 @@ in
services = mkOption { services = mkOption {
default = {}; default = {};
type = attrsRecursivelyMerged; type = attrsRecursivelyMerged;
description = '' description = unitDescription "service";
Definition of systemd per-user service units. Attributes are example = unitExample "Service";
merged recursively.
'';
}; };
sockets = mkOption { sockets = mkOption {
default = {}; default = {};
type = attrsRecursivelyMerged; type = attrsRecursivelyMerged;
description = '' description = unitDescription "socket";
Definition of systemd per-user sockets. Attributes are example = unitExample "Socket";
merged recursively.
'';
}; };
targets = mkOption { targets = mkOption {
default = {}; default = {};
type = attrsRecursivelyMerged; type = attrsRecursivelyMerged;
description = '' description = unitDescription "target";
Definition of systemd per-user targets. Attributes are example = unitExample "Target";
merged recursively.
'';
}; };
timers = mkOption { timers = mkOption {
default = {}; default = {};
type = attrsRecursivelyMerged; type = attrsRecursivelyMerged;
description = '' description = unitDescription "timer";
Definition of systemd per-user timers. Attributes are merged example = unitExample "Timer";
recursively.
'';
}; };
paths = mkOption { paths = mkOption {
default = {}; default = {};
type = attrsRecursivelyMerged; type = attrsRecursivelyMerged;
description = '' description = unitDescription "path";
Definition of systemd per-user path units. Attributes are example = unitExample "Path";
merged recursively.
'';
}; };
startServices = mkOption { startServices = mkOption {