1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-25 10:41:16 +02:00

Make the choice of stdenv for the dev shell properly affect all deps

We have per-stdenv package sets, so we should be using them.
This commit is contained in:
John Ericson 2024-11-04 15:13:10 -05:00
parent 39fd4705ac
commit 9e1bc9c224
2 changed files with 17 additions and 14 deletions

View file

@ -295,18 +295,20 @@
devShells = let devShells = let
makeShell = import ./packaging/dev-shell.nix { inherit lib devFlake; }; makeShell = import ./packaging/dev-shell.nix { inherit lib devFlake; };
prefixAttrs = prefix: lib.mapAttrs' (k: v: lib.nameValuePair "${prefix}-${k}" v);
in in
forAllSystems (system: forAllSystems (system:
let prefixAttrs "native" (forAllStdenvs (stdenvName: makeShell {
makeShells = prefix: pkgs: pkgs = nixpkgsFor.${system}.stdenvs."${stdenvName}Packages";
lib.mapAttrs' })) //
(k: v: lib.nameValuePair "${prefix}-${k}" v) lib.optionalAttrs (!nixpkgsFor.${system}.native.stdenv.isDarwin) (
(forAllStdenvs (stdenvName: makeShell pkgs pkgs.${stdenvName})); prefixAttrs "static" (forAllStdenvs (stdenvName: makeShell {
in pkgs = nixpkgsFor.${system}.stdenvs."${stdenvName}Packages".pkgsStatic;
(makeShells "native" nixpkgsFor.${system}.native) // })) //
(lib.optionalAttrs (!nixpkgsFor.${system}.native.stdenv.isDarwin) prefixAttrs "cross" (forAllCrossSystems (crossSystem: makeShell {
(makeShells "static" nixpkgsFor.${system}.static) // pkgs = nixpkgsFor.${system}.cross.${crossSystem};
(forAllCrossSystems (crossSystem: let pkgs = nixpkgsFor.${system}.cross.${crossSystem}; in makeShell pkgs pkgs.stdenv))) // }))
) //
{ {
default = self.devShells.${system}.native-stdenvPackages; default = self.devShells.${system}.native-stdenvPackages;
} }

View file

@ -1,10 +1,11 @@
{ lib, devFlake }: { lib, devFlake }:
pkgs: stdenv: { pkgs }:
(pkgs.nix.override { forDevShell = true; }).overrideAttrs (attrs: (pkgs.nix.override { forDevShell = true; }).overrideAttrs (attrs:
let let
stdenv = pkgs.nixDependencies.stdenv;
buildCanExecuteHost = stdenv.buildPlatform.canExecute stdenv.hostPlatform; buildCanExecuteHost = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
modular = devFlake.getSystem stdenv.buildPlatform.system; modular = devFlake.getSystem stdenv.buildPlatform.system;
transformFlag = prefix: flag: transformFlag = prefix: flag: