let sources = import ./Sources.nix { sourcesFile = ./Sources.json; }; in import sources.nixpkgs { system = __currentSystem; overlays = [ (_: _: { inherit sources; }) (_: pkgs: rec { pinnedDeps = builtins.attrNames (builtins.removeAttrs pkgs.sources ["__functor"]); overridePinnedDeps = builder: pkgs.lib.genAttrs pinnedDeps builder; # Modifies a derivation with our source and version, keeping old build # rules. This will fail if build steps have changed, or if no build # rules are available upstream.. overrideSource = depName: if pkgs ? depName then pkgs.${depName}.overrideAttrs (old: old // rec { name = "${depName}-${version}"; version = pkgs.sources.${depName}.version or pkgs.sources.${depName}.rev; src = pkgs.sources.${depName}; }) else abort "pkg ${depName} not available"; }) (_: pkgs: pkgs.overridePinnedDeps pkgs.overrideSource) (import ./Deps.nix) (_: pkgs: { niv = import pkgs.sources.niv {}; }) ]; config = { allowBroken = true; }; }