aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2021-11-16 10:32:26 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2021-11-16 11:04:25 -0500
commit8368a8aff1b70e98a4997d803e34bfdc2acf10f4 (patch)
tree2f571a0e86488cb89e1f6053d81ff26705291a7d
parent8c93a481af2ce8fbcdb9e2bbcc9559d52703112f (diff)
Make docker.nix match Nixpkgs's idioms
1. `target` is the wrong name, that is just for compilers per out standard terminology. We just need to worry about "build" and "host". 2. We only need one `pkgs`. `pkgs.buildPackages` is how we get anything we need at build time. 3. `crossSystem` is the name of a nixpkgs parameter that is actually an attribute set, not a 2-part "cpu-os" string. 3. `pkgsCross` effectively evaluates Nixpkgs twice, which is inefficient. It is just there for people poking around the CLI / REPL (and I am skeptical even that is a good idea), and *not* what written code should use, especially code that is merely parametric in the package set it is given. 4. We don't need to memoize Nixpkgs here because we are only doing one pkg set at a time (no `genAttrs`) so it's better to just delete all this stuff. `flake.nix` instead would do something like that, with `genAttrs` (though without `pkgsCross`), if and when we have hydra jobs for cross builds.
-rw-r--r--docker.nix31
1 files changed, 9 insertions, 22 deletions
diff --git a/docker.nix b/docker.nix
index 316d57a36..2a13c23fb 100644
--- a/docker.nix
+++ b/docker.nix
@@ -2,24 +2,11 @@
, lib ? pkgs.lib
, name ? "nix"
, tag ? "latest"
-, crossSystem ? null
, channelName ? "nixpkgs"
, channelURL ? "https://nixos.org/channels/nixpkgs-unstable"
}:
let
- buildPkgs = 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; [
+ defaultPkgs = with pkgs; [
nix
bashInteractive
coreutils-full
@@ -140,17 +127,17 @@ let
baseSystem =
let
- nixpkgs = targetPkgs.path;
- channel = targetPkgs.runCommand "channel-nixos" { } ''
+ nixpkgs = pkgs.path;
+ channel = pkgs.runCommand "channel-nixos" { } ''
mkdir $out
ln -s ${nixpkgs} $out/nixpkgs
echo "[]" > $out/manifest.nix
'';
- rootEnv = pkgs.buildEnv {
+ rootEnv = pkgs.buildPackages.buildEnv {
name = "root-profile-env";
paths = defaultPkgs;
};
- profile = targetPkgs.runCommand "user-environment" { } ''
+ profile = pkgs.buildPackages.runCommand "user-environment" { } ''
mkdir $out
cp -a ${rootEnv}/* $out/
@@ -175,7 +162,7 @@ let
EOF
'';
in
- targetPkgs.runCommand "base-system"
+ pkgs.runCommand "base-system"
{
inherit passwdContents groupContents shadowContents nixConfContents;
passAsFile = [
@@ -225,12 +212,12 @@ let
echo "${channelURL} ${channelName}" > $out/root/.nix-channels
mkdir -p $out/bin $out/usr/bin
- ln -s ${targetPkgs.coreutils}/bin/env $out/usr/bin/env
- ln -s ${targetPkgs.bashInteractive}/bin/bash $out/bin/sh
+ ln -s ${pkgs.coreutils}/bin/env $out/usr/bin/env
+ ln -s ${pkgs.bashInteractive}/bin/bash $out/bin/sh
'';
in
-targetPkgs.dockerTools.buildLayeredImageWithNixDb {
+pkgs.dockerTools.buildLayeredImageWithNixDb {
inherit name tag;