gpt4 book ai didi

docker - 如何在 docker 镜像中应用 nix-shell 配置?

转载 作者:行者123 更新时间:2023-12-02 18:10:22 32 4
gpt4 key购买 nike

我正在尝试使用 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将您的工具组合成一个单一的派生。

default.nix :

{ pkgs ? import <nixpkgs> {} }:

pkgs.buildEnv {
name = "my-tools";
paths = [
pkgs.hello
pkgs.figlet
];
}

现在您可以在 docker 镜像中安装您的工具:
nix-env -i -f default.nix

并在您的 中使用它shell.nix :
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
name = "shell-dummy";
buildInputs = [ (import ./default.nix { inherit pkgs; }) ];
}

另见 Declarative Package Management Nixpkgs 手册中的部分。

关于docker - 如何在 docker 镜像中应用 nix-shell 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58421505/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com