Wil*_*llW 5 docker gitlab-ci nix
我正在尝试使用 Nix 作为统一我的本地开发环境和我正在使用的基于 docker 的 Gitlab CI 构建的一种方式。
我有一个完美的简单 shell.nix - 我可以在本地运行 nix-shell 并获得我需要的一切。
如果,在我的 CI 配置中,我将其nixos/nix:latest用作我的 docker 映像,并将所有命令nix-shell --run "xxx"都包含在内。这nix-shell所有的地方是繁琐的维护,难以阅读什么是真正回事。我想做的是将该配置作为第一个命令以某种方式应用于 docker 映像,以便该环境可用于所有后续构建命令。
我想我想要的是类似的东西,nix-env -f shell.nix -i但失败了,“这个派生不是为了构建,不是为了中止”。
提前致谢。
您可以使用buildEnv将您的工具组合成一个派生。
默认.nix:
{ pkgs ? import <nixpkgs> {} }:
pkgs.buildEnv {
name = "my-tools";
paths = [
pkgs.hello
pkgs.figlet
];
}
Run Code Online (Sandbox Code Playgroud)
现在您可以在 docker 镜像中安装您的工具:
nix-env -i -f default.nix
Run Code Online (Sandbox Code Playgroud)
并在您的shell.nix 中使用它:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "shell-dummy";
buildInputs = [ (import ./default.nix { inherit pkgs; }) ];
}
Run Code Online (Sandbox Code Playgroud)
另请参阅Nixpkgs 手册中的声明性包管理部分。
| 归档时间: |
|
| 查看次数: |
1070 次 |
| 最近记录: |