1
0
Fork 0
nixos-config/home/desktop/wallpaper.nix
2020-05-22 01:10:41 +02:00

36 lines
1.3 KiB
Nix

{ lib, pkgs, config, ... }:
let
inherit (import ../../lib) writeHaskellScript;
randomWallpaper = writeHaskellScript {
name = "random-wallpaper";
imports = [ "System.Random" ];
bins = [ pkgs.coreutils pkgs.glib ];
} ''
main = do
mode <- cat "/home/maralorn/volatile/mode" |> captureTrim
(lines . decodeUtf8 -> files) <- ls ([i|/home/maralorn/.wallpapers/#{mode}|] :: String) |> captureTrim
((files Unsafe.!!) -> file) <- getStdRandom $ randomR (0, length files - 1)
(decodeUtf8 -> current) <- gsettings "get" "org.gnome.desktop.background" "picture-uri" |> captureTrim
let new = [i|file:///home/maralorn/.wallpapers/#{mode}/#{file}|] :: String
when (new /= current) $ do
gsettings "set" "org.gnome.desktop.background" "picture-uri" new
gsettings "set" "org.gnome.desktop.screensaver" "picture-uri" new
'';
in {
home.packages = [ randomWallpaper ];
systemd.user = {
services.random-wallpaper = {
Unit = { Description = "Random Wallpaper"; };
Service = {
ExecStart = "${randomWallpaper}/bin/random-wallpaper";
Type = "oneshot";
};
};
timers.random-wallpaper = {
Timer = { OnCalendar = "*:00/30:00"; };
Install = { WantedBy = [ "timers.target" ]; };
};
};
}