diff --git a/modules/modules.nix b/modules/modules.nix index 13b719ce1..d4fe4b141 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -84,6 +84,7 @@ let ./programs/carapace.nix ./programs/cava.nix ./programs/cavalier.nix + ./programs/chawan.nix ./programs/chromium.nix ./programs/cmus.nix ./programs/command-not-found/command-not-found.nix diff --git a/modules/programs/chawan.nix b/modules/programs/chawan.nix new file mode 100644 index 000000000..a3cd6655e --- /dev/null +++ b/modules/programs/chawan.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.programs.chawan; + tomlFormat = (pkgs.formats.toml { }); + tomlType = tomlFormat.type; + toConf = tomlFormat.generate "config.toml"; +in +{ + meta.maintainers = [ lib.maintainers.noodlez1232 ]; + + options.programs.chawan = { + enable = lib.mkEnableOption "chawan, A TUI web browser"; + package = lib.mkPackageOption pkgs "chawan" { nullable = true; }; + settings = lib.mkOption { + default = { }; + type = tomlType; + description = '' + Configuration options for chawan. + + See {manpage}`cha-config(5)` + ''; + example = lib.literalExpression '' + { + buffer = { + images = true; + autofocus = true; + }; + pager."C-k" = "() => pager.load('https://duckduckgo.com/?=')"; + } + ''; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = lib.mkIf (cfg.package != null) [ cfg.package ]; + xdg.configFile = lib.mkIf (cfg.settings != { }) { + "chawan/config.toml" = { + source = toConf cfg.settings; + }; + }; + }; +}