-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy patheval.nix
75 lines (65 loc) · 3.08 KB
/
eval.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{
#
# All these arguments can be overriden in production build
#
nixpkgs ? (builtins.fetchTree {
repo = "nixpkgs";
ref = "master";
owner = "nixos";
type = "github";
})
, pkgs ? import nixpkgs { }
, repo ? nixpkgs.outPath
}:
let
inherit (pkgs) lib;
make-disk-image = import (repo + "/nixos/lib/make-disk-image.nix");
tools = import ./tools.nix { inherit lib; };
inherit (tools) getDocsFromSet collectFns toFile;
# Contains seperate sets of metadata.
# which then allows running seperate evaluations. Once at a time for better error tracing and memory management.
docs = {
############# Recusive analysis sets
lib = collectFns lib { initialPath = [ "lib" ]; };
rustTools = collectFns pkgs.rustPackages {
initialPath = [ "pkgs" "rustPackages" ];
};
appimageTools = collectFns pkgs.appimageTools { initialPath = [ "pkgs" "appimageTools" ]; };
elmPackages = collectFns pkgs.elmPackages { initialPath = [ "pkgs" "elmPackages" ]; };
agdaPackages = collectFns pkgs.agdaPackages { initialPath = [ "pkgs" "agdaPackages" ]; ignores = [ "lib" ]; };
dhallPackages = collectFns pkgs.dhallPackages { initialPath = [ "pkgs" "dhallPackages" ]; ignores = [ "lib" ]; };
beamPackages = collectFns pkgs.beamPackages { initialPath = [ "pkgs" "beamPackages" ]; };
testers = collectFns pkgs.testers { initialPath = [ "pkgs" "testers" ]; };
dotnetCorePackages = collectFns pkgs.dotnetCorePackages { initialPath = [ "pkgs" "dotnetCorePackages" ]; };
emacsPackages = collectFns pkgs.emacsPackages { initialPath = [ "pkgs" "emacsPackages" ]; };
gradle-packages = collectFns pkgs.gradle-packages { initialPath = [ "pkgs" "gradle-packages" ]; };
ociTools = collectFns pkgs.ociTools { initialPath = [ "pkgs" "ociTools" ]; };
releaseTools = collectFns pkgs.releaseTools { initialPath = [ "pkgs" "releaseTools" ]; };
snapTools = collectFns pkgs.snapTools { initialPath = [ "pkgs" "snapTools" ]; };
vmTools = collectFns pkgs.vmTools { initialPath = [ "pkgs" "vmTools" ]; };
############# Non-recursive analysis sets (pkgs.<nested>)
# pkgs cannot be analysed recursively
# nested documentation items must be configured specifically
stdenvTools = getDocsFromSet pkgs.stdenv [ "pkgs" "stdenv" ];
pkgs = getDocsFromSet pkgs [ "pkgs" ];
dockerTools = getDocsFromSet pkgs.dockerTools [ "pkgs" "dockerTools" ];
writers = getDocsFromSet pkgs.writers [ "pkgs" "writers" ];
haskellLib = getDocsFromSet pkgs.haskell.lib [ "pkgs" "haskell" "lib" ];
pythonTools =
getDocsFromSet pkgs.pythonPackages [ "pkgs" "pythonPackages" ];
builtins =
getDocsFromSet builtins [ "builtins" ];
mkDiskImage = [
{
path = [ "make-disk-image" ];
docs = tools.getDocs { inherit make-disk-image; } "make-disk-image";
}
];
};
all = builtins.foldl' (acc: name: acc ++ docs.${name}) [ ] (builtins.attrNames docs);
# generate test_data for pesto
test_data = {
attrsets = getDocsFromSet lib.attrsets [ "lib" "attrsets" ];
};
in
{ inherit tools pkgs docs toFile getDocsFromSet collectFns all test_data; }