mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 05:56:15 +02:00
flake.nix: Tidy packages
build matrix code
flatMapAttrs is easier to read because it introduces the values before using them, kind of like a `let` bindings with multiple values. The repeated comments remind the reader of the purpose of the innermost attrsets, which is actually very simple. Knowing that they go right into the result should help a lot with building a mental model for this pattern.
This commit is contained in:
parent
052f1320dd
commit
e28e6b96bb
1 changed files with 33 additions and 29 deletions
62
flake.nix
62
flake.nix
|
@ -351,36 +351,40 @@
|
|||
// devFlake.checks.${system} or {}
|
||||
);
|
||||
|
||||
packages = forAllSystems (system: {
|
||||
inherit (nixpkgsFor.${system}.native)
|
||||
changelog-d;
|
||||
default = self.packages.${system}.nix;
|
||||
nix-internal-api-docs = nixpkgsFor.${system}.native.nix-internal-api-docs;
|
||||
nix-external-api-docs = nixpkgsFor.${system}.native.nix-external-api-docs;
|
||||
} // lib.concatMapAttrs
|
||||
# We need to flatten recursive attribute sets of derivations to pass `flake check`.
|
||||
(pkgName: {}: {
|
||||
"${pkgName}" = nixpkgsFor.${system}.native.${pkgName};
|
||||
"${pkgName}-static" = nixpkgsFor.${system}.static.${pkgName};
|
||||
} // lib.concatMapAttrs
|
||||
(crossSystem: {}: {
|
||||
"${pkgName}-${crossSystem}" = nixpkgsFor.${system}.cross.${crossSystem}.${pkgName};
|
||||
})
|
||||
(lib.genAttrs crossSystems (_: { }))
|
||||
// lib.concatMapAttrs
|
||||
(stdenvName: {}: {
|
||||
"${pkgName}-${stdenvName}" = nixpkgsFor.${system}.stdenvs."${stdenvName}Packages".${pkgName};
|
||||
})
|
||||
(lib.genAttrs stdenvs (_: { })))
|
||||
{
|
||||
"nix" = { };
|
||||
# Temporarily disabled because GitHub Actions OOM issues. Once
|
||||
# the old build system is gone and we are back to one build
|
||||
# system, we should reenable these.
|
||||
#"nix-util" = { };
|
||||
#"nix-store" = { };
|
||||
#"nix-fetchers" = { };
|
||||
packages = forAllSystems (system:
|
||||
{ # Here we put attributes that map 1:1 into packages.<system>, ie
|
||||
# for which we don't apply the full build matrix such as cross or static.
|
||||
inherit (nixpkgsFor.${system}.native)
|
||||
changelog-d;
|
||||
default = self.packages.${system}.nix;
|
||||
nix-internal-api-docs = nixpkgsFor.${system}.native.nix-internal-api-docs;
|
||||
nix-external-api-docs = nixpkgsFor.${system}.native.nix-external-api-docs;
|
||||
}
|
||||
# We need to flatten recursive attribute sets of derivations to pass `flake check`.
|
||||
// flatMapAttrs
|
||||
{ # Components we'll iterate over in the upcoming lambda
|
||||
"nix" = { };
|
||||
# Temporarily disabled because GitHub Actions OOM issues. Once
|
||||
# the old build system is gone and we are back to one build
|
||||
# system, we should reenable these.
|
||||
#"nix-util" = { };
|
||||
#"nix-store" = { };
|
||||
#"nix-fetchers" = { };
|
||||
}
|
||||
(pkgName: {}: {
|
||||
# These attributes go right into `packages.<system>`.
|
||||
"${pkgName}" = nixpkgsFor.${system}.native.${pkgName};
|
||||
"${pkgName}-static" = nixpkgsFor.${system}.static.${pkgName};
|
||||
}
|
||||
// flatMapAttrs (lib.genAttrs crossSystems (_: { })) (crossSystem: {}: {
|
||||
# These attributes go right into `packages.<system>`.
|
||||
"${pkgName}-${crossSystem}" = nixpkgsFor.${system}.cross.${crossSystem}.${pkgName};
|
||||
})
|
||||
// flatMapAttrs (lib.genAttrs stdenvs (_: { })) (stdenvName: {}: {
|
||||
# These attributes go right into `packages.<system>`.
|
||||
"${pkgName}-${stdenvName}" = nixpkgsFor.${system}.stdenvs."${stdenvName}Packages".${pkgName};
|
||||
})
|
||||
)
|
||||
// lib.optionalAttrs (builtins.elem system linux64BitSystems) {
|
||||
dockerImage =
|
||||
let
|
||||
|
|
Loading…
Reference in a new issue