标签: nix

如何找到 Nix 包的名称以在 configuration.nix 中安装它?

假设我使用nix-env--query操作搜索要安装的软件包:

$ nix-env -qa 'aspell.*en'
aspell-dict-en-7.1-0
Run Code Online (Sandbox Code Playgroud)

我在/etc/nixos/configuration.nixNixOS 的主配置文件中写了这个包名:

environment.systemPackages = with pkgs; [
  aspell-dict-en
];
Run Code Online (Sandbox Code Playgroud)

然而,如果我运行sudo nixos-rebuild switch, NixOS 命令来更新配置并安装declaratively指定的所有系统范围的软件包,它会因错误而中止:

error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5
Run Code Online (Sandbox Code Playgroud)

我知道对于很多包,虽然不是全部,nix-env返回的名称和应该在environment.systemPackages配置选项中指定的名称是不同的,但我不明白其中的逻辑。如何安装通过 找到的软件包nix-env

nixos nix

28
推荐指数
2
解决办法
1万
查看次数

如何在 NixOS 上找出文件属于哪个(未安装)包?

我在NixOS上使用Nix 包管理器。假设我想安装一个提供文件的包。我如何找到提供此文件的包,类似于其他 GNU/Linux 发行版libgtk-x11-2.0.so.0

目前我必须谷歌该文件并找出它可能属于哪个包并在 Nix 存储库中找到相应的包,但我想要一个更惯用的方法。

package-management nixos nix

22
推荐指数
2
解决办法
2475
查看次数

如何将 /etc/nixos/configuration.nix 拆分为单独的模块?

假设我有一个非常简单的NixOS 配置文件

{ config, pkgs, ... }:    
{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];
  # SOME STUFF
  environment.systemPackages = with pkgs; [ emacs gitFull ];
  # SOME STUFF
}
Run Code Online (Sandbox Code Playgroud)

我知道 NixOS 实现了一个模块系统,一个模块就是一个.nix文件。每个.nix文件都应该包含任何有效的Nix 表达式(例如一个函数或一个集合)。这意味着 NixOS 配置文件/etc/nixos/configuration.nix本身就是一个模块,包含一个 Nix 表达式。

我也知道要使另一个模块中的 Nix 表达式对我正在使用的模块可见,我可以使用内置import函数

我想将系统包的声明(包含emacs和的列表gitFull)拆分为 file packages.nix。如何将 NixOS 配置文件拆分为单独的模块?

nixos nix

18
推荐指数
1
解决办法
5073
查看次数

如何为 NixOS/nixpkgs 创建本地存储库?

我找到的创建 Nix 包本地存储库的所有说明都涉及创建主nixpkgs存储库的本地克隆并添加到其中。

有没有一种方法可以创建一个只包含我的本地附加包的小型存储库?

development package-management nixos nixpkgs nix

17
推荐指数
2
解决办法
5017
查看次数

如何在 nix 中打包我的软件或为 nixpkgs 编写我自己的包派生

如何编写一个简单的推导来打包 nix 程序以及如何创建 PR 将其包含在 nixpkgs 中?

(我写这篇文章是因为我找不到简单的解释)

packaging nixos nix

16
推荐指数
1
解决办法
1万
查看次数

如何从缓存/nix 存储中删除单个包?

有没有办法强制从 /nix/store/..

我正在测试我的包的表达式,并希望确保它能够正确重建。

问题是如果我构建我的包一次,下次我再次构建它时它将使用缓存。

我使用这个命令来测试我的包

nix-shell -I nixpkgs=</path/to/repo> -p <package_name>
Run Code Online (Sandbox Code Playgroud)

我不想使用,nix-collect-garbage因为它也删除了很多buildInputs

寻找类似的东西 nix-cg <package_name>

nixos nix

14
推荐指数
1
解决办法
8502
查看次数

如何在 NixOS 之外配置 Nix 环境?

到目前为止,我一直在通过nix-env -i安装包来试用 Nix 包管理器。现在,我想用 a 来管理它~/configuration.nix,就像这里例子一样,这样我就可以在我的点文件中对其进行版本控制。有没有办法从我当前的环境中生成这个配置?

我能找到的有关用户或系统级配置的所有信息都特定于 NixOS,并假设我已运行nixos-generate-config以创建该文件。nixpkgs 不提供此工具,这让我认为它仅用于创建 NixOS 安装,而不用于创建一般配置文件。

另外,为什么 Nix 包管理器在安装时不创建这个文件?如果没有这个文件,Nix(不是 NixOS)用户如何配置他们安装的软件,比如 Vim 插件?

nix

11
推荐指数
1
解决办法
2380
查看次数

哪个 nix-package 提供给定的文件/二进制文件/命令?

我怎样才能找出哪个nixpgs -package 提供了给定的文件/命令,但系统上可能没有安装?

其他包管理器提供此功能,如下所示:

nix有类似的功能吗?

上下文:我试图弄清楚哪个包提供了grep,然后才意识到它是由gnugrep包提供的(谁会想到?)。我正在寻找一种系统的方法来回答此类问题,以避免下次再玩猜谜游戏。

我尝试过的事情:

nix

10
推荐指数
1
解决办法
3643
查看次数

如何在 NixOS 中安装一次性软件包?

我在nixos-16.03频道上有一个 NixOS 盒子。我希望机器保持在最稳定的状态,所以我想避免切换到nixos-unstable频道。

但是,我需要安装比该频道中可用的包更新版本(nodejs-6_x在本例中)。在手册中,有一个部分描述了“一键安装”,起初看起来正是我所需要的。但是,http://hydra.nixos.org上的 Hydra 服务器似乎没有提供该部分中描述.nixpkgnix-install-package工具使用的任何文件。

wiki 还记录了一个可以自定义包的过程(该页面称为Modifying Packages),我认为它可以用于我的目的,尽管我似乎是在与该工具作斗争而不是使用它。

我也在 IRC 中问过这个问题(感谢M-Ralith耐心回答我无知的问题!),但我不太明白如何应用它。建议是“在您的 nixpkgs 配置中覆盖 src 和版本”,这听起来像是我可以.nixpkgs/configuration.nix在我订阅的频道 ( nixos-16.03) 中编写一个 nix 表达式并覆盖包的这些属性。当我询问通道中不存在的包时,建议是“指定整个包而不是仅覆盖 src 和版本”,我认为这意味着我需要复制包的整个 nix 表达式我对......感兴趣。nix-env

对于存在于另一个频道中的软件包,我想安装但留在我当前的频道中,有没有更好的方法?几乎感觉我应该能够做类似的事情nix-build <url> | nix-env -i。理想的做法是安装这个,但没有配置可能会阻止它在以后升级,如果我当前的频道要赶上。

nixos nixpkgs nix

9
推荐指数
1
解决办法
1906
查看次数

如何引用 Nix 包的存储路径?

我想添加与awscli命令完成相关的功能。

在我的特殊情况下,我需要从 获取脚本/nix/store/hvx7xqvjz7r08nsb9kssh1d9s302v3sp-awscli-1.16.106/share/zsh/site-functions/aws_zsh_completer.sh

如何获取/nix/store/hvx7xqvjz7r08nsb9kssh1d9s302v3sp-awscli-1.16.106包 ( awscli) 的存储路径 ( )?因为我不认为硬编码这个参考是理想的。

nix

9
推荐指数
1
解决办法
7734
查看次数

标签 统计

nix ×10

nixos ×7

nixpkgs ×2

package-management ×2

development ×1

packaging ×1