Skip to content
Snippets Groups Projects
Commit 40527d79 authored by test_nonet's avatar test_nonet
Browse files

use overlays argument of <nixpkgs> instead of custom code

The custom code returns the overlay instead of all packages but we
can sort-of fake it by filtering the resulting package set.

The custom code doesn't add the new packages to pkgsBuildBuild and it
doesn't create spliced packages for them so it won't work for cross
compiling.
parent 78838d47
No related branches found
No related tags found
No related merge requests found
let
mkPkgsCross = system: binaryCacheSystem: let
nixpkgs = import <nixpkgs>;
overlay = import ./overlay.nix;
addOverlay = overlay: extraArgs: extraArgs // { overlays = [ overlay ] ++ (extraArgs.overlays or []); };
mkPkgsCross = system: binaryCacheSystem: extraArgs: let
# see https://nixos.wiki/wiki/Cross_Compiling#Lazy_cross-compiling
pkgsFromCache = import <nixpkgs> {
pkgsFromCache = nixpkgs ({
config = {};
overlays = [];
overlays = [ ];
system = binaryCacheSystem;
} // extraArgs);
getPkgsFromCache = pkgs: { inherit (pkgs) ncurses python3; };
takeSomePkgsFromCache = self: super: getPkgsFromCache pkgsFromCache // {
pkgsBuildHost = super.pkgsBuildHost // getPkgsFromCache pkgsFromCache;
};
maybeTakeSomePkgsFromCache = if binaryCacheSystem == null then x: x else addOverlay takeSomePkgsFromCache;
pkgsCross = import <nixpkgs> {
overlays = if binaryCacheSystem == null
then []
else [(self: super: {
inherit (pkgsFromCache)
TODO;
})];
pkgsCross = nixpkgs ({
crossSystem.config = system;
};
} // maybeTakeSomePkgsFromCache extraArgs);
in pkgsCross;
in
{ crossAarch64 ? false
, crossSystem ? if crossAarch64 then "aarch64-unknown-linux-gnu" else null
, crossBinaryCacheSystem ? if crossAarch64 then "aarch64-linux" else null
, system ? builtins.currentSystem
, extraArgs ? {}
, pkgs ? if crossSystem == null
then import <nixpkgs> { inherit system; }
else mkPkgsCross crossSystem crossBinaryCacheSystem
then import <nixpkgs> ({ inherit system; } // (addOverlay overlay extraArgs))
else mkPkgsCross crossSystem crossBinaryCacheSystem (addOverlay overlay extraArgs)
}:
let
# copied from https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/splice.nix
splicedPackages = pkgs: pkgs.splicePackages {
inherit (pkgs)
pkgsBuildBuild pkgsBuildHost pkgsBuildTarget
pkgsHostHost pkgsHostTarget
pkgsTargetTarget
;
} // {
# These should never be spliced under any circumstances
inherit (pkgs)
pkgsBuildBuild pkgsBuildHost pkgsBuildTarget
pkgsHostHost pkgsHostTarget
pkgsTargetTarget
buildPackages pkgs targetPackages
;
inherit (pkgs.stdenv) buildPlatform targetPlatform hostPlatform;
};
super = pkgs // { callPackage = pkgs.lib.callPackageWith (splicedPackages self); };
self = super // locals;
locals = import ./overlay.nix self super;
in locals
pkgs.lib.attrsets.mapAttrs (name: _: pkgs."${name}") (overlay {} {})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment