问题标签 [nixos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4086 浏览

shell - 将 nix-shell 配置为使用 Bash 以外的 shell?

我在 NixOS 15 和 nix-shell v1.10 上。我现在使用 Zsh 作为我的主要 shell,并且当我在由 Nix 表达式构建的开发环境中工作时,我也想在 nix-shell 中将它与 Oh-My-Zsh 结合使用。

如果有帮助,这里是我为 Rails 项目设置的 Nix 环境之一:

** 编辑 **

以这种方式运行命令不会在 CLI 提示符中表明我在 nix-shell 中。有没有一种简单的方法可以检测到这一点,以便我可以在我的 ? 中快速编写脚本zshrc

0 投票
1 回答
581 浏览

nixos - 如何使用克隆的 nixpkgs 重建 nixos 包?

我真的很喜欢 nixos/nix 的确定性,但我无法理解为我的使用定制包的最佳方式。我使用该属性的成功有限,nixpkgs.config.packageOverrides但这很痛苦,而且我发现它失败的频率比它的工作频率高(例如,我花了数周时间试图覆盖我在稳定和不稳定渠道中获得的 virtualbox 版本,但它从未正常工作)。

我的下一个尝试是克隆 nixpkgs 存储库并尝试直接修改表达式。我认为如果我将克隆的路径添加到$NIX_PATH. 但是,重建似乎没有接受我的更改。我还尝试了https://nixos.org/wiki/Create_and_debug_nix_packagesnixos-rebuild -I $NIXPKGS switch中描述的变体,但它也没有接受我的更改。

这种克隆方法是否可行,如果可以,我做错了什么?

0 投票
2 回答
2832 浏览

nixos - 如何收集 NixOS 系统的完整配置?

这些天我读了一些关于 NixOS 的文章并尝试了它,因为我的印象是它可以让我只用一个文件配置 Linux。

当我使用它时,我用 安装了一堆包nix-env,所以它们最终没有出现在 中configuration.nix,但我可以稍后简单地卸载它们并configuration.nix手动添加它们。我有类似的东西npm i -g <package>会在全球范围内安装它,所以它最终会出现在configuration.nix并且可以简单地复制到另一台机器上。

zsh此外,我安装了类似and之类的东西atom,它们具有完全不同的配置和自定义方法(bashscript、javascript、less 等)。

Nix/NixOS 是否也有办法跟踪特定于包的配置?

它是否已经发生而我没有看到?就像包的 nix 表达式知道包将在哪里存储其配置等。

我的意思是,很高兴我可以将这些包添加到主配置中,当在另一台 PC 上使用它时,我安装了相同的软件,但我仍然看到自己为已安装的包编写了相当多的配置。

0 投票
1 回答
1478 浏览

haskell - Cabal 在 NixOS 上构建时找不到外国库

我正在尝试使用 cabal2nix 在 NixOS 上构建一个内部 Haskell 项目。它包装(并因此依赖于)一个外部库,在 Ubuntu 上将通过wgetting 源构建,然后运行make && make install && ldconfig​​. 因此,当 cabal 去构建程序时,它显然能够找到适当的头文件(位于/usr/local/include/ta-lib或中/usr/include/ta-lib)。

在 Nix 上,我理解的过程是设置一个 .nix 文件来指定如何获取和构建源代码,然后 Nix 设置隔离的构建环境。当我这样做时,会正确获取并构建外部库。

当 Nix 运行配置步骤时,它看起来没问题:

在 Nix 商店中使用--extra-include-dirs--extra-lib-dirs设置为正确的路径。但是,当它开始构建时,它会抱怨,

不幸的是,我不明白阴谋集团如何确定外国图书馆是否存在。我在这里读到(Haskell 如何解决 cabal 错误:缺少对外部库的依赖项?),cabal 将尝试构建和链接一个 C 程序,该程序由它找到的每个头文件组成。所以,不知何故,它没有找到正确的库。

怎么了?这是否与 Ubuntu 中运行 ldconfig 的步骤有关?

0 投票
2 回答
1349 浏览

mysql - nix-shell --command `stack build` 导致 libpq-fe.h:没有这样的文件或目录

我正在尝试在 nixos 上编译我的小项目(一个带有 lambdacms 的 yesod 应用程序)。但是,在使用 cabal2nix (更准确地说是 cabal2nix project-karma.cabal --sha256=0 --shell > shell.nix) 之后,我仍然缺少一个依赖 wrt。似乎是postgresql。

我的 shell.nix 文件如下所示:

输出如下:

我认为没有太多遗漏,所以指针会很好。还有什么奇怪的,那就是“nix-shell”可以工作,但随后用“stack exec yesod devel”告诉我

当使用 mysql 代替时,我得到

将 pkgconfig 添加到我的全局配置后,构建似乎更进一步,因此 shell.nix 似乎被忽略了一些。

(到目前为止我尝试过的来源: https ://groups.google.com/forum/#!topic/haskell-stack/_ZBh01VP_fo )

更新:似乎我忽略了手册的这一部分 http://nixos.org/nixpkgs/manual/#using-stack-together-with-nix 但是,想到的第一个想法(stack --extra-lib -dirs=/nix/store/c6qy7n5wdwl164lnzha7vpc3av9yhnga-postgresql-libpq-0.9.1.1/lib build) 还没有工作,很可能我需要使用 --extra-include-dirs 或尝试其中一种变体。不过,stack 仍在尝试在相同版本中构建 postgresql-libpq 似乎很奇怪。

更新2:目前正在尝试“堆栈--extra-lib-dirs=/nix/store/1xf77x47d0m23nbda0azvkvj8w8y77c7-postgresql-9.4.5/lib--extra-include-dirs=/nix/store/1xf77x47d0m23nbda0azvkvj8w8y77c7-postgresql-9.4.5/包括构建”,看起来很有希望。看起来不像尼克斯方式,但仍然如此。

更新3:仍然得到

这很奇怪,因为 libpq.so.5 包含在 /nix/store/1xf77x47d0m23nbda0azvkvj8w8y77c7-postgresql-9.4.5/lib 中。额外的

也无济于事。

Update4:顺便说一下,yesod devel 与 stack exec yesod devel 的作用相同。我的库已下载到 /nix/store 但无法识别。也许我需要让“build-nix”工作,而 yesod devel 在这里不起作用?

为了完整起见,这里是 stack.yaml

下周末,我将查看 https://pr06lefs.wordpress.com/2014/09/27/compiling-a-yesod-project-on-nixos/ 和其他搜索结果。

0 投票
1 回答
3567 浏览

nix - Nix 中的构建与运行时依赖关系

我刚刚开始掌握 Nix,如果我错过了文档中问题的答案,我深表歉意。

我想使用 Nix 来设置具有最少库和可执行文件集的安全生产机器。我不希望出现任何编译器或其他构建工具,因为这些可能是安全风险。

当我安装一些包时,它们似乎只依赖于最小的运行时依赖集。例如,如果我安装apache-tomcat-8.0.23,那么我将获得一个 Java 运行时 (JRE) 和包含 Tomcat 的预构建 JAR 文件。

另一方面,一些包似乎包含一个完整的构建工具链作为依赖项。以另一个基于 Java 的示例为例,当我安装spark-1.4.0Nix 时,会拉下包含编译器的 Java 开发工具包 (JDK),它还会拉下 Maven 构建工具等。

所以,我的问题如下:

  1. Nix 包在构建和运行时依赖项之间有什么区别吗?
  2. 为什么有些包似乎依赖于构建工具,而另一些只需要运行时?这一切都取决于包作者如何包装应用程序吗?
  3. 如果一个包包含我不想要的构建依赖项,作为操作员,除了为同一个应用程序设计我自己的替代包之外,我能做些什么吗?

非常感谢。

0 投票
2 回答
1357 浏览

nixos - NixOS 列出所有可能的配置选项

几天前我开始使用 NixOS。似乎所有东西都有一个配置选项,例如hardware.opengl.driSupport32Bitor system.copySystemConfiguration

但问题是:我能看到所有可用的选项吗?举几个例子:

  • 我应该如何知道除了“kde4”、“kde5”和“gnome3”之外还有哪些可用的桌面管理器?
  • accelFactor除了and之外,我还可以使用哪些突触选项twoFingerScroll
0 投票
3 回答
1257 浏览

nixos - 如何为 NixOS 代添加标签

当我启动我的机器时,它会在列表中显示所有代,但将它们命名为“49 代”、“50 代”等。

有没有办法给世代添加标签,这样我以后可以很容易地看到发生了什么变化?我想要一个可选的提交消息之类的东西,所以它可能像“第 49 代 - 切换到 KDE5”、“第 50 代 - 切换回 gnome3”。

0 投票
1 回答
303 浏览

linux - 使用 unshare 并仍在执行原始功能

我正在尝试根据此页面上的说明进行概括并制作一个 shell 脚本,特别是在这里:https ://nixos.org/wiki/How_to_add_files_to_the_nix-store#Large_files因为 Nix 无法处理 4.5 GB 文件,我退出了的内存错误。

因此...

我目前的代码是:

...想法是它会被调用sudo -HE

问题是unshare立即启动一个新的 bash shell 并且“父”代码停止运行,这当然对我不利,因为我需要完成该逻辑。此外,我需要保留当前用户的环境,因为我需要路径nix-store等仍然有效,因此sudo -HE使用。

0 投票
1 回答
979 浏览

linux - 硬编码的 bin 路径和 NixOS

当我尝试在 NixOS 15.09 上手动安装某些软件时,我得到(sh -x是获取 exec 日志):

实际上 /bin/ 中没有 bash 程序

但是,当我检查脚本时,我没有看到任何提及它,所以它一定是某个子程序在寻找它。顺便说一句,我想这可能是脚本明智地从 bash 开始#!/usr/bin/env bash而不是直接从 bash 开始的原因。

任何人都知道一个幸运的方式来处理这个?