mirror of
https://github.com/nix-community/home-manager.git
synced 2024-12-15 17:50:53 +00:00
9f9e277b60
These (and the `*MD` functions apart from `literalMD`) are now no-ops in nixpkgs and serve no purpose other than to add additional noise and potentially mislead people into thinking unmarked DocBook documentation will still be accepted. Note that if backporting changes including documentation to 23.05, the `mdDoc` calls will need to be re-added. To reproduce this commit, run: $ NIX_PATH=nixpkgs=flake:nixpkgs/e7e69199f0372364a6106a1e735f68604f4c5a25 \ nix shell nixpkgs#coreutils \ -c find . -name '*.nix' \ -exec nix run -- github:emilazy/nix-doc-munge/98dadf1f77351c2ba5dcb709a2a171d655f15099 \ --strip {} + $ ./format
156 lines
4.4 KiB
Nix
156 lines
4.4 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
cfg = config.programs.urxvt;
|
|
|
|
in {
|
|
options.programs.urxvt = {
|
|
enable = mkEnableOption "rxvt-unicode terminal emulator";
|
|
|
|
package = mkOption {
|
|
type = types.package;
|
|
default = pkgs.rxvt-unicode;
|
|
defaultText = literalExpression "pkgs.rxvt-unicode";
|
|
description = "rxvt-unicode package to install.";
|
|
};
|
|
|
|
fonts = mkOption {
|
|
type = types.listOf types.str;
|
|
default = [ ];
|
|
description = "List of fonts to be used.";
|
|
example = [ "xft:Droid Sans Mono Nerd Font:size=9" ];
|
|
};
|
|
|
|
keybindings = mkOption {
|
|
type = types.attrsOf types.str;
|
|
default = { };
|
|
description = "Mapping of keybindings to actions";
|
|
example = literalExpression ''
|
|
{
|
|
"Shift-Control-C" = "eval:selection_to_clipboard";
|
|
"Shift-Control-V" = "eval:paste_clipboard";
|
|
}
|
|
'';
|
|
};
|
|
|
|
iso14755 = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description =
|
|
"ISO14755 support for viewing and entering unicode characters.";
|
|
};
|
|
|
|
scroll = {
|
|
bar = mkOption {
|
|
type = types.submodule {
|
|
options = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description = "Whether to enable the scrollbar";
|
|
};
|
|
|
|
style = mkOption {
|
|
type = types.enum [ "rxvt" "plain" "next" "xterm" ];
|
|
default = "plain";
|
|
description = "Scrollbar style.";
|
|
};
|
|
|
|
align = mkOption {
|
|
type = types.enum [ "top" "bottom" "center" ];
|
|
default = "center";
|
|
description = "Scrollbar alignment.";
|
|
};
|
|
|
|
position = mkOption {
|
|
type = types.enum [ "left" "right" ];
|
|
default = "right";
|
|
description = "Scrollbar position.";
|
|
};
|
|
|
|
floating = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description =
|
|
"Whether to display an rxvt scrollbar without a trough.";
|
|
};
|
|
};
|
|
};
|
|
default = { };
|
|
description = "Scrollbar settings.";
|
|
};
|
|
|
|
lines = mkOption {
|
|
type = types.ints.unsigned;
|
|
default = 10000;
|
|
description = "Number of lines to save in the scrollback buffer.";
|
|
};
|
|
|
|
keepPosition = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description =
|
|
"Whether to keep a scroll position when TTY receives new lines.";
|
|
};
|
|
|
|
scrollOnKeystroke = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description = "Whether to scroll to bottom on keyboard input.";
|
|
};
|
|
|
|
scrollOnOutput = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Whether to scroll to bottom on TTY output.";
|
|
};
|
|
};
|
|
|
|
transparent = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Whether to enable pseudo-transparency.";
|
|
};
|
|
|
|
shading = mkOption {
|
|
type = types.ints.between 0 200;
|
|
default = 100;
|
|
description =
|
|
"Darken (0 to 99) or lighten (101 to 200) the transparent background.";
|
|
};
|
|
|
|
extraConfig = mkOption {
|
|
default = { };
|
|
type = types.attrsOf types.anything;
|
|
description = "Additional configuration to add.";
|
|
example = { "shading" = 15; };
|
|
};
|
|
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
home.packages = [ cfg.package ];
|
|
|
|
xresources.properties = {
|
|
"URxvt.scrollBar" = cfg.scroll.bar.enable;
|
|
"URxvt.scrollstyle" = cfg.scroll.bar.style;
|
|
"URxvt.scrollBar_align" = cfg.scroll.bar.align;
|
|
"URxvt.scrollBar_right" = cfg.scroll.bar.position == "right";
|
|
"URxvt.scrollBar_floating" = cfg.scroll.bar.floating;
|
|
"URxvt.saveLines" = cfg.scroll.lines;
|
|
"URxvt.scrollWithBuffer" = cfg.scroll.keepPosition;
|
|
"URxvt.scrollTtyKeypress" = cfg.scroll.scrollOnKeystroke;
|
|
"URxvt.scrollTtyOutput" = cfg.scroll.scrollOnOutput;
|
|
"URxvt.transparent" = cfg.transparent;
|
|
"URxvt.shading" = cfg.shading;
|
|
"URxvt.iso14755" = cfg.iso14755;
|
|
} // flip mapAttrs' cfg.keybindings
|
|
(kb: action: nameValuePair "URxvt.keysym.${kb}" action)
|
|
// optionalAttrs (cfg.fonts != [ ]) {
|
|
"URxvt.font" = concatStringsSep "," cfg.fonts;
|
|
} // flip mapAttrs' cfg.extraConfig (k: v: nameValuePair "URxvt.${k}" v);
|
|
};
|
|
}
|