1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-12-03 16:39:46 +01:00

systemd: fully deprecate legacy switcher

This switches `systemd.user.startServices = true` to be the same as
`systemd.user.startServices = "sd-switch"`, previously it would use
the "legacy" method. It also introduces a warning that triggers if the
user explicitly have `systemd.user.startServices = "legacy"`.

See #5452
This commit is contained in:
Robert Helgesson 2024-08-13 08:22:36 +02:00
parent 25c12f0736
commit b18f3ebc40
No known key found for this signature in database
GPG key ID: 96E745BD17AA17ED

View file

@ -183,7 +183,7 @@ in {
default = "suggest";
type = with types;
either bool (enum [ "suggest" "legacy" "sd-switch" ]);
apply = p: if isBool p then if p then "legacy" else "suggest" else p;
apply = p: if isBool p then if p then "sd-switch" else "suggest" else p;
description = ''
Whether new or changed services that are wanted by active targets
should be started. Additionally, stop obsolete services from the
@ -196,17 +196,15 @@ in {
{command}`systemctl` commands to run. You will have to
manually run those commands after the switch.
`legacy` (or `true`)
`legacy`
: Use a Ruby script to, in a more robust fashion, determine the
necessary changes and automatically run the
{command}`systemctl` commands.
{command}`systemctl` commands. Note, this alternative will soon
be removed.
`sd-switch`
: Use sd-switch, a third party application, to perform the service
updates. This tool offers more features while having a small
closure size. Note, it requires a fully functional user D-Bus
session. Once tested and deemed sufficiently robust, this will
become the default.
`sd-switch` (or `true`)
: Use sd-switch, a tool that determines the necessary changes and
automatically apply them.
'';
};
@ -299,6 +297,12 @@ in {
message = "This module is only available on Linux.";
}];
warnings = lib.optional (cfg.startServices == "legacy") ''
Having 'systemd.user.startServices = "legacy"' is deprecated and will soon be removed.
Please change to 'systemd.user.startServices = true' to use the new systemd unit switcher (sd-switch).
'';
xdg.configFile = mkMerge [
(lib.listToAttrs ((buildServices "service" cfg.services)
++ (buildServices "slice" cfg.slices)