This repository has no description
1.8 kB
57 lines
1{
2 pkgs,
3 lib,
4 config,
5 self,
6 ...
7}:
8let
9 inherit (config.users.users.mainUser) name home group;
10 wallpaperDir = "${home}/wallpaper";
11
12 wallpaper = self.packages.${pkgs.system}.wallpaper;
13in
14{
15 # Seed ~/wallpaper with the starter live wallpaper (pixel-art road/trees/
16 # sunset from moewalls, transcoded to 1080p30 without audio). `C` copies it
17 # once when missing, so the user can freely add or delete wallpapers
18 # afterwards without it reappearing.
19 systemd.tmpfiles.rules = [
20 "d ${wallpaperDir} 0755 ${name} ${group} -"
21 "C ${wallpaperDir}/road-trees-sunset-sky-pixel.mp4 0644 ${name} ${group} - ${./wallpapers/road-trees-sunset-sky-pixel.mp4}"
22 ];
23
24 # Live wallpaper: mpvpaper renders a random file from ~/wallpaper on the
25 # background layer. noctalia's own wallpaper is disabled (see the noctalia
26 # wrapper) so this shows through.
27 systemd.user.services.wallpaper = {
28 description = "Live desktop wallpaper (mpvpaper)";
29 partOf = [ "sway-session.target" ];
30 wantedBy = [ "sway-session.target" ];
31 after = [ "sway-session.target" ];
32 serviceConfig = {
33 Type = "simple";
34 ExecStart = lib.getExe wallpaper;
35 Restart = "on-failure";
36 RestartSec = 2;
37 };
38 };
39
40 # Rotate to a fresh random wallpaper once a day by restarting the service.
41 systemd.user.services.wallpaper-rotate = {
42 description = "Rotate the live desktop wallpaper";
43 serviceConfig = {
44 Type = "oneshot";
45 ExecStart = "${lib.getExe' pkgs.systemd "systemctl"} --user restart wallpaper.service";
46 };
47 };
48
49 systemd.user.timers.wallpaper-rotate = {
50 description = "Daily live wallpaper rotation";
51 wantedBy = [ "timers.target" ];
52 timerConfig = {
53 OnCalendar = "daily";
54 Persistent = true;
55 };
56 };
57}