bcachefs: Fix systemd dependencies (#422961)

Changed files
+9 -3
nixos
modules
tasks
filesystems
+9 -3
nixos/modules/tasks/filesystems/bcachefs.nix
···
deviceUnit = mkDeviceUnit device;
mountUnit = mkMountUnit (prefix + fs.mountPoint);
extractProperty =
-
prop: options: (map (lib.removePrefix "${prop}=") (builtins.filter (lib.hasPrefix prop) options));
normalizeUnits =
unit:
if lib.hasPrefix "/dev/" unit then
···
mkMountUnit unit
else
unit;
-
requiredUnits = map normalizeUnits (extractProperty "x-systemd.requires" fs.options);
-
wantedUnits = map normalizeUnits (extractProperty "x-systemd.wants" fs.options);
in
{
name = "unlock-bcachefs-${utils.escapeSystemdPath fs.mountPoint}";
···
bindsTo = [ deviceUnit ];
requires = requiredUnits;
wants = wantedUnits;
conflicts = [ "shutdown.target" ];
unitConfig.DefaultDependencies = false;
serviceConfig = {
···
deviceUnit = mkDeviceUnit device;
mountUnit = mkMountUnit (prefix + fs.mountPoint);
extractProperty =
+
prop: options: (map (lib.removePrefix prop) (builtins.filter (lib.hasPrefix prop) options));
normalizeUnits =
unit:
if lib.hasPrefix "/dev/" unit then
···
mkMountUnit unit
else
unit;
+
requiredUnits = map normalizeUnits (extractProperty "x-systemd.requires=" fs.options);
+
wantedUnits = map normalizeUnits (extractProperty "x-systemd.wants=" fs.options);
+
requiredMounts = extractProperty "x-systemd.requires-mounts-for=" fs.options;
+
wantedMounts = extractProperty "x-systemd.wants-mounts-for=" fs.options;
in
{
name = "unlock-bcachefs-${utils.escapeSystemdPath fs.mountPoint}";
···
bindsTo = [ deviceUnit ];
requires = requiredUnits;
wants = wantedUnits;
+
unitConfig = {
+
RequiresMountsFor = requiredMounts;
+
WantsMountsFor = wantedMounts;
+
};
conflicts = [ "shutdown.target" ];
unitConfig.DefaultDependencies = false;
serviceConfig = {