{ lib, pkgs, config, ... }: { options.zpha.programs.wpaperd.enable = lib.mkEnableOption "wpaperd"; config = lib.mkIf config.zpha.programs.wpaperd.enable { users.users.zaphyra.maid = { packages = [ pkgs.wpaperd ]; file.xdg_config = { "wpaperd/wallpaper.toml".source = pkgs.writers.writeTOML "wpaperd-config.toml" { default = { duration = "30m"; mode = "center"; sorting = "ascending"; transition.bounce = { }; }; any.path = pkgs.symlinkJoin { name = "backgrounds"; paths = with pkgs.nixos-artwork.wallpapers; [ binary-black binary-blue binary-red nineish nineish-solarized-dark nineish-dark-gray nineish-catppuccin-mocha-alt nineish-catppuccin-mocha nineish-catppuccin-frappe-alt nineish-catppuccin-frappe nineish-catppuccin-macchiato-alt nineish-catppuccin-macchiato simple-red simple-dark-gray simple-blue dracula gradient-grey ]; stripPrefix = "/share/backgrounds/nixos"; }; }; }; systemd.services.wpaperd = { wantedBy = [ "niri-session.target" ]; partOf = [ "niri-session.target" ]; after = [ "niri-session.target" ]; environment = lib.mkForce { }; unitConfig.ConditionEnvironment = "WAYLAND_DISPLAY"; serviceConfig = { ExecStart = lib.getExe pkgs.wpaperd; Restart = "on-failure"; }; }; }; zpha.programs.niri.settings.binds = { "Mod+Home".spawn = [ (lib.getExe' pkgs.wpaperd "wpaperctl") "next" ]; }; }; }