问题标签 [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.
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
?
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
中描述的变体,但它也没有接受我的更改。
这种克隆方法是否可行,如果可以,我做错了什么?
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 上使用它时,我安装了相同的软件,但我仍然看到自己为已安装的包编写了相当多的配置。
haskell - Cabal 在 NixOS 上构建时找不到外国库
我正在尝试使用 cabal2nix 在 NixOS 上构建一个内部 Haskell 项目。它包装(并因此依赖于)一个外部库,在 Ubuntu 上将通过wget
ting 源构建,然后运行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 的步骤有关?
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/ 和其他搜索结果。
nix - Nix 中的构建与运行时依赖关系
我刚刚开始掌握 Nix,如果我错过了文档中问题的答案,我深表歉意。
我想使用 Nix 来设置具有最少库和可执行文件集的安全生产机器。我不希望出现任何编译器或其他构建工具,因为这些可能是安全风险。
当我安装一些包时,它们似乎只依赖于最小的运行时依赖集。例如,如果我安装apache-tomcat-8.0.23
,那么我将获得一个 Java 运行时 (JRE) 和包含 Tomcat 的预构建 JAR 文件。
另一方面,一些包似乎包含一个完整的构建工具链作为依赖项。以另一个基于 Java 的示例为例,当我安装spark-1.4.0
Nix 时,会拉下包含编译器的 Java 开发工具包 (JDK),它还会拉下 Maven 构建工具等。
所以,我的问题如下:
- Nix 包在构建和运行时依赖项之间有什么区别吗?
- 为什么有些包似乎依赖于构建工具,而另一些只需要运行时?这一切都取决于包作者如何包装应用程序吗?
- 如果一个包包含我不想要的构建依赖项,作为操作员,除了为同一个应用程序设计我自己的替代包之外,我能做些什么吗?
非常感谢。
nixos - NixOS 列出所有可能的配置选项
几天前我开始使用 NixOS。似乎所有东西都有一个配置选项,例如hardware.opengl.driSupport32Bit
or system.copySystemConfiguration
。
但问题是:我能看到所有可用的选项吗?举几个例子:
- 我应该如何知道除了“kde4”、“kde5”和“gnome3”之外还有哪些可用的桌面管理器?
accelFactor
除了and之外,我还可以使用哪些突触选项twoFingerScroll
?
nixos - 如何为 NixOS 代添加标签
当我启动我的机器时,它会在列表中显示所有代,但将它们命名为“49 代”、“50 代”等。
有没有办法给世代添加标签,这样我以后可以很容易地看到发生了什么变化?我想要一个可选的提交消息之类的东西,所以它可能像“第 49 代 - 切换到 KDE5”、“第 50 代 - 切换回 gnome3”。
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
使用。
linux - 硬编码的 bin 路径和 NixOS
当我尝试在 NixOS 15.09 上手动安装某些软件时,我得到(sh -x
是获取 exec 日志):
实际上 /bin/ 中没有 bash 程序
但是,当我检查脚本时,我没有看到任何提及它,所以它一定是某个子程序在寻找它。顺便说一句,我想这可能是脚本明智地从 bash 开始#!/usr/bin/env bash
而不是直接从 bash 开始的原因。
任何人都知道一个幸运的方式来处理这个?