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) {};
};
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
{
@ -76,46 +100,36 @@ in
services = mkOption {
default = {};
type = attrsRecursivelyMerged;
description = ''
Definition of systemd per-user service units. Attributes are
merged recursively.
'';
description = unitDescription "service";
example = unitExample "Service";
};
sockets = mkOption {
default = {};
type = attrsRecursivelyMerged;
description = ''
Definition of systemd per-user sockets. Attributes are
merged recursively.
'';
description = unitDescription "socket";
example = unitExample "Socket";
};
targets = mkOption {
default = {};
type = attrsRecursivelyMerged;
description = ''
Definition of systemd per-user targets. Attributes are
merged recursively.
'';
description = unitDescription "target";
example = unitExample "Target";
};
timers = mkOption {
default = {};
type = attrsRecursivelyMerged;
description = ''
Definition of systemd per-user timers. Attributes are merged
recursively.
'';
description = unitDescription "timer";
example = unitExample "Timer";
};
paths = mkOption {
default = {};
type = attrsRecursivelyMerged;
description = ''
Definition of systemd per-user path units. Attributes are
merged recursively.
'';
description = unitDescription "path";
example = unitExample "Path";
};
startServices = mkOption {