【问题标题】:How to pass customize environment variable (like password) in stack with nix?如何使用 nix 在堆栈中传递自定义环境变量(如密码)?
【发布时间】:2019-09-19 16:50:04
【问题描述】:

我正在使用带有 nix 的堆栈。我需要将环境变量作为数据库密码传递,以便在运行时连接到 Postgres。目前,我在 YAML 中启用了 nix,并自定义了自己的 .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 中的显式密码似乎不好。我想知道有什么好的方法可以解决这个问题?

【问题讨论】:

    标签: haskell haskell-stack nix


    【解决方案1】:

    您可以在 Nix 表达式中使用 builtins.getEnv 函数从外部环境中获取环境变量的值,因此您可以执行以下操作:

    PGPASSWORD = builtins.getEnv "PGPASSWORD";
    

    这只是设置其值的一种方法。你也可以使用import 来导入一个你从不提交给 git 的 Nix 表达式文件,或者你可以使用 builtins.readFile 来读取一个你从不提交给 git 的文件。

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 2016-11-16
      • 1970-01-01
      • 2018-11-03
      • 2022-11-08
      • 2016-05-03
      • 2020-11-11
      • 1970-01-01
      • 2011-09-17
      相关资源
      最近更新 更多