mirror of
https://git.mediani.de/mirrors_public/oddlama_nixos-extra-modules.git
synced 2025-10-10 14:10:38 +02:00
feat: added wallpaper script as exposed option
This commit is contained in:
parent
0f4e5f7391
commit
3ade74f761
1 changed files with 42 additions and 36 deletions
|
@ -3,9 +3,24 @@
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
cfg = config.xsession.wallpapers;
|
||||||
|
in {
|
||||||
options.xsession.wallpapers = {
|
options.xsession.wallpapers = {
|
||||||
enable = lib.mkEnableOption "automatically refreshing randomly selected wallpapers";
|
enable = lib.mkEnableOption "automatically refreshing randomly selected wallpapers";
|
||||||
|
script = let
|
||||||
|
exe =
|
||||||
|
pkgs.writeShellScript "set-wallpaper"
|
||||||
|
''
|
||||||
|
${pkgs.feh}/bin/feh --no-fehbg --bg-fill --randomize \
|
||||||
|
$( ${pkgs.findutils}/bin/find ${config.home.homeDirectory}/${cfg.folder} \( -iname "*.png" -or -iname "*.jpg" \) )
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
lib.mkOption {
|
||||||
|
description = "The script which will be called to set new wallpapers";
|
||||||
|
default = exe;
|
||||||
|
type = lib.types.package;
|
||||||
|
};
|
||||||
folder = lib.mkOption {
|
folder = lib.mkOption {
|
||||||
description = "The folder from which the wallpapers are selected. Relative to home directory";
|
description = "The folder from which the wallpapers are selected. Relative to home directory";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
|
@ -17,44 +32,35 @@
|
||||||
default = "3 min";
|
default = "3 min";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = let
|
config = lib.mkIf cfg.enable {
|
||||||
cfg = config.xsession.wallpapers;
|
systemd.user = {
|
||||||
exe =
|
timers = {
|
||||||
pkgs.writeShellScript "set-wallpaper"
|
set-wallpaper = {
|
||||||
''
|
Unit = {
|
||||||
${pkgs.feh}/bin/feh --no-fehbg --bg-fill --randomize \
|
Description = "Set a random wallpaper every 3 minutes";
|
||||||
$( ${pkgs.findutils}/bin/find ${config.home.homeDirectory}/${cfg.folder} \( -iname "*.png" -or -iname "*.jpg" \) )
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
lib.mkIf cfg.enable {
|
|
||||||
systemd.user = {
|
|
||||||
timers = {
|
|
||||||
set-wallpaper = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Set a random wallpaper every 3 minutes";
|
|
||||||
};
|
|
||||||
Timer = {
|
|
||||||
OnUnitActiveSec = cfg.refreshInterval;
|
|
||||||
};
|
|
||||||
Install.WantedBy = [
|
|
||||||
"timers.target"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
Timer = {
|
||||||
services = {
|
OnUnitActiveSec = cfg.refreshInterval;
|
||||||
set-wallpaper = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Set a random wallpaper on all X displays";
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart =
|
|
||||||
exe;
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
};
|
||||||
|
Install.WantedBy = [
|
||||||
|
"timers.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
set-wallpaper = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Set a random wallpaper on all X displays";
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart =
|
||||||
|
cfg.script;
|
||||||
|
};
|
||||||
|
Install.WantedBy = ["graphical-session.target"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.persistence."/state".directories = [cfg.folder];
|
|
||||||
};
|
};
|
||||||
|
home.persistence."/state".directories = [cfg.folder];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue