diff options
| author | Petri Hienonen <petri.hienonen@gmail.com> | 2024-05-23 13:56:00 +0300 |
|---|---|---|
| committer | Petri Hienonen <petri.hienonen@gmail.com> | 2025-11-30 12:29:57 +0200 |
| commit | 08297376a85a1719518507e54fca9de954d2376a (patch) | |
| tree | 3b9c58304b40248533bbb2bb5b7bad2da9da1ff0 /home/wallpapers | |
| parent | 75c2af4aedd2ac5c2cfc74b346625fa4b265541d (diff) | |
| download | nixos-08297376a85a1719518507e54fca9de954d2376a.tar.zst | |
Agenix configuration
Diffstat (limited to 'home/wallpapers')
| -rw-r--r-- | home/wallpapers/crow.jpg | bin | 0 -> 985573 bytes | |||
| -rw-r--r-- | home/wallpapers/crow2.avif | bin | 0 -> 91595 bytes | |||
| -rw-r--r-- | home/wallpapers/default.nix | 87 | ||||
| -rw-r--r-- | home/wallpapers/owl1.webp | bin | 0 -> 161844 bytes | |||
| -rw-r--r-- | home/wallpapers/owl2.webp | bin | 0 -> 1000782 bytes | |||
| -rw-r--r-- | home/wallpapers/owl3.webp | bin | 0 -> 514680 bytes |
6 files changed, 87 insertions, 0 deletions
diff --git a/home/wallpapers/crow.jpg b/home/wallpapers/crow.jpg Binary files differnew file mode 100644 index 0000000..7eec09d --- /dev/null +++ b/home/wallpapers/crow.jpg diff --git a/home/wallpapers/crow2.avif b/home/wallpapers/crow2.avif Binary files differnew file mode 100644 index 0000000..6353b15 --- /dev/null +++ b/home/wallpapers/crow2.avif diff --git a/home/wallpapers/default.nix b/home/wallpapers/default.nix new file mode 100644 index 0000000..458f711 --- /dev/null +++ b/home/wallpapers/default.nix @@ -0,0 +1,87 @@ +{ config, pkgs, ... }: +let + wallpaperScript = pkgs.writeShellScript "update-wallpaper.sh" '' + set -euo pipefail + + if [ -z "''${UNSPLASH_ACCESS_KEY:-}" ]; then + echo "Error: UNSPLASH_ACCESS_KEY is not set" + exit 1 + fi + + WALLPAPER_DIR="$HOME/.local/share/wallpapers" + "${pkgs.coreutils}/bin/mkdir" -p "$WALLPAPER_DIR" + + TMPFILE="$("${pkgs.coreutils}/bin/mktemp")" + + echo "Fetching random Unsplash image URL..." + URL=$("${pkgs.curl}/bin/curl" -s \ + "https://api.unsplash.com/photos/random?query=nature,landscape&orientation=landscape&client_id=$UNSPLASH_ACCESS_KEY" \ + | "${pkgs.jq}/bin/jq" -r '.urls.raw') + + if [ -z "$URL" ] || [ "$URL" = "null" ]; then + echo "Error: could not retrieve Unsplash URL" + exit 1 + fi + + EXT=$("${pkgs.coreutils}/bin/basename" "$URL" | "${pkgs.gawk}/bin/awk" -F. '{print tolower($NF)}') + [[ "$EXT" =~ ^(jpg|jpeg|png)$ ]] || EXT="jpg" + + TMPFILE_EXT="$TMPFILE.$EXT" + OUTFILE="$WALLPAPER_DIR/$("${pkgs.coreutils}/bin/date" +%Y%m%d-%H%M%S).webp" + + echo "Downloading original Unsplash image..." + "${pkgs.curl}/bin/curl" -L --fail --retry 3 -o "$TMPFILE_EXT" "$URL" + + echo "Converting to WebP..." + "${pkgs.libwebp}/bin/cwebp" -mt -preset photo -hint photo -metadata all -pass 10 -quiet -q 80 -m 6 "$TMPFILE_EXT" -o "$OUTFILE" + "${pkgs.coreutils}/bin/rm" -f "$TMPFILE_EXT" + + echo "Selecting a wallpaper different from current..." + CURRENT_WALL=$("${pkgs.hyprland}/bin/hyprctl" hyprpaper listloaded | "${pkgs.gawk}/bin/awk" '{print $NF}' || true) + NEW_WALL=$("${pkgs.findutils}/bin/find" "$WALLPAPER_DIR" -type f ! -name "$("${pkgs.coreutils}/bin/basename" "$CURRENT_WALL")" | "${pkgs.coreutils}/bin/shuf" -n 1) + + echo "Reloading hyprpaper with: $NEW_WALL" + "${pkgs.hyprland}/bin/hyprctl" hyprpaper reload ,"$NEW_WALL" + ''; +in +{ + # Ensure required packages are available + home.packages = with pkgs; [ + coreutils + curl + findutils + hyprland + jq + libwebp + ]; + + systemd.user.services."wallpaper-fetch" = { + Unit = { + Description = "Fetch and update 4K nature wallpaper for Hyprpaper"; + After = [ "graphical-session.target" ]; + }; + + Service = { + Environment = [ + "UNSPLASH_ACCESS_KEY=$(${pkgs.coreutils}/bin/cat ${config.age.secrets.unsplash_access_key.path})" + ]; + Type = "oneshot"; + ExecStart = "${wallpaperScript}"; + }; + }; + + # Timer to run periodically (every 3 hours) + systemd.user.timers."wallpaper-fetch" = { + Unit = { + Description = "Periodic Unsplash wallpaper fetch timer"; + }; + Timer = { + OnBootSec = "2min"; + OnUnitActiveSec = "3h"; + Persistent = true; + }; + Install = { + WantedBy = [ "timers.target" ]; + }; + }; +} diff --git a/home/wallpapers/owl1.webp b/home/wallpapers/owl1.webp Binary files differnew file mode 100644 index 0000000..f3c64d1 --- /dev/null +++ b/home/wallpapers/owl1.webp diff --git a/home/wallpapers/owl2.webp b/home/wallpapers/owl2.webp Binary files differnew file mode 100644 index 0000000..fa053a5 --- /dev/null +++ b/home/wallpapers/owl2.webp diff --git a/home/wallpapers/owl3.webp b/home/wallpapers/owl3.webp Binary files differnew file mode 100644 index 0000000..8861509 --- /dev/null +++ b/home/wallpapers/owl3.webp |
