diff --git a/modules/wallpapers.nix b/modules/wallpapers.nix index ee6022e..9e60eda 100644 --- a/modules/wallpapers.nix +++ b/modules/wallpapers.nix @@ -1,10 +1,7 @@ { pkgs, self, ... }: let - # Directory in your git repo where wallpapers are stored - # Place your wallpaper images in ./wallpapers/ relative to your flake root wallpapersDir = self + /wallpapers; - # Create a package that contains all wallpapers wallpaperPackage = pkgs.stdenv.mkDerivation { name = "wallpaper-collection"; src = wallpapersDir; @@ -14,28 +11,29 @@ let ''; }; - # Script to set a random wallpaper - setRandomWallpaper = pkgs.writeShellScriptBin "set-random-wallpaper" '' + randwallInterpreter = pkgs.stdenv.mkDerivation { + name = "randwall-interpreter"; + dontUnpack = true; + installPhase = '' + mkdir -p $out/bin + cp ${pkgs.bash}/bin/bash $out/bin/randwall + ''; + }; + + randwall = pkgs.writeScriptBin "randwall" ''#!${randwallInterpreter}/bin/randwall set -e WALLPAPER_DIR="${wallpaperPackage}/wallpapers" - # Get all image files (jpg, jpeg, png, heic) mapfile -t WALLPAPERS < <(find "$WALLPAPER_DIR" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.heic" \)) if [ ''${#WALLPAPERS[@]} -eq 0 ]; then - echo "No wallpapers found in $WALLPAPER_DIR" exit 1 fi - # Use random selection - different wallpaper each time you run the command INDEX=$((RANDOM % ''${#WALLPAPERS[@]})) SELECTED_WALLPAPER="''${WALLPAPERS[$INDEX]}" - echo "Setting wallpaper: $(basename "$SELECTED_WALLPAPER")" - echo "Full path: $SELECTED_WALLPAPER" - - # Set wallpaper for all displays using Finder (more reliable on macOS) /usr/bin/osascript <