diff --git a/nixos/modules/tasks/filesystems/bcachefs.nix b/nixos/modules/tasks/filesystems/bcachefs.nix index d9c93ebadadc..695db26c6d02 100644 --- a/nixos/modules/tasks/filesystems/bcachefs.nix +++ b/nixos/modules/tasks/filesystems/bcachefs.nix @@ -111,7 +111,7 @@ let deviceUnit = mkDeviceUnit device; mountUnit = mkMountUnit (prefix + fs.mountPoint); extractProperty = - prop: options: (map (lib.removePrefix "${prop}=") (builtins.filter (lib.hasPrefix prop) options)); + prop: options: (map (lib.removePrefix prop) (builtins.filter (lib.hasPrefix prop) options)); normalizeUnits = unit: if lib.hasPrefix "/dev/" unit then @@ -120,8 +120,10 @@ let mkMountUnit unit else unit; - requiredUnits = map normalizeUnits (extractProperty "x-systemd.requires" fs.options); - wantedUnits = map normalizeUnits (extractProperty "x-systemd.wants" fs.options); + 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}"; @@ -136,6 +138,10 @@ let bindsTo = [ deviceUnit ]; requires = requiredUnits; wants = wantedUnits; + unitConfig = { + RequiresMountsFor = requiredMounts; + WantsMountsFor = wantedMounts; + }; conflicts = [ "shutdown.target" ]; unitConfig.DefaultDependencies = false; serviceConfig = {