59 lines
1.3 KiB
Nix
59 lines
1.3 KiB
Nix
|
{
|
||
|
lib,
|
||
|
config,
|
||
|
pkgs,
|
||
|
...
|
||
|
}:
|
||
|
|
||
|
{
|
||
|
options =
|
||
|
let
|
||
|
inherit (lib) mkOption types;
|
||
|
in
|
||
|
{
|
||
|
hyprpaper = {
|
||
|
wallpaperFolder = mkOption {
|
||
|
type = types.str;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config =
|
||
|
let
|
||
|
cfg = config.hyprpaper;
|
||
|
hyprlandCfg = config.hyprland;
|
||
|
|
||
|
changeWallpaperScript = pkgs.writeShellScriptBin "change-wallpaper" (
|
||
|
lib.concatStringsSep "\n" (
|
||
|
lib.flatten (
|
||
|
map (
|
||
|
m:
|
||
|
let
|
||
|
output = m.name;
|
||
|
wallpaper = "\"$(${pkgs.findutils}/bin/find -L \"${cfg.wallpaperFolder}\" -type f | ${pkgs.coreutils}/bin/shuf -n 1)\"";
|
||
|
in
|
||
|
[
|
||
|
"wallpaper=${wallpaper}"
|
||
|
"${pkgs.hyprland}/bin/hyprctl hyprpaper preload $wallpaper"
|
||
|
"${pkgs.hyprland}/bin/hyprctl hyprpaper wallpaper ${output},$wallpaper"
|
||
|
]
|
||
|
) hyprlandCfg.monitors
|
||
|
)
|
||
|
++ [ "${pkgs.hyprland}/bin/hyprctl hyprpaper unload all" ]
|
||
|
)
|
||
|
);
|
||
|
in
|
||
|
{
|
||
|
hyprland.autoStart = [
|
||
|
"${pkgs.hyprpaper}/bin/hyprpaper"
|
||
|
"sleep 2; ${changeWallpaperScript}/bin/change-wallpaper"
|
||
|
];
|
||
|
|
||
|
home-manager.users.kalle.home.packages = with pkgs; [
|
||
|
hyprpaper
|
||
|
changeWallpaperScript
|
||
|
];
|
||
|
};
|
||
|
|
||
|
}
|