nixos/doc: document defining basic systemd services

This commit is contained in:
Arnout Engelen 2025-06-20 11:45:07 +02:00
parent 3e3afe5174
commit aba83e0a5d
No known key found for this signature in database
GPG Key ID: 061107B0F74A6DAA
2 changed files with 25 additions and 1 deletions

View File

@ -121,7 +121,28 @@ Hence [garbage collection](#sec-nix-gc) will remove that file and you
will wind up with a broken symlink in your systemd configuration, which
in turn will not make the service / timer start on login.
## Template units {#sect-nixos-systemd-template-units}
### Defining custom services {#sect-nixos-systemd-custom-services}
You can define services by adding them to `systemd.services`:
```nix
systemd.services.myservice = {
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
before = [ "multi-user.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "...";
};
};
```
If you want to specify a multi-line script for `ExecStart`,
you may want to use `pkgs.writeShellScript`.
### Template units {#sect-nixos-systemd-template-units}
systemd supports templated units where a base unit can be started multiple
times with a different parameter. The syntax to accomplish this is

View File

@ -1532,6 +1532,9 @@
"sect-nixos-systemd-nixos": [
"index.html#sect-nixos-systemd-nixos"
],
"sect-nixos-systemd-custom-services": [
"index.html#sect-nixos-systemd-custom-services"
],
"sect-nixos-systemd-template-units": [
"index.html#sect-nixos-systemd-template-units"
],