{ config, lib, pkgs, ... }: let cfg = config.services.swww; in { meta.maintainers = with lib.hm.maintainers; [ hey2022 ]; options.services.swww = { enable = lib.mkEnableOption "swww, a Solution to your Wayland Wallpaper Woes"; package = lib.mkPackageOption pkgs "swww" { }; extraArgs = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; example = [ "--no-cache" "--layer" "bottom" ]; description = '' Options given to swww-daemon when the service is run. See `swww-daemon --help` for more information. ''; }; }; config = lib.mkIf cfg.enable { assertions = [ (lib.hm.assertions.assertPlatform "services.swww" pkgs lib.platforms.linux) ]; home.packages = [ cfg.package ]; systemd.user.services.swww = { Install = { WantedBy = [ config.wayland.systemd.target ]; }; Unit = { ConditionEnvironment = "WAYLAND_DISPLAY"; Description = "swww-daemon"; After = [ config.wayland.systemd.target ]; PartOf = [ config.wayland.systemd.target ]; }; Service = { ExecStart = "${lib.getExe' cfg.package "swww-daemon"} ${lib.escapeShellArgs cfg.extraArgs}"; Restart = "always"; RestartSec = 10; }; }; }; }