diff --git a/modules/modules.nix b/modules/modules.nix index cf29397db..cbafdd75b 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -136,6 +136,7 @@ let ./programs/htop.nix ./programs/hyfetch.nix ./programs/hyprlock.nix + ./programs/i3bar-river.nix ./programs/i3blocks.nix ./programs/i3status-rust.nix ./programs/i3status.nix diff --git a/modules/programs/i3bar-river.nix b/modules/programs/i3bar-river.nix new file mode 100644 index 000000000..c9d1c395f --- /dev/null +++ b/modules/programs/i3bar-river.nix @@ -0,0 +1,53 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.i3bar-river; + formatter = pkgs.formats.toml { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + + options.programs.i3bar-river = { + enable = mkEnableOption "i3bar-river"; + package = mkPackageOption pkgs "i3bar-river" { nullable = true; }; + settings = mkOption { + type = formatter.type; + default = { }; + example = { + background = "#282828ff"; + color = "#ffffffff"; + separator = "#9a8a62ff"; + font = "monospace 10"; + height = 24; + margin_top = 0; + margin_bottom = 0; + margin_left = 0; + "wm.river" = { + max_tag = 0; + }; + }; + description = '' + Configuration settings for i3bar-river. All available options can be + found here: . + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + xdg.configFile."i3bar-river/config.toml" = mkIf (cfg.settings != { }) { + source = formatter.generate "i3bar-river-config.toml" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index f4f7c6867..bcb2749cf 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -375,6 +375,7 @@ import nmtSrc { ./modules/programs/gnome-terminal ./modules/programs/hexchat ./modules/programs/hyprlock + ./modules/programs/i3bar-river ./modules/programs/i3blocks ./modules/programs/i3status-rust ./modules/programs/imv diff --git a/tests/modules/programs/i3bar-river/config.toml b/tests/modules/programs/i3bar-river/config.toml new file mode 100644 index 000000000..d6a0f7cd3 --- /dev/null +++ b/tests/modules/programs/i3bar-river/config.toml @@ -0,0 +1,11 @@ +background = "#282828ff" +color = "#ffffffff" +font = "monospace 10" +height = 24 +margin_bottom = 0 +margin_left = 0 +margin_top = 0 +separator = "#9a8a62ff" + +["wm.river"] +max_tag = 0 diff --git a/tests/modules/programs/i3bar-river/default.nix b/tests/modules/programs/i3bar-river/default.nix new file mode 100644 index 000000000..9bfd5f8fc --- /dev/null +++ b/tests/modules/programs/i3bar-river/default.nix @@ -0,0 +1 @@ +{ i3bar-river-example-config = ./example-config.nix; } diff --git a/tests/modules/programs/i3bar-river/example-config.nix b/tests/modules/programs/i3bar-river/example-config.nix new file mode 100644 index 000000000..b93d1e965 --- /dev/null +++ b/tests/modules/programs/i3bar-river/example-config.nix @@ -0,0 +1,24 @@ +{ + programs.i3bar-river = { + enable = true; + settings = { + background = "#282828ff"; + color = "#ffffffff"; + separator = "#9a8a62ff"; + font = "monospace 10"; + height = 24; + margin_top = 0; + margin_bottom = 0; + margin_left = 0; + "wm.river" = { + max_tag = 0; + }; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/i3bar-river/config.toml + assertFileContent home-files/.config/i3bar-river/config.toml \ + ${./config.toml} + ''; +}