{ pkgs, config, lib, ... }: let cfg = config.xyno.desktop.wpaperd; wpaperdConf = pkgs.writeText "wpaperd.conf" '' [default] path = "/home/${config.xyno.system.user.name}/Pictures/backgrounds" duration = "10m" sorting = "random" mode = "center" ''; in { options.xyno.desktop.wpaperd.enable = lib.mkEnableOption "enable wpaperd notification daemon"; options.xyno.desktop.wpaperd.wantedBy = lib.mkOption { type = lib.types.str; default = "niri.service"; }; options.xyno.desktop.wpaperd.package = lib.mkOption { type = lib.types.package; default = pkgs.wpaperd; }; config = lib.mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; systemd.user.services.wpaperd = { unitConfig.PartOf = "graphical-session.target"; unitConfig.After = "graphical-session.target"; unitConfig.Requisite = "graphical-session.target"; serviceConfig.Restart = "on-failure"; wantedBy = [ cfg.wantedBy ]; script = "${cfg.package}/bin/wpaperd -c ${wpaperdConf}"; restartTriggers = [wpaperdConf]; }; }; }