{ config, pkgs, lib, flakeRoot, ... }: let username = config.users.users.defaultUser or "henrov"; homeDir = "/home/${username}"; wallpaperSrc = "${flakeRoot}/assets/traveldroid/Wallpapers"; wallpaperDst = "${homeDir}/Wallpapers"; scriptFile = "${homeDir}/copy-wallpapers.sh"; in { ############################ # Ensure bash exists ############################ environment.systemPackages = [ pkgs.bash ]; ############################ # Create the script in the user's home ############################ home-manager.users = { ${username} = { home.file."copy-wallpapers.sh".text = '' #!/usr/bin/env bash set -e echo "Copying wallpapers from ${wallpaperSrc} to ${wallpaperDst} ..." if [ ! -d "${wallpaperSrc}" ]; then echo "ERROR: ${wallpaperSrc} does not exist" exit 1 fi mkdir -p "${wallpaperDst}" # Copy everything cp -r "${wallpaperSrc}/." "${wallpaperDst}/" # Fix permissions chmod -R u+rwx "${wallpaperDst}" echo "Done copying wallpapers." ''; home.file."copy-wallpapers.sh".executable = true; }; }; ############################ # User systemd service that runs the script ############################ systemd.user.services.copyWallpapers = { description = "Copy wallpapers from repo to ~/Wallpapers"; wants = [ "graphical-session.target" ]; after = [ "graphical-session.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.ExecStart = scriptFile; serviceConfig.Restart = "no"; }; }