gpt4 book ai didi

Nix:已安装的软件包可以设置用户环境变量吗?

转载 作者:行者123 更新时间:2023-12-04 14:40:58 25 4
gpt4 key购买 nike

我想通过 Nix 定义我的软件的 rc 文件。因此我在 config.nix 中定义了一个新包。这将包含一个配置文件:

{ pkgs, ... }:
{
packageOverrides = pkgs : with pkgs; {
custom-config = import ./custom-config {
inherit (pkgs) stdenv;
};
};
}

然后在 custom-config/default.nix 中,文件被内联定义:
{ stdenv }:

stdenv.mkDerivation rec {
name = "custom-config";
stdenv.mkDerivation {
name = "CustomConfig";
src = builtins.toFile "customrc" ''
# content
'';
};
}

缺少的最后一部分是:将特定环境变量添加到用户默认 shell,如 CUSTOM_CONFIG_RC , 获得相关项目荣誉。

任何人都可以给我一个提示吗?我刚刚开始掌握语言。

最佳答案

典型的 Nix 方法是在不修改用户 shell 的情况下执行此操作,而是使用 makeWrapper 包装使用 RC 文件的程序。这样,您的环境就不需要被只有一个程序需要的变量污染。

buildInputs = [ makeWrapper ];

postInstall = ''
wrapProgram "$out/bin/my-program" --set CUSTOM_CONFIG_RC "$rcFile"
'';
不幸的是 makeWrapper still isn't documented ,但它被广泛使用;我建议使用 examples in the nixpkgs repo 进行 grepping .
(现在记录在 here)

如果您确实希望该变量在您的环境中可用,您的推导可以执行类似的操作
postInstall = ''
mkdir -p $out/share
echo "export CUSTOM_CONFIG_RC=$rcFile" > $out/share/your-rc-setup-script.sh
'';
安装包后,这将最终从 ~/.nix-profile/share/your-rc-setup-script.sh 符号链接(symbolic link)。 ,然后在您的 .bashrc ,你可以用
source $HOME/.nix-profile/share/your-rc-setup-script.sh

关于Nix:已安装的软件包可以设置用户环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39713096/

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