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)
This commit is contained in:
Douglas Wilson 2019-02-19 07:10:04 +00:00 committed by Robert Helgesson
parent 93f5fcae1e
commit 74811679b7
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

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