Files
nixos/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix
T
2026-03-28 22:30:20 +00:00

59 lines
1.8 KiB
Nix

{ config, pkgs, lib, flakeRoot, ... }:
let
username = config.defaultUser or "henrov";
homeDir = "/home/${username}";
wallpaperDst = "${homeDir}/Wallpapers";
scriptSrc = "${flakeRoot}/assets/traveldroid/Wallpapers/set-wallpapers-per-workspace.sh";
in
{
############################
# Packages
############################
environment.systemPackages = with pkgs; [
swww
waypaper
jq
];
############################
# Copy Wallpapers and Script
############################
systemd.user.services.copyWallpapers = {
description = "Copy Wallpapers and script to home";
after = [ "network.target" ];
serviceConfig.Type = "oneshot";
serviceConfig.ExecStart = ''
mkdir -p ${wallpaperDst}
cp -r ${flakeRoot}/assets/traveldroid/Wallpapers/* ${wallpaperDst}/
chown -R ${username}:${username} ${wallpaperDst}
chmod +x ${wallpaperDst}/set-wallpapers-per-workspace.sh
'';
enable = true;
};
############################
# Periodic wallpaper updater
############################
systemd.user.services.wallpaperPerWorkspace = {
description = "Set wallpapers per workspace every 15 minutes";
after = [ "copyWallpapers.service" ];
wants = [ "copyWallpapers.service" ];
serviceConfig.Type = "simple";
serviceConfig.ExecStart = "${wallpaperDst}/set-wallpapers-per-workspace.sh";
install.WantedBy = [ "default.target" ];
};
systemd.user.timers.wallpaperPerWorkspace = {
description = "Run wallpaper updater every 15 minutes";
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "1min";
OnUnitActiveSec = "15min";
Persistent = true; # ensures catch-up if missed
};
unit = "wallpaperPerWorkspace.service";
enable = true;
};
}