{
  sources ? import ./sources.nix,
  system ? builtins.currentSystem,
  crossSystem ? null,
  config ? {},
}: let
  # our own overlays:
  local-overlays = [];

  globals =
    if builtins.pathExists ../globals.nix
    then [(import ../globals.nix)]
    else builtins.trace "globals.nix missing, please add symlink" [];

  # merge upstream sources with our own:
  upstream-overlays = [
    (_: super: {
      sources = (super.sources or {}) // sources;
    })
  ];

  overlays = local-overlays ++ globals ++ upstream-overlays;
in
  import sources.nixpkgs {inherit overlays system crossSystem config;}