Fil-C on Nix

Filnix wiki

mbrock/filnix

scripts/package-inventory.nix

Native package metadata only: no derivation paths, source realization, or builds. The caller must disable import-from-derivation as an additional boundary.

λnixpkgsPath, names?
nixpkgsPath
namesdefault null
let
8pkgs=
9system=
"x86_64-linux"
10overlays=
[ ]
11config=
12allowAliases=
false

These permit metadata inspection, not permission to build these packages.

14allowBroken=
true
15allowUnfree=
true
16allowUnsupportedSystem=
true
17allowInsecurePredicate=
_: true
used by fields p
20inherit pkgs
lib
21attempt=
value: builtins.tryEvalbuiltins.deepSeqvalue value
used by result values
22inputNames=
inputs: mapp: p.pname or p.name or "<unnamed-input>" inputs
used by fields
23inspect=
λname
let
26p=
uses pkgs used by fields flags result
27fields=
28pname=
p.pname or name
29version=
p.version or null
30description=
p.meta.description or ""
31position=
p.meta.position or null
32availableOnLinux=
lib.meta.availableOnpkgs.stdenv.hostPlatform p
33broken=
p.meta.broken or false
34sourceProvenance=
maps: s.shortName or "unknown" p.meta.sourceProvenance or [ ]
37isLinuxKernel=
let
39flags=
p.buildFlags or [ ]
uses p
in
builtins.isListflags ∧ builtins.elem"vmlinux" flags ∧ lib.anylib.hasPrefix"KBUILD_BUILD_VERSION=" flags
44hasSource=
p ? src ∧ p.src ≢ null
45hasCompiler=
p.stdenv.hasCC or false
46dontBuild=
p.dontBuild or false
47dontConfigure=
p.dontConfigure or false
48doCheck=
p.doCheck or false
49doInstallCheck=
p.doInstallCheck or false
50nativeBuildInputs=
inputNamesp.nativeBuildInputs or [ ]
51buildInputs=
inputNamesp.buildInputs or [ ]
52propagatedBuildInputs=
inputNamesp.propagatedBuildInputs or [ ]
53nativeCheckInputs=
inputNamesp.nativeCheckInputs or [ ]
54checkInputs=
inputNamesp.checkInputs or [ ]

The active builder's attributes are stronger evidence than matching a compiler somewhere in its transitive build-time dependency closure.

57builderHints=
58rust=
p ? cargoDeps ∨ p ? cargoHash ∨ p ? cargoLock
59go=
p ? goModules ∨ p ? vendorHash
60haskell=
p ? isHaskellLibrary
61python=
p.pythonModule or null ≢ null
62ocaml=
p ? duneVersion
63node=
p ? npmDeps ∨ p ? yarnOfflineCache
uses inputNames lib p pkgs used by values
66values=
builtins.mapAttrs_: attempt fields
uses attempt fields used by result
67result=
¬lib.isDerivationp
→
70attrPath=
71status=
"not-a-package"
else
75attrPath=
76status=
"evaluated"
77metadata=
builtins.mapAttrs_: v: if v.success then v.value else null values
80unavailableFields=
builtins.attrNameslib.filterAttrs_: v: ¬v.success values
in
result.success
→
result.value
else
90attrPath=
91status=
"evaluation-error"
in
if names ≡ null then builtins.attrNamespkgs else mapinspect names