Loading maintainers/scripts/build.nix +21 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,27 @@ # nix-build build.nix --argstr maintainer <yourname> --argstr system aarch64-linux let pkgs = import ./../../default.nix (removeAttrs args [ "maintainer" ]); # This avoids a common situation for maintainers, where due to Git's behavior of not tracking # directories, they have an empty directory somewhere in `pkgs/by-name`. Because that directory # exists, `pkgs/top-level/by-name-overlay.nix` picks it up and attempts to read `package.nix` out # of it... which doesn't exist, since it's empty. # # We don't want to run the code below on every instantiation of `nixpkgs`, as the `pkgs/by-name` # eval machinery is quite performance sensitive. So we use the internals of the `by-name` overlay # to implement our own way to avoid an evaluation failure for this script. # # See <https://github.com/NixOS/nixpkgs/issues/338227> for more motivation for this code block. overlay = self: super: { _internalCallByNamePackageFile = file: if builtins.pathExists file then super._internalCallByNamePackageFile file else null; }; nixpkgsArgs = removeAttrs args [ "maintainer" "overlays" ] // { overlays = args.overlays or [] ++ [ overlay ]; }; pkgs = import ./../../default.nix nixpkgsArgs; maintainer_ = pkgs.lib.maintainers.${maintainer}; packagesWith = cond: return: set: (pkgs.lib.flatten Loading Loading
maintainers/scripts/build.nix +21 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,27 @@ # nix-build build.nix --argstr maintainer <yourname> --argstr system aarch64-linux let pkgs = import ./../../default.nix (removeAttrs args [ "maintainer" ]); # This avoids a common situation for maintainers, where due to Git's behavior of not tracking # directories, they have an empty directory somewhere in `pkgs/by-name`. Because that directory # exists, `pkgs/top-level/by-name-overlay.nix` picks it up and attempts to read `package.nix` out # of it... which doesn't exist, since it's empty. # # We don't want to run the code below on every instantiation of `nixpkgs`, as the `pkgs/by-name` # eval machinery is quite performance sensitive. So we use the internals of the `by-name` overlay # to implement our own way to avoid an evaluation failure for this script. # # See <https://github.com/NixOS/nixpkgs/issues/338227> for more motivation for this code block. overlay = self: super: { _internalCallByNamePackageFile = file: if builtins.pathExists file then super._internalCallByNamePackageFile file else null; }; nixpkgsArgs = removeAttrs args [ "maintainer" "overlays" ] // { overlays = args.overlays or [] ++ [ overlay ]; }; pkgs = import ./../../default.nix nixpkgsArgs; maintainer_ = pkgs.lib.maintainers.${maintainer}; packagesWith = cond: return: set: (pkgs.lib.flatten Loading