52 lines
1.5 KiB
Nix
52 lines
1.5 KiB
Nix
|
{ pkgs, ... }:
|
||
|
let
|
||
|
swwwMorning = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_morning.jpg}";
|
||
|
swwwDay = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_day.jpg}";
|
||
|
swwwEvening = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_evening.jpg}";
|
||
|
swwwNight = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_night.jpg}";
|
||
|
dynamicWallpaper = pkgs.writeShellScriptBin "dynamic-wallpaper" ''
|
||
|
swww query || exit 1 # Check SWWW daemon is actually running
|
||
|
case $(date +%H) in
|
||
|
06 | 07 | 08) # Morning
|
||
|
${swwwMorning}
|
||
|
;;
|
||
|
09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17) # Day
|
||
|
${swwwDay}
|
||
|
;;
|
||
|
18 | 19 | 20) # Evening
|
||
|
${swwwEvening}
|
||
|
;;
|
||
|
21 | 22 | 23 | 00 | 01 | 02 | 03 | 04 | 05) # Night
|
||
|
${swwwNight}
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
'';
|
||
|
in
|
||
|
{
|
||
|
systemd.user = {
|
||
|
timers.dynamic-wallpaper = {
|
||
|
Install.WantedBy = [ "timers.target" ];
|
||
|
Timer = {
|
||
|
OnCalendar = "*:0";
|
||
|
Unit = "dynamic-wallpaper.service";
|
||
|
};
|
||
|
};
|
||
|
services.dynamic-wallpaper = {
|
||
|
Unit = {
|
||
|
Description = "Change wallpaper based on time of day";
|
||
|
Wants = [ "graphical-session.target" ];
|
||
|
After = [ "graphical-session.target" ];
|
||
|
};
|
||
|
Service = {
|
||
|
Type = "oneshot";
|
||
|
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
home.packages = [
|
||
|
pkgs.swww
|
||
|
dynamicWallpaper
|
||
|
];
|
||
|
}
|