vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / config / terminfo.nix
blob78d4847092d5d1a9bf8fbe491261320d5ef19658
1 # This module manages the terminfo database
2 # and its integration in the system.
3 { config, lib, pkgs, ... }:
6   options = with lib; {
7     environment.enableAllTerminfo = lib.mkOption {
8       default = false;
9       type = lib.types.bool;
10       description = ''
11         Whether to install all terminfo outputs
12       '';
13     };
15     security.sudo.keepTerminfo = lib.mkOption {
16       default = true;
17       type = lib.types.bool;
18       description = ''
19         Whether to preserve the `TERMINFO` and `TERMINFO_DIRS`
20         environment variables, for `root` and the `wheel` group.
21       '';
22     };
23   };
25   config = {
27     # This should not contain packages that are broken or can't build, since it
28     # will break this expression
29     #
30     # Currently broken packages:
31     # - contour
32     #
33     # can be generated with:
34     # lib.attrNames (lib.filterAttrs
35     #  (_: drv: (builtins.tryEval (lib.isDerivation drv && drv ? terminfo)).value)
36     #  pkgs)
37     environment.systemPackages = lib.mkIf config.environment.enableAllTerminfo (
38       map (x: x.terminfo) (
39         with pkgs.pkgsBuildBuild;
40         [
41           alacritty
42           foot
43           kitty
44           mtm
45           rio
46           rxvt-unicode-unwrapped
47           rxvt-unicode-unwrapped-emoji
48           st
49           termite
50           tmux
51           wezterm
52           yaft
53         ]
54       )
55     );
57     environment.pathsToLink = [
58       "/share/terminfo"
59     ];
61     environment.etc.terminfo = {
62       source = "${config.system.path}/share/terminfo";
63     };
65     environment.profileRelativeSessionVariables = {
66       TERMINFO_DIRS = [ "/share/terminfo" ];
67     };
69     environment.extraInit = ''
71       # reset TERM with new TERMINFO available (if any)
72       export TERM=$TERM
73     '';
75     security.sudo.extraConfig = lib.mkIf config.security.sudo.keepTerminfo ''
77       # Keep terminfo database for root and %wheel.
78       Defaults:root,%wheel env_keep+=TERMINFO_DIRS
79       Defaults:root,%wheel env_keep+=TERMINFO
80     '';
82   };