Files
dotfiles/modules/home/wallpaper/default.nix
T
2025-10-29 21:13:44 +09:00

76 lines
1.9 KiB
Nix

{ pkgs, lib, ... }:
let
walls = pkgs.fetchFromGitHub {
owner = "orangci";
repo = "walls-catppuccin-mocha";
rev = "40912e6418737e93b59a38bcf189270cbf26656d";
hash = "sha256-1QR3J+wgLVNjucPSVELv0FicNt+jM2KPLU5ubBfxjHI=";
};
swwwScript = ./swww.sh;
in {
home.file."wallpapers" = {
source = walls;
recursive = true;
};
home.packages = with pkgs; [
swww
];
home.file.".config/swww/swww.sh" = {
source = swwwScript;
executable = true;
};
systemd.user.services."swww-daemon" = {
Unit = {
Description = "SWWW daemon";
After = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
Type = "simple";
Environment = [
"PATH=${lib.makeBinPath [ pkgs.swww pkgs.coreutils pkgs.findutils pkgs.bash ]}:$PATH"
];
ExecStart = "${pkgs.bash}/bin/bash -lc 'if swww query >/dev/null 2>&1; then exit 0; else exec swww-daemon -f xrgb; fi'";
Restart = "on-failure";
RestartSec = 2;
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
systemd.user.services."change-wallpaper" = {
Unit = {
Description = "Set/rotate wallpaper via swww";
After = [ "swww-daemon.service" "graphical-session.target" ];
};
Service = {
Type = "oneshot";
Environment = [
"PATH=${lib.makeBinPath [ pkgs.swww pkgs.coreutils pkgs.findutils pkgs.bash ]}:$PATH"
];
ExecStart = "${pkgs.bash}/bin/bash -lc '$HOME/.config/swww/swww.sh'";
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
systemd.user.timers."change-wallpaper" = {
Unit = {
Description = "Timer to change wallpapers every hour";
};
Timer = {
OnCalendar = "hourly";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
}