diff --git a/modules/modules.nix b/modules/modules.nix index 7ec7550c2..d4e2cc311 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -184,6 +184,7 @@ let ./programs/mise.nix ./programs/mods.nix ./programs/mpv.nix + ./programs/mpvpaper.nix ./programs/mr.nix ./programs/msmtp.nix ./programs/mu.nix diff --git a/modules/programs/mpvpaper.nix b/modules/programs/mpvpaper.nix new file mode 100644 index 000000000..407bec52f --- /dev/null +++ b/modules/programs/mpvpaper.nix @@ -0,0 +1,61 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + types + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.mpvpaper; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + + options.programs.mpvpaper = { + enable = mkEnableOption "mpvpaper"; + package = mkPackageOption pkgs "mpvpaper" { nullable = true; }; + pauseList = mkOption { + type = types.lines; + default = ""; + example = '' + firefox + steam + obs + ''; + description = '' + List of program names that will cause mpvpaper to pause. + Programs must be separed by spaces or newlines. + ''; + }; + stopList = mkOption { + type = types.lines; + default = ""; + example = '' + firefox + steam + obs + ''; + description = '' + List of program names that will cause mpvpaper to stop. + Programs must be separed by spaces or newlines. + ''; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "programs.mpvpaper" pkgs lib.platforms.linux) + ]; + + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + xdg.configFile."mpvpaper/pauselist".text = mkIf (cfg.pauseList != "") cfg.pauseList; + xdg.configFile."mpvpaper/stoplist".text = mkIf (cfg.stopList != "") cfg.stopList; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 657d61501..f94d7eccf 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -379,6 +379,7 @@ import nmtSrc { ./modules/programs/kickoff ./modules/programs/looking-glass-client ./modules/programs/mangohud + ./modules/programs/mpvpaper ./modules/programs/ncmpcpp-linux ./modules/programs/nh ./modules/programs/onedrive diff --git a/tests/modules/programs/mpvpaper/default.nix b/tests/modules/programs/mpvpaper/default.nix new file mode 100644 index 000000000..3069c64d0 --- /dev/null +++ b/tests/modules/programs/mpvpaper/default.nix @@ -0,0 +1 @@ +{ mpvpaper-example-config = ./example-config.nix; } diff --git a/tests/modules/programs/mpvpaper/example-config.nix b/tests/modules/programs/mpvpaper/example-config.nix new file mode 100644 index 000000000..1506792ef --- /dev/null +++ b/tests/modules/programs/mpvpaper/example-config.nix @@ -0,0 +1,24 @@ +{ + programs.mpvpaper = { + enable = true; + pauseList = '' + firefox + librewolf + steam + ''; + stopList = '' + obs + virt-manager + gimp + ''; + }; + + nmt.script = '' + assertFileExists home-files/.config/mpvpaper/pauselist + assertFileExists home-files/.config/mpvpaper/stoplist + assertFileContent home-files/.config/mpvpaper/pauselist \ + ${./pauselist} + assertFileContent home-files/.config/mpvpaper/stoplist \ + ${./stoplist} + ''; +} diff --git a/tests/modules/programs/mpvpaper/pauselist b/tests/modules/programs/mpvpaper/pauselist new file mode 100644 index 000000000..ac5b9ce82 --- /dev/null +++ b/tests/modules/programs/mpvpaper/pauselist @@ -0,0 +1,3 @@ +firefox +librewolf +steam diff --git a/tests/modules/programs/mpvpaper/stoplist b/tests/modules/programs/mpvpaper/stoplist new file mode 100644 index 000000000..73a123f00 --- /dev/null +++ b/tests/modules/programs/mpvpaper/stoplist @@ -0,0 +1,3 @@ +obs +virt-manager +gimp