Merge pull request #5573 from Ericson2314/docker-nixpkgs-idioms

Make docker.nix match Nixpkgs's idioms
This commit is contained in:
Eelco Dolstra 2021-11-17 10:05:05 +01:00 committed by GitHub
commit 480c883f36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,24 +2,11 @@
, lib ? pkgs.lib , lib ? pkgs.lib
, name ? "nix" , name ? "nix"
, tag ? "latest" , tag ? "latest"
, crossSystem ? null
, channelName ? "nixpkgs" , channelName ? "nixpkgs"
, channelURL ? "https://nixos.org/channels/nixpkgs-unstable" , channelURL ? "https://nixos.org/channels/nixpkgs-unstable"
}: }:
let let
buildPkgs = pkgs; defaultPkgs = with pkgs; [
targetPkgs =
if crossSystem != null && crossSystem != pkgs.system
then {
aarch64-linux = pkgs.pkgsCross.aarch64-multiplatform;
armv7l-linux = pkgs.pkgsCross.armv7l-hf-multiplatform.system;
x86_64-linux = pkgs.pkgsCross.gnu64;
powerpc64le-linux = pkgs.pkgsCross.musl-power;
i686-linux = pkgs.pkgsCross.gnu32;
}.${crossSystem}
else pkgs;
defaultPkgs = with targetPkgs; [
nix nix
bashInteractive bashInteractive
coreutils-full coreutils-full
@ -140,17 +127,17 @@ let
baseSystem = baseSystem =
let let
nixpkgs = targetPkgs.path; nixpkgs = pkgs.path;
channel = targetPkgs.runCommand "channel-nixos" { } '' channel = pkgs.runCommand "channel-nixos" { } ''
mkdir $out mkdir $out
ln -s ${nixpkgs} $out/nixpkgs ln -s ${nixpkgs} $out/nixpkgs
echo "[]" > $out/manifest.nix echo "[]" > $out/manifest.nix
''; '';
rootEnv = pkgs.buildEnv { rootEnv = pkgs.buildPackages.buildEnv {
name = "root-profile-env"; name = "root-profile-env";
paths = defaultPkgs; paths = defaultPkgs;
}; };
profile = targetPkgs.runCommand "user-environment" { } '' profile = pkgs.buildPackages.runCommand "user-environment" { } ''
mkdir $out mkdir $out
cp -a ${rootEnv}/* $out/ cp -a ${rootEnv}/* $out/
@ -175,7 +162,7 @@ let
EOF EOF
''; '';
in in
targetPkgs.runCommand "base-system" pkgs.runCommand "base-system"
{ {
inherit passwdContents groupContents shadowContents nixConfContents; inherit passwdContents groupContents shadowContents nixConfContents;
passAsFile = [ passAsFile = [
@ -225,12 +212,12 @@ let
echo "${channelURL} ${channelName}" > $out/root/.nix-channels echo "${channelURL} ${channelName}" > $out/root/.nix-channels
mkdir -p $out/bin $out/usr/bin mkdir -p $out/bin $out/usr/bin
ln -s ${targetPkgs.coreutils}/bin/env $out/usr/bin/env ln -s ${pkgs.coreutils}/bin/env $out/usr/bin/env
ln -s ${targetPkgs.bashInteractive}/bin/bash $out/bin/sh ln -s ${pkgs.bashInteractive}/bin/bash $out/bin/sh
''; '';
in in
targetPkgs.dockerTools.buildLayeredImageWithNixDb { pkgs.dockerTools.buildLayeredImageWithNixDb {
inherit name tag; inherit name tag;