Skip to content

Wallpaper

Everything under System Settings › Wallpaper, as Nix options. Each one is named after the control you'd click, and set under programs.nix-plist-manager.options in home-manager.

2 options 1 verified against System Settings

System Settings › Wallpaper

home-manager · per user Not verified Restarts WallpaperAgent

The wallpaper as picked in System Settings, for every display and Space. Save it into your configuration with nix run github:sushydev/nix-plist-manager#capture -- applications.systemSettings.wallpaper.wallpaper <directory> and set this option to that directory. Wallpapers that are downloaded on demand are downloaded again after a restore.

applications.systemSettings.wallpaper.wallpaper = "/path/to/snapshot";

A directory captured with nix run …#capture — see Snapshots "unset" puts back macOS's default.

Where it's stored and what runs

For /path/to/snapshot:

/usr/bin/defaults delete "$HOME"/'Library/Application Support/com.apple.wallpaper/Store/Index' 2>/dev/null || true
/usr/bin/defaults import "$HOME"/'Library/Application Support/com.apple.wallpaper/Store/Index' /path/to/snapshot/index.plist || echo 'nix-plist-manager: failed: /usr/bin/defaults import "$HOME"/'\''Library/Application Support/com.apple.wallpaper/Store/Index'\'' /path/to/snapshot/index.plist' >&2
/usr/bin/killall WallpaperAgent 2>/dev/null || true

For unset:

/usr/bin/defaults delete "$HOME"/'Library/Application Support/com.apple.wallpaper/Store/Index' 2>/dev/null || true
/usr/bin/killall WallpaperAgent 2>/dev/null || true

System Settings › Wallpaper › Screen Saver… › Start Screen Saver…

home-manager · per user ✓ Verified on macOS 27
applications.systemSettings.wallpaper.startScreenSaver = "After 1 hour";

One of: "After 1 hour""After 1 hour, 30 minutes""After 1 minute""After 10 minutes""After 2 hours""After 2 hours, 30 minutes""After 2 minutes""After 20 minutes""After 3 hours""After 3 minutes""After 30 minutes""After 5 minutes""Never" "unset" puts back macOS's default.

Where it's stored and what runs
  • com.apple.screensaver idleTime (current host)

For After 1 hour:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 3600 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 3600' >&2

For After 1 hour, 30 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 5400 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 5400' >&2

For After 1 minute:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 60 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 60' >&2

For After 10 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 600 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 600' >&2

For After 2 hours:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 7200 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 7200' >&2

For After 2 hours, 30 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 9000 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 9000' >&2

For After 2 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 120 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 120' >&2

For After 20 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 1200 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 1200' >&2

For After 3 hours:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 10800 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 10800' >&2

For After 3 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 180 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 180' >&2

For After 30 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 1800 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 1800' >&2

For After 5 minutes:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 300 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 300' >&2

For Never:

/usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 0 || echo 'nix-plist-manager: failed: /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int 0' >&2

For unset:

/usr/bin/defaults -currentHost delete com.apple.screensaver idleTime 2>/dev/null || true