diff options
Diffstat (limited to 'modules/web')
| -rw-r--r-- | modules/web/default.nix | 3 | ||||
| -rw-r--r-- | modules/web/w3m/assertions.nix | 13 | ||||
| -rw-r--r-- | modules/web/w3m/default.nix | 42 |
3 files changed, 57 insertions, 1 deletions
diff --git a/modules/web/default.nix b/modules/web/default.nix index a5c2ae6..436241a 100644 --- a/modules/web/default.nix +++ b/modules/web/default.nix @@ -1,8 +1,9 @@ -# Web - Web browser and downloader modules (aria2, brave) +# Web - Web browser and downloader modules (aria2, brave, w3m) { ... }: { imports = [ ./aria2 ./brave + ./w3m ]; } diff --git a/modules/web/w3m/assertions.nix b/modules/web/w3m/assertions.nix new file mode 100644 index 0000000..b5ae2be --- /dev/null +++ b/modules/web/w3m/assertions.nix @@ -0,0 +1,13 @@ +# Assertions - Validates kitty is enabled for w3m desktop entry +{ config, ... }: +{ + assertions = [ + { + assertion = !config.web.w3m.enable || config.terminal.kitty.enable; + message = '' + web.w3m is enabled but terminal.kitty.enable is not. + w3m's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. + ''; + } + ]; +} diff --git a/modules/web/w3m/default.nix b/modules/web/w3m/default.nix new file mode 100644 index 0000000..3dad0a2 --- /dev/null +++ b/modules/web/w3m/default.nix @@ -0,0 +1,42 @@ +# w3m - Text-based web browser and pager +{ + config, + lib, + pkgs, + ... +}: +let + w3mDesktopItem = pkgs.makeDesktopItem { + name = "w3m"; + desktopName = "w3m"; + exec = "${lib.getExe config.terminal.kitty.package} -e ${lib.getExe' config.web.w3m.package "w3m"}"; + icon = "kitty"; + categories = [ "Network" ]; + comment = "Text-based web browser"; + terminal = false; + type = "Application"; + }; +in +{ + imports = [ + ./assertions.nix + ]; + + options.web.w3m = { + enable = lib.mkEnableOption "Enables w3m."; + package = lib.mkOption { + type = lib.types.package; + default = config.programs.w3m.finalPackage; + defaultText = lib.literalExpression "config.programs.w3m.finalPackage"; + description = "Package to use for w3m. Defaults to the wrapped finalPackage from programs.w3m."; + }; + }; + + config = lib.mkIf config.web.w3m.enable { + programs.w3m.enable = true; + home.packages = [ + config.web.w3m.package + w3mDesktopItem + ]; + }; +} |
