安装到 nix 时缺少 Aspell 词典-shell

Aspell dictionaries missing when installed into nix-shell

当我在 Mac OSX OSX 上使用 Nix 将带有英语 Aspell 词典的 Aspell 软件包安装到我的全局环境中时:

$ nix-env -iA nixpkgs.aspell nixpkgs.aspellDicts.en

然后 Aspell 的行为与我预期的一样:

$ aspell dump dicts

en
en-variant_0
...

但是,如果我将软件包安装到 nix-shell 中,那么字典似乎没有正确安装:

$ nix-shell -p aspell aspellDicts.en --pure

$ aspell dump dicts
# nothing printed

$ echo 'word lister to check' | aspell --list
Error: No word lists can be found for the language "en_US".

以下每个变体都会产生相同的问题行为:

任何人都可以建议如何让它工作吗?

aspell 二进制文件由 NixPkgs 包装,以通过 ASPELL_CONF 环境变量提供安装路径(如果尚未指定)。 (详情请cat -v result/bin/aspell

您可以手动指定 ASPELL_CONF,或使用 NIX_PROFILES 环境变量。例如:

$ nix-build -E 'with import <nixpkgs> {};
     buildEnv { name = "aspell-env"; paths = [aspell aspellDicts.en]; }'

$ NIX_PROFILES=./result ./result/bin/aspell dump dicts
en
en-variant_0
[...]
en_US-wo_accents

但是,如果您想构建一个带有字典的独立 aspell 安装,您可以使用 aspellWithDicts:

nix-build -E 'with import <nixpkgs> {}; aspellWithDicts (d: [d.en])'

这将对 ASPELL_CONF 进行硬编码,因此您无需再考虑那些环境变量。