forked from lix-project/lix
Merge pull request #5573 from Ericson2314/docker-nixpkgs-idioms
Make docker.nix match Nixpkgs's idioms
This commit is contained in:
commit
480c883f36
31
docker.nix
31
docker.nix
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue