aboutsummaryrefslogtreecommitdiffstats
path: root/home/wallpapers
diff options
context:
space:
mode:
authorPetri Hienonen <petri.hienonen@gmail.com>2024-05-23 13:56:00 +0300
committerPetri Hienonen <petri.hienonen@gmail.com>2025-11-30 12:29:57 +0200
commit08297376a85a1719518507e54fca9de954d2376a (patch)
tree3b9c58304b40248533bbb2bb5b7bad2da9da1ff0 /home/wallpapers
parent75c2af4aedd2ac5c2cfc74b346625fa4b265541d (diff)
downloadnixos-08297376a85a1719518507e54fca9de954d2376a.tar.zst
Agenix configuration
Diffstat (limited to 'home/wallpapers')
-rw-r--r--home/wallpapers/crow.jpgbin0 -> 985573 bytes
-rw-r--r--home/wallpapers/crow2.avifbin0 -> 91595 bytes
-rw-r--r--home/wallpapers/default.nix87
-rw-r--r--home/wallpapers/owl1.webpbin0 -> 161844 bytes
-rw-r--r--home/wallpapers/owl2.webpbin0 -> 1000782 bytes
-rw-r--r--home/wallpapers/owl3.webpbin0 -> 514680 bytes
6 files changed, 87 insertions, 0 deletions
diff --git a/home/wallpapers/crow.jpg b/home/wallpapers/crow.jpg
new file mode 100644
index 0000000..7eec09d
--- /dev/null
+++ b/home/wallpapers/crow.jpg
Binary files differ
diff --git a/home/wallpapers/crow2.avif b/home/wallpapers/crow2.avif
new file mode 100644
index 0000000..6353b15
--- /dev/null
+++ b/home/wallpapers/crow2.avif
Binary files differ
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
new file mode 100644
index 0000000..f3c64d1
--- /dev/null
+++ b/home/wallpapers/owl1.webp
Binary files differ
diff --git a/home/wallpapers/owl2.webp b/home/wallpapers/owl2.webp
new file mode 100644
index 0000000..fa053a5
--- /dev/null
+++ b/home/wallpapers/owl2.webp
Binary files differ
diff --git a/home/wallpapers/owl3.webp b/home/wallpapers/owl3.webp
new file mode 100644
index 0000000..8861509
--- /dev/null
+++ b/home/wallpapers/owl3.webp
Binary files differ