systemd: sanitize unit derivation names

To allow a few special characters such as "@".

This is taken from

    c414e5bd08/nixos/modules/system/boot/systemd-lib.nix (L14)

(cherry picked from commit 74811679b7)
This commit is contained in:
Douglas Wilson 2019-02-19 07:10:04 +00:00 committed by Robert Helgesson
parent 8980e08240
commit ee1bfa0d92
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

@ -27,11 +27,17 @@ let
buildService = style: name: serviceCfg:
let
filename = "${name}.${style}";
pathSafeName = lib.replaceChars ["@" ":" "\\" "[" "]"]
["-" "-" "-" "" "" ]
filename;
# Needed because systemd derives unit names from the ultimate
# link target.
source = pkgs.writeTextDir filename (toSystemdIni serviceCfg)
+ "/" + filename;
source = pkgs.writeTextFile {
name = pathSafeName;
text = toSystemdIni serviceCfg;
destination = "/${filename}";
} + "/${filename}";
wantedBy = target:
{