79 lines
1.8 KiB
Nix
79 lines
1.8 KiB
Nix
# This module manages the terminfo database
|
|
# and its integration in the system.
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
{
|
|
|
|
options = with lib; {
|
|
environment.enableAllTerminfo = mkOption {
|
|
default = false;
|
|
type = types.bool;
|
|
description = lib.mdDoc ''
|
|
Whether to install all terminfo outputs
|
|
'';
|
|
};
|
|
|
|
security.sudo.keepTerminfo = mkOption {
|
|
default = config.security.sudo.package.pname != "sudo-rs";
|
|
defaultText = literalMD ''
|
|
`true` unless using `sudo-rs`
|
|
'';
|
|
type = types.bool;
|
|
description = lib.mdDoc ''
|
|
Whether to preserve the `TERMINFO` and `TERMINFO_DIRS`
|
|
environment variables, for `root` and the `wheel` group.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = {
|
|
|
|
# can be generated with:
|
|
# attrNames (filterAttrs
|
|
# (_: drv: (builtins.tryEval (isDerivation drv && drv ? terminfo)).value)
|
|
# pkgs)
|
|
environment.systemPackages = mkIf config.environment.enableAllTerminfo (map (x: x.terminfo) (with pkgs; [
|
|
alacritty
|
|
contour
|
|
foot
|
|
kitty
|
|
mtm
|
|
rio
|
|
rxvt-unicode-unwrapped
|
|
rxvt-unicode-unwrapped-emoji
|
|
st
|
|
termite
|
|
tmux
|
|
wezterm
|
|
yaft
|
|
]));
|
|
|
|
environment.pathsToLink = [
|
|
"/share/terminfo"
|
|
];
|
|
|
|
environment.etc.terminfo = {
|
|
source = "${config.system.path}/share/terminfo";
|
|
};
|
|
|
|
environment.profileRelativeSessionVariables = {
|
|
TERMINFO_DIRS = [ "/share/terminfo" ];
|
|
};
|
|
|
|
environment.extraInit = ''
|
|
|
|
# reset TERM with new TERMINFO available (if any)
|
|
export TERM=$TERM
|
|
'';
|
|
|
|
security.sudo.extraConfig = mkIf config.security.sudo.keepTerminfo ''
|
|
|
|
# Keep terminfo database for root and %wheel.
|
|
Defaults:root,%wheel env_keep+=TERMINFO_DIRS
|
|
Defaults:root,%wheel env_keep+=TERMINFO
|
|
'';
|
|
|
|
};
|
|
}
|