diff --git a/modules/misc/news/2025-04-20_00-39-01.nix b/modules/misc/news/2025-04-20_00-39-01.nix new file mode 100644 index 000000000..36355843a --- /dev/null +++ b/modules/misc/news/2025-04-20_00-39-01.nix @@ -0,0 +1,9 @@ +{ + time = "2025-04-20T05:39:01+00:00"; + condition = true; + message = '' + A new module is available: 'programs.wallust'. + + Wallust generates colors from an images, similar to pywal. + ''; +} diff --git a/modules/modules.nix b/modules/modules.nix index 416dc79cd..0b746a0c6 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -286,6 +286,7 @@ let ./programs/vscode/haskell.nix ./programs/pywal.nix ./programs/rbenv.nix + ./programs/wallust.nix ./programs/watson.nix ./programs/waylogout.nix ./programs/waybar.nix diff --git a/modules/programs/wallust.nix b/modules/programs/wallust.nix new file mode 100644 index 000000000..4bcb51209 --- /dev/null +++ b/modules/programs/wallust.nix @@ -0,0 +1,46 @@ +{ + pkgs, + lib, + config, + ... +}: + +let + inherit (lib) + mkEnableOption + mkPackageOption + mkOption + mkIf + literalExpression + ; + cfg = config.programs.wallust; + tomlFormat = pkgs.formats.toml { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ kiara ]; + + options.programs.wallust = { + enable = mkEnableOption "Wallust color scheme generator"; + package = mkPackageOption pkgs "wallust" { }; + settings = mkOption { + type = tomlFormat.type; + default = { }; + example = literalExpression '' + { + palette = "softdark"; + } + ''; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/wallust/wallust.toml`. + See for + documentation. + ''; + }; + }; + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + xdg.configFile."wallust/wallust.toml" = mkIf (cfg.settings != { }) { + source = tomlFormat.generate "wallust.toml" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 0d3f5245c..3d6dc43a8 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -469,6 +469,7 @@ import nmtSrc { ./modules/programs/vifm ./modules/programs/vim-vint ./modules/programs/vscode + ./modules/programs/wallust ./modules/programs/watson ./modules/programs/wezterm ./modules/programs/yazi diff --git a/tests/modules/programs/wallust/default.nix b/tests/modules/programs/wallust/default.nix new file mode 100644 index 000000000..955a72e1d --- /dev/null +++ b/tests/modules/programs/wallust/default.nix @@ -0,0 +1,3 @@ +{ + wallust = ./wallust.nix; +} diff --git a/tests/modules/programs/wallust/expected.toml b/tests/modules/programs/wallust/expected.toml new file mode 100644 index 000000000..8991d7bb9 --- /dev/null +++ b/tests/modules/programs/wallust/expected.toml @@ -0,0 +1,2 @@ +backend = "fastresize" +color_space = "lchmixed" diff --git a/tests/modules/programs/wallust/wallust.nix b/tests/modules/programs/wallust/wallust.nix new file mode 100644 index 000000000..eaf9048af --- /dev/null +++ b/tests/modules/programs/wallust/wallust.nix @@ -0,0 +1,16 @@ +{ + home.enableNixpkgsReleaseCheck = false; + programs.wallust = { + enable = true; + backend = "full"; + settings = { + backend = "fastresize"; + color_space = "lchmixed"; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/wallust/wallust.toml + assertFileContent home-files/.config/wallust/wallust.toml ${./expected.toml} + ''; +}