2023-11-16 04:20:00 +00:00
|
|
|
{ lib }:
|
2020-04-24 23:36:52 +00:00
|
|
|
# We provide three paths to get the credentials into the builder's
|
|
|
|
# environment:
|
|
|
|
#
|
|
|
|
# 1. Via impureEnvVars. This method is difficult for multi-user Nix
|
|
|
|
# installations (but works very well for single-user Nix
|
|
|
|
# installations!) because it requires setting the environment
|
|
|
|
# variables on the nix-daemon which is either complicated or unsafe
|
|
|
|
# (i.e: configuring via Nix means the secrets will be persisted
|
|
|
|
# into the store)
|
|
|
|
#
|
|
|
|
# 2. If the DOCKER_CREDENTIALS key with a path to a credentials file
|
|
|
|
# is added to the NIX_PATH (usually via the '-I ' argument to most
|
|
|
|
# Nix tools) then an attempt will be made to read credentials from
|
|
|
|
# it. The semantics are simple, the file should contain two lines
|
|
|
|
# for the username and password based authentication:
|
|
|
|
#
|
|
|
|
# $ cat ./credentials-file.txt
|
|
|
|
# DOCKER_USER=myusername
|
|
|
|
# DOCKER_PASS=mypassword
|
|
|
|
#
|
|
|
|
# ... and a single line for the token based authentication:
|
|
|
|
#
|
|
|
|
# $ cat ./credentials-file.txt
|
|
|
|
# DOCKER_TOKEN=mytoken
|
|
|
|
#
|
|
|
|
# 3. A credential file at /etc/nix-docker-credentials.txt with the
|
|
|
|
# same format as the file described in #2 can also be used to
|
|
|
|
# communicate credentials to the builder. This is necessary for
|
|
|
|
# situations (like Hydra) where you cannot customize the NIX_PATH
|
|
|
|
# given to the nix-build invocation to provide it with the
|
|
|
|
# DOCKER_CREDENTIALS path
|
|
|
|
let
|
|
|
|
pathParts =
|
|
|
|
(builtins.filter
|
|
|
|
({prefix, path}: "DOCKER_CREDENTIALS" == prefix)
|
|
|
|
builtins.nixPath);
|
|
|
|
in
|
2023-02-16 17:41:37 +00:00
|
|
|
lib.optionalString (pathParts != []) ((builtins.head pathParts).path)
|