at 25.11-pre 1.2 kB view raw
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 terminfos = lib.filterAttrs infoFilter pkgs; 27 excludedTerminfos = lib.filterAttrs ( 28 _: drv: !(builtins.elem drv.terminfo config.environment.systemPackages) 29 ) terminfos; 30 includedOuts = lib.filterAttrs ( 31 _: drv: builtins.elem drv.out config.environment.systemPackages 32 ) terminfos; 33 in 34 { 35 environment = { 36 enableAllTerminfo = true; 37 etc."terminfo-missing".text = builtins.concatStringsSep "\n" (builtins.attrNames excludedTerminfos); 38 etc."terminfo-extra-outs".text = builtins.concatStringsSep "\n" (builtins.attrNames includedOuts); 39 }; 40 }; 41 42 testScript = '' 43 machine.fail("grep . /etc/terminfo-missing >&2") 44 machine.fail("grep . /etc/terminfo-extra-outs >&2") 45 ''; 46}