{ inputs.nixpkgs.url = "nixpkgs"; outputs = { self, nixpkgs, ...}: let # For now we only support x86 system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; overlays = [ self.overlays.default ]; }; in { bscOverlay = import ./overlay.nix; overlays.default = self.bscOverlay; # full nixpkgs with our overlay applied legacyPackages.${system} = pkgs; # packages added by our overlay packages.${system} = let inherit (builtins) attrNames removeAttrs; inherit (nixpkgs.lib) flip filterAttrs getAttrs pipe isDerivation; in # extract the names of the packages from the overlay, then get the # actual packages from the full package set with the overlay applied pipe (self.overlays.default null { inherit (nixpkgs) lib; }) [ attrNames (flip getAttrs pkgs) (flip removeAttrs [ "bsc" ]) (filterAttrs (_: isDerivation)) ]; # propagate nixpkgs lib, so we can do bscpkgs.lib inherit (nixpkgs) lib; }; }