Как передать переменную среды (например, пароль) в стек с nix? - PullRequest
1 голос
/ 19 сентября 2019

Я использую стек с nix.Мне нужно передать переменную среды в качестве пароля БД для подключения к Postgres во время выполнения.В настоящее время я включил nix в YAML и настроил свой собственный .nix для добавления пароля в .nix.

stack.yaml:

nix:
  enable: true
  pure: true
  shell-file: shell.nix

shell.nix:

{ghc}:
with (import <nixpkgs> {});

haskell.lib.buildStackProject {
  inherit ghc;
  name = "myenv";
  buildInputs = [ postgresql_10 ];
  PGPASSWORD = "pw";
}

Но когда я хочу зафиксировать код в GitHub / Gitlab и перейти к конвейеру CI / CD, явный пароль в .nix кажется не очень хорошим.Я хотел бы знать, есть ли хороший способ справиться с этим?

1 Ответ

1 голос
/ 19 сентября 2019

Вы можете использовать функцию builtins.getEnv в выражении Nix для значения переменной среды из внешней среды, так что вы можете сделать что-то вроде этого:

PGPASSWORD = builtins.getEnv "PGPASSWORD";

Это только один из способовустановить его значение.Вы также можете использовать import для импорта файла выражений Nix, который вы никогда не делаете в git, или вы можете использовать builtins.readFile для чтения файла, который вы никогда не делаете в git.

...