diff --git a/nixos/modules/services/misc/bees.nix b/nixos/modules/services/misc/bees.nix index b16552a8eecd..2815bb035cb7 100644 --- a/nixos/modules/services/misc/bees.nix +++ b/nixos/modules/services/misc/bees.nix @@ -97,42 +97,29 @@ in ''; }; }; - config = { + config = lib.mkIf (cfg.filesystems != { }) { + systemd.packages = [ pkgs.bees ]; systemd.services = lib.mapAttrs' ( name: fs: lib.nameValuePair "beesd@${name}" { - description = "Block-level BTRFS deduplication for %i"; - after = [ "sysinit.target" ]; - - serviceConfig = - let - configOpts = [ - fs.spec - "verbosity=${toString fs.verbosity}" - "idxSizeMB=${toString fs.hashTableSizeMB}" - "workDir=${fs.workDir}" + overrideStrategy = "asDropin"; + serviceConfig = { + ExecStart = + let + configOpts = [ + fs.spec + "verbosity=${toString fs.verbosity}" + "idxSizeMB=${toString fs.hashTableSizeMB}" + "workDir=${fs.workDir}" + ]; + configOptsStr = lib.escapeShellArgs configOpts; + in + [ + "" + "${pkgs.bees}/bin/bees-service-wrapper run ${configOptsStr} -- --no-timestamps ${lib.escapeShellArgs fs.extraOptions}" ]; - configOptsStr = lib.escapeShellArgs configOpts; - in - { - # Values from https://github.com/Zygo/bees/blob/v0.6.5/scripts/beesd@.service.in - ExecStart = "${pkgs.bees}/bin/bees-service-wrapper run ${configOptsStr} -- --no-timestamps ${lib.escapeShellArgs fs.extraOptions}"; - ExecStopPost = "${pkgs.bees}/bin/bees-service-wrapper cleanup ${configOptsStr}"; - CPUAccounting = true; - CPUSchedulingPolicy = "batch"; - CPUWeight = 12; - IOSchedulingClass = "idle"; - IOSchedulingPriority = 7; - IOWeight = 10; - KillMode = "control-group"; - KillSignal = "SIGTERM"; - MemoryAccounting = true; - Nice = 19; - Restart = "on-abnormal"; - StartupCPUWeight = 25; - StartupIOWeight = 25; - SyslogIdentifier = "beesd"; # would otherwise be "bees-service-wrapper" - }; + SyslogIdentifier = "beesd"; # would otherwise be "bees-service-wrapper" + }; unitConfig.RequiresMountsFor = lib.mkIf (lib.hasPrefix "/" fs.spec) fs.spec; wantedBy = [ "multi-user.target" ]; }