at 24.11-pre 39 lines 1.5 kB view raw
1{ lib }: 2# We provide three paths to get the credentials into the builder's 3# environment: 4# 5# 1. Via impureEnvVars. This method is difficult for multi-user Nix 6# installations (but works very well for single-user Nix 7# installations!) because it requires setting the environment 8# variables on the nix-daemon which is either complicated or unsafe 9# (i.e: configuring via Nix means the secrets will be persisted 10# into the store) 11# 12# 2. If the DOCKER_CREDENTIALS key with a path to a credentials file 13# is added to the NIX_PATH (usually via the '-I ' argument to most 14# Nix tools) then an attempt will be made to read credentials from 15# it. The semantics are simple, the file should contain two lines 16# for the username and password based authentication: 17# 18# $ cat ./credentials-file.txt 19# DOCKER_USER=myusername 20# DOCKER_PASS=mypassword 21# 22# ... and a single line for the token based authentication: 23# 24# $ cat ./credentials-file.txt 25# DOCKER_TOKEN=mytoken 26# 27# 3. A credential file at /etc/nix-docker-credentials.txt with the 28# same format as the file described in #2 can also be used to 29# communicate credentials to the builder. This is necessary for 30# situations (like Hydra) where you cannot customize the NIX_PATH 31# given to the nix-build invocation to provide it with the 32# DOCKER_CREDENTIALS path 33let 34 pathParts = 35 (builtins.filter 36 ({prefix, path}: "DOCKER_CREDENTIALS" == prefix) 37 builtins.nixPath); 38in 39 lib.optionalString (pathParts != []) ((builtins.head pathParts).path)