84 lines
1.9 KiB
Nix
84 lines
1.9 KiB
Nix
|
# This module manages the terminfo database
|
||
|
# and its integration in the system.
|
||
|
{ config, lib, pkgs, ... }:
|
||
|
{
|
||
|
|
||
|
options = with lib; {
|
||
|
environment.enableAllTerminfo = lib.mkOption {
|
||
|
default = false;
|
||
|
type = lib.types.bool;
|
||
|
description = ''
|
||
|
Whether to install all terminfo outputs
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
security.sudo.keepTerminfo = lib.mkOption {
|
||
|
default = true;
|
||
|
type = lib.types.bool;
|
||
|
description = ''
|
||
|
Whether to preserve the `TERMINFO` and `TERMINFO_DIRS`
|
||
|
environment variables, for `root` and the `wheel` group.
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = {
|
||
|
|
||
|
# This should not contain packages that are broken or can't build, since it
|
||
|
# will break this expression
|
||
|
#
|
||
|
# Currently broken packages:
|
||
|
# - contour
|
||
|
#
|
||
|
# can be generated with:
|
||
|
# lib.attrNames (lib.filterAttrs
|
||
|
# (_: drv: (builtins.tryEval (lib.isDerivation drv && drv ? terminfo)).value)
|
||
|
# pkgs)
|
||
|
environment.systemPackages = lib.mkIf config.environment.enableAllTerminfo (
|
||
|
map (x: x.terminfo) (
|
||
|
with pkgs.pkgsBuildBuild;
|
||
|
[
|
||
|
alacritty
|
||
|
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 = lib.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
|
||
|
'';
|
||
|
|
||
|
};
|
||
|
}
|