Files
nixos/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix
T
2026-03-29 21:14:24 +00:00

78 lines
2.1 KiB
Nix

{ lib, config, pkgs, flakeRoot, ... }:
let
username = config.defaultUser or "henrov";
homeDir = "/home/${username}";
wallpaperSrc = "${flakeRoot}/assets/traveldroid/Wallpapers";
wallpaperDst = "${homeDir}/Wallpapers";
in
{
# Make bash available
environment.systemPackages = [ pkgs.bash pkgs.rsync pkgs.jq pkgs.swww pkgs.waypaper pkgs.socat ];
# Create the copy script using Home Manager, following Waybar style
home-manager.users = {
${username} = {
home.file = {
"copy-wallpapers.sh" = {
text = ''
#!/run/current-system/sw/bin/bash
set -euo pipefail
echo "Running as $(whoami)"
echo "Copying wallpapers from ${wallpaperSrc} to ${wallpaperDst} ..."
if [ ! -d "${wallpaperSrc}" ]; then
echo "ERROR: ${wallpaperSrc} does not exist"
exit 1
fi
mkdir -p "${wallpaperDst}"
# Simple copy, overwrite everything
cp -r "${wallpaperSrc}/." "${wallpaperDst}/"
# Fix permissions
chmod -R u+rwx "${wallpaperDst}"
echo "Done copying wallpapers."
'';
executable = true;
force = true;
};
};
};
};
# User service to run the script
systemd.user.services.copyWallpapers = {
description = "Copy wallpapers from repo to ~/Wallpapers";
after = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${homeDir}/copy-wallpapers.sh";
Restart = "no";
};
wantedBy = [ "default.target" ];
};
############################
# Random background per workspace at logon
############################
systemd.user.services.workspaceWallpapers = {
description = "Dynamic wallpapers per workspace for Hyprland";
after = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ];
serviceConfig = {
ExecStart = "${homeDir}/Wallpapers/scripts/workspace-wallpapers.sh";
Restart = "always";
};
wantedBy = [ "default.target" ];
};
}