{ liminix , lib , svc }: { partlabel, mountpoint, options, fstype }: let inherit (liminix.services) longrun oneshot; device = "/dev/disk/by-partlabel/${partlabel}"; name = "mount.${lib.strings.sanitizeDerivationName (lib.escapeURL mountpoint)}"; options_string = if options == [] then "" else "-o ${lib.concatStringsSep "," options}"; controller = svc.uevent-rule.build { serviceName = name; symlink = device; terms = { partname = partlabel; devtype = "partition"; }; }; in oneshot { inherit name; timeout-up = 3600; up = "mount -t ${fstype} ${options_string} ${device} ${mountpoint}"; down = "umount ${mountpoint}"; inherit controller; }