stage: refactor extraPkgs

I have renamed the overlay to “otherPackageSets” because I think that
is more descriptive.

pkgsLocal has been removed because there were concerns that it would
be confusing. None of the other names seemed very useful so I think it
is best to avoid it altogether. pkgsCross is still included,
hopefully, that will not have as much confusion.

pkgsMusl is now available for building Musl packages. It will give you
packages bulit with the Musl libc.

Also added more documentation.

/cc @dezgeg @Ericson2314 @dtzWill
This commit is contained in:
Matthew Bauer 2018-07-05 13:59:03 -04:00
parent d12e7b8d17
commit 5b357d9037

View File

@ -117,29 +117,60 @@ let
lib.optionalAttrs allowCustomOverrides lib.optionalAttrs allowCustomOverrides
((config.packageOverrides or (super: {})) super); ((config.packageOverrides or (super: {})) super);
# Override system. This is useful to build i686 packages on x86_64-linux. # Convenience attributes for instantitating package sets. Each of
forceSystem = system: kernel: nixpkgsFun { # these will instantiate a new version of allPackages. Currently the
localSystem = { # following package sets are provided:
inherit system; #
platform = stdenv.hostPlatform.platform // { kernelArch = kernel; }; # - pkgsCross.<system> where system is a member of lib.systems.examples
}; # - pkgsMusl
}; # - pkgsi686Linux
#
# Convenience attributes for instantitating nixpkgs. Each of these # In addition some utility functions are included for creating the
# will instantiate a new version of allPackages. They map example # above sets.
# attributes to their own thing. #
extraPkgs = self: super: { # - forceLibc
pkgsCross = lib.mapAttrs (n: crossSystem: # - forceSystem
#
# For legacy purposes, callPackage_i686 is also included here.
otherPackageSets = self: super: {
# This maps each entry in lib.systems.examples to its own package
# set. Each of these will contain all packages cross compiled for
# that target system. For instance, pkgsCross.rasberryPi.hello,
# will refer to the "hello" package built for the ARM6-based
# Raspberry Pi.
pkgsCross = lib.mapAttrs (n: crossSystem:
nixpkgsFun { inherit crossSystem; }) nixpkgsFun { inherit crossSystem; })
lib.systems.examples; lib.systems.examples;
pkgsLocal = lib.mapAttrs (n: localSystem:
nixpkgsFun { inherit localSystem; })
lib.systems.examples;
# Used by wine, firefox with debugging version of Flash, ... # All packages built with the Musl libc. This will override the
pkgsi686Linux = forceSystem "i686-linux" "i386"; # default GNU libc on Linux systems. Non-Linux systems are not
callPackage_i686 = self.pkgsi686Linux.callPackage; # supported.
inherit forceSystem; pkgsMusl = self.forceLibc "musl";
# All packages built for i686 Linux.
# Used by wine, firefox with debugging version of Flash, ...
pkgsi686Linux = self.forceSystem "i686-linux" "i386";
# Override default libc. Currently this is only useful on Linux
# systems where you have the choice between Musl & Glibc. In the
# future it may work for other things.
forceLibc = libc: nixpkgsFun {
localSystem = stdenv.hostPlatform // { inherit libc; };
};
# Override the system while preserving platform configuration.
# system refers to the system tuple. kernelArch refers to the
# kernel architecture used (only recognized by Linux kernels,
# currently).
forceSystem = system: kernelArch: nixpkgsFun {
localSystem = {
inherit system;
platform = stdenv.hostPlatform.platform // { inherit kernelArch; };
};
};
# Legacy attributes that are slated for removal...
callPackage_i686 = self.pkgsi686Linux.callPackage;
}; };
# The complete chain of package set builders, applied from top to bottom. # The complete chain of package set builders, applied from top to bottom.
@ -152,7 +183,7 @@ let
trivialBuilders trivialBuilders
splice splice
allPackages allPackages
extraPkgs otherPackageSets
aliases aliases
configOverrides configOverrides
] ++ overlays ++ [ ] ++ overlays ++ [