nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ pkgs, ... }:
2{
3 name = "all-terminfo";
4 meta = with pkgs.lib.maintainers; {
5 maintainers = [ jkarlson ];
6 };
7
8 nodes.machine =
9 {
10 pkgs,
11 config,
12 lib,
13 ...
14 }:
15 let
16 infoFilter =
17 name: drv:
18 let
19 o = builtins.tryEval drv;
20 in
21 o.success
22 && lib.isDerivation o.value
23 && o.value ? outputs
24 && builtins.elem "terminfo" o.value.outputs
25 && !o.value.meta.broken
26 && lib.meta.availableOn pkgs.stdenv.hostPlatform o.value;
27 terminfos = lib.filterAttrs infoFilter pkgs;
28 excludedTerminfos = lib.filterAttrs (
29 _: drv: !(builtins.elem drv.terminfo config.environment.systemPackages)
30 ) terminfos;
31 includedOuts = lib.filterAttrs (
32 _: drv: builtins.elem drv.out config.environment.systemPackages
33 ) terminfos;
34 in
35 {
36 environment = {
37 enableAllTerminfo = true;
38 etc."terminfo-missing".text = builtins.concatStringsSep "\n" (builtins.attrNames excludedTerminfos);
39 etc."terminfo-extra-outs".text = builtins.concatStringsSep "\n" (builtins.attrNames includedOuts);
40 };
41 };
42
43 testScript = ''
44 machine.fail("grep . /etc/terminfo-missing >&2")
45 machine.fail("grep . /etc/terminfo-extra-outs >&2")
46 '';
47}