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

问题描述 投票:0回答:2

当我在 Mac 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".

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

  • 安装到不纯的 nix-shell 中,
  • 将 nix 表达式放入 default.nix 文件并运行
    nix-shell
  • 安装其他 Aspell 词典

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

nix nixos
2个回答
4
投票

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
进行硬编码,因此您无需再次考虑这些环境变量。


0
投票

我知道这是一个老问题,但自从我发现它后,我想给出对我有用的东西。我使用 Nix,我喜欢 Nix,我推广 Nix,但我并不真正了解 Nix。我采取了更实用的方法,这是一个使用英语拼写检查字典设置开发环境的示例。

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };
  outputs = { self, nixpkgs, flake-utils, ... }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
        aspellWithDicts = pkgs.aspellWithDicts (d: [d.en]);
      in
      {
        devShells.default = pkgs.mkShell {
          buildInputs = with pkgs; [
            aspellWithDicts
          ];
          shellHook = ''
            export PS1="nix:# ";
          '';
        };
      }
    );
  }
}

将其放入 flake.nix 中,您应该能够:

# aspell dump dicts
en
en-variant_0
en-variant_1
en-variant_2
en-w_accents
en-wo_accents
en_AU
en_AU-variant_0
en_AU-variant_1
en_AU-w_accents
en_AU-wo_accents
en_CA
en_CA-variant_0
en_CA-variant_1
en_CA-w_accents
en_CA-wo_accents
en_GB
en_GB-ise
en_GB-ise-w_accents
en_GB-ise-wo_accents
en_GB-ize
en_GB-ize-w_accents
en_GB-ize-wo_accents
en_GB-variant_0
en_GB-variant_1
en_GB-w_accents
en_GB-wo_accents
en_US
en_US-variant_0
en_US-variant_1
en_US-w_accents
en_US-wo_accents
© www.soinside.com 2019 - 2024. All rights reserved.