标签: nix

Nix:安装 Haskell 包时跳过单元测试

我正在使用 Nix 在资源有限的共享主机上安装我家下的软件包(因此没有二进制软件包)。我正在尝试安装 git-annex。在构建其依赖项之一 haskell-lens 时,单元测试消耗了太多内存,以至于它们被杀死并且安装失败。

有没有办法跳过单元测试来安装软件包?我查看了 Cabal builder,haskell-packages.nix在我看来,您可以通过设置enableCheckPhase为 false来禁用测试。我在 中尝试了以下操作~/.nixpkgs/config.nix,但测试仍在运行:

{
    packageOverrides = pkgs: with pkgs; {
        # ...other customizations...
        haskellPackages = haskellPackages.override {
            extension = self : super : {
                self.lens = self.disableTest self.lens;
            };
        };
    };
}
Run Code Online (Sandbox Code Playgroud)

compiling package-management haskell nix

9
推荐指数
2
解决办法
3381
查看次数

如何引用 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 将 git 升级到 git-full

我在 Ubuntu 上使用Nix来获得一些软件包的更现代版本,其中之一是 git。当我运行时nix-env -u,会发生以下情况:

% nix-env -u --dry-run '*'
(dry run; not doing anything)
upgrading `git-1.8.5.4' to `git-1.9.0-full'
Run Code Online (Sandbox Code Playgroud)

这不是我想要的 - 我更喜欢普通版本git-1.9.0而不是-full版本。我知道我可以使用 手动升级到普通版本nix-env -i git-1.9.0,但是有没有办法nix-env -u做我想做的事?

upgrade package-management nixpkgs nix

8
推荐指数
1
解决办法
455
查看次数

通过网络将完整的 /nix/store 从一台 nixos 机器复制到另一台机器的最佳方法

目前我使用:

find /nix/store/* -maxdepth 1 | xargs -L <N> nix-copy-closure --sign --gzip --use-substitutes --to <remote machine>

哪里N有一些合理的数字,不会使xargs.

在两台跑步机上执行此操作是否有更惯用的方法?

编辑:

上述方法的优点:

  • 不复制两端存在的闭包。这也意味着您可以停止传输并从中断的地方继续进行,然后进行一些哈希检查开销
  • --use-substitues这将使远程机器首先从二进制缓存下载,然后再发送机器。这在将文件从我的笔记本电脑发送到删除服务器的常见情况下非常有用,与我的笔记本电脑相比,远程服务器的带宽通常是 nix 二进制缓存的 100 倍
  • nix-copy-closure 通过 ssh 复制,以便对传输进行加密。
  • nix-copy-closure,据我所知,不应干扰 nix 存储上发生的任何其他操作。

在线手册页 nix-copy-closure

nixos nix

8
推荐指数
2
解决办法
2074
查看次数

Nix 桌面文件

当我使用 nix 安装 GUI 应用程序时,我看到桌面文件在~/.nix-profile目录中结束,例如:

~/.nix-profile/share/applications/firefox.desktop

但是,我的桌面希望文件在其中/user/share/applications,以便能够为它们创建桌面图标。

有什么方法可以告诉 nix 将桌面文件符号链接到,/user/share/applications这样我就不必手动执行了吗?

谢谢

.desktop nix

8
推荐指数
1
解决办法
3027
查看次数

Nix 如何在非 NixOS 上管理 SystemD 模块?

假设我曾经nix-env在 Ubuntu 主机上安装使用 SystemD 的软件包。需要做什么才能让 Ubuntu 的 SystemD 知道来自 Nix 包的 SystemD 模块?

让我们尝试为Apache Kafka包查找 Nix 安装的.service文件,并从 符号链接它们。/lib/systemd/system/

nix-env -i apache-kafka
sudo systemctl start apache-kafka # Failed to start apache-kafka.service: Unit apache-kafka.service not found.
sudo updatedb && locate apache-kafka.service # No dice
locate kafka | grep service # Just a bunch of `.nix` files
Run Code Online (Sandbox Code Playgroud)

在这里,我根据 Nix包定义中的服务配置名称猜测服务名称。我找不到任何描述该配置如何以及在何处成为 SystemD 服务文件的文档。

当这不起作用时,我开始真正挖掘,假设 Nix 一定在某个地方创建了这个服务文件。但是现在,我开始怀疑它是否存在。那么,Nix 包管理器安装的 SystemD 模块是否应该在 NixOS 之外工作,如果是这样,我们如何使它们工作?

systemd nix

8
推荐指数
3
解决办法
3374
查看次数

如何在 nix 中查看有关包的信息?

我如何获得有关 nix 包的更多详细信息,例如验证它实际上是我认为的那样。

在 Debian 中,我会使用apt-cache show; 但是我如何获得 nix 的类似信息?显示任意包的派生的命令就足够了,因为我可能可以使用该src行来查找托管该项目的网站。

nix

8
推荐指数
1
解决办法
3299
查看次数

如何在 Nixos 中修改我的主机文件?

似乎我的主机文件 ( /etc/hosts) 指向/nix/store/gds7bha3bx0a22pnzw93pgf0666anpyr-etc-hosts并且是只读的。

我打算怎么修改这个文件?

hosts nixos nix

8
推荐指数
1
解决办法
3283
查看次数

如何让systemd服务开机启动

我在 XUbuntu 20.04 上安装了 Nix 包管理器。它添加了一项nix-daemon服务。我想nix-daemon在启动时启动该服务。如果我键入以下命令,该服务将运行并正常工作,直到我停止机器,但重新启动后该服务不会运行,我需要再次运行这些命令。

\n

systemd 似乎禁用了该服务或忘记了它已启用。我如何告诉 systemd 启用该服务并使其保持启用状态?

\n
$ sudo systemctl status nix-daemon\nUnit nix-daemon.service could not be found.\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo systemctl enable nix-daemon\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo systemctl status nix-daemon\n\xe2\x97\x8f nix-daemon.service - Nix Daemon\n     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/nix-daemon.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: inactive (dead)\nTriggeredBy: \xe2\x97\x8f nix-daemon.socket\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo service nix-daemon start\n\xe2\x97\x8f nix-daemon.service - Nix Daemon\n     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/nix-daemon.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: active (running) …
Run Code Online (Sandbox Code Playgroud)

systemd reboot nix

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

nix 包管理器:perl 警告:设置区域设置失败

每当我为 nix 包管理器(例如 nix-channel --update)运行命令时,我都会收到以下警告:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "",
        LC_ALL = "en_US.UTF-8",
        LC_CTYPE = "en_US.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Run Code Online (Sandbox Code Playgroud)

我怀疑它与 nix 有某种关系,因为其他 perl 脚本没有显示这种行为(我尝试perl -e exit过使用 WWW::Curl 的东西)。

更改区域设置确实反映在警告的输出中,但警告仍然显示在我能想到的每个配置中。

操作系统是 openSUSE。

我能做什么?

opensuse perl locale nixos nix

7
推荐指数
2
解决办法
1836
查看次数