diff --git a/modules/services/linux-wallpaperengine.nix b/modules/services/linux-wallpaperengine.nix index 77492edc..16ef7dc4 100644 --- a/modules/services/linux-wallpaperengine.nix +++ b/modules/services/linux-wallpaperengine.nix @@ -19,7 +19,8 @@ in package = lib.mkPackageOption pkgs "linux-wallpaperengine" { }; assetsPath = mkOption { - type = types.path; + type = types.nullOr types.path; + default = null; description = "Path to the assets directory."; }; @@ -104,6 +105,10 @@ in config = lib.mkIf cfg.enable { assertions = [ (lib.hm.assertions.assertPlatform "services.linux-wallpaperengine" pkgs lib.platforms.linux) + ({ + assertion = cfg.wallpapers != null; + message = "linux-wallpaperengine: You must set at least one wallpaper"; + }) ]; home.packages = [ cfg.package ]; @@ -135,8 +140,8 @@ in Service = { ExecStart = lib.getExe cfg.package - + " --assets-dir ${cfg.assetsPath} " - + "--clamping ${cfg.clamping} " + + (lib.optionalString (cfg.assetsPath != null) " --assets-dir ${cfg.assetsPath} ") + + (lib.optionalString (cfg.clamping != null) "--clamping ${cfg.clamping} ") + (lib.strings.concatStringsSep " " args); Restart = "on-failure"; }; diff --git a/tests/modules/services/linux-wallpaperengine/default.nix b/tests/modules/services/linux-wallpaperengine/default.nix index 430aa129..41c58a4c 100644 --- a/tests/modules/services/linux-wallpaperengine/default.nix +++ b/tests/modules/services/linux-wallpaperengine/default.nix @@ -1 +1,4 @@ -{ linux-wallpaperengine-basic-configuration = ./basic-configuration.nix; } +{ + linux-wallpaperengine-basic-configuration = ./basic-configuration.nix; + linux-wallpaperengine-null-options = ./null-options.nix; +} diff --git a/tests/modules/services/linux-wallpaperengine/null-options-expected.service b/tests/modules/services/linux-wallpaperengine/null-options-expected.service new file mode 100644 index 00000000..95900346 --- /dev/null +++ b/tests/modules/services/linux-wallpaperengine/null-options-expected.service @@ -0,0 +1,11 @@ +[Install] +WantedBy=graphical-session.target + +[Service] +ExecStart=@linux-wallpaperengine@/bin/linux-wallpaperengine +Restart=on-failure + +[Unit] +After=graphical-session.target +Description=Implementation of Wallpaper Engine on Linux +PartOf=graphical-session.target diff --git a/tests/modules/services/linux-wallpaperengine/null-options.nix b/tests/modules/services/linux-wallpaperengine/null-options.nix new file mode 100644 index 00000000..9653ac0a --- /dev/null +++ b/tests/modules/services/linux-wallpaperengine/null-options.nix @@ -0,0 +1,11 @@ +{ + services.linux-wallpaperengine = { + enable = true; + }; + + nmt.script = '' + assertFileContent \ + home-files/.config/systemd/user/linux-wallpaperengine.service \ + ${./null-options-expected.service} + ''; +}