标签: nix

杀死在 nix-shell 中启动的后台进程

我正在使用工具和数据库开发一个简单的数据科学环境。Python当我输入时nix-shell,我启动数据库进程。我想在退出环境时将其降速。

我该如何使用trapnix实现这一目标?

trap background-process nix

4
推荐指数
1
解决办法
1627
查看次数

如何在 Nixos 中设置自定义 DNS 服务器?

我在手册中没有找到太多信息。

我试图手动修改文件,/etc/resolv.conf但这似乎被某些东西覆盖了?

我怎样才能做到这一点?

dns nixos nix

4
推荐指数
2
解决办法
2540
查看次数

如何打印 Nix 表达式的所有可用属性

为了找出存储库无法构建的原因,我想枚举源中的所有可用属性。也就是说,列出所有ATTR适合 的内容nix-build --attr ATTR https://github.com/USER/REPO/tarball/X.Y.Z

nix

4
推荐指数
1
解决办法
1884
查看次数

列出我通过运行 nix-env --delete- Generations 丢失的包

我使用NixOS,Nix 版本 1.10。nix-env,Nix包管理器的安装命令,创建新一代每次安装软件包时这样,不同的包配置存储在不同的代中,您可以在它们之间切换以回滚到系统的先前状态,即从现在起安装了不同的包。

\n\n

假设我安装了包emacs,它创建了新一代:

\n\n
$ nix-env --list-generations\n1   2015-09-18 14:32:51   \n2   2015-09-19 15:41:58   (current)\n
Run Code Online (Sandbox Code Playgroud)\n\n

第 1 代不包含emacs,第 2 代包含 。如果我切换到第 1 代并删除第 2 代,那就意味着我输了emacs

\n\n
$ nix-env --switch-generation 1\nswitching from generation 2 to 1\n$ nix-env --delete-generations 2\nremoving generation 2\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行操作的信息--delete-generations太少,添加--verbose或未--dry-run指定删除的包列表。甚至-vvvvv没有帮助。

\n\n
$ nix-env --dry-run --delete-generations 14\n(dry run; not doing anything)\nwould remove generation 14\n$ nix-env --verbose --dry-run --delete-generations …
Run Code Online (Sandbox Code Playgroud)

nix

3
推荐指数
1
解决办法
2167
查看次数

处理 NixOS 缺少依赖项 ~ libpng-dev

远离像 Arch 这样的操作系统,其中软件包大多可用,如何处理缺少的开发依赖项,例如libpng-dev

我有一个 Node 包依赖问题 - pngquant-bin. 它依靠libpng-dev包来构建pngquant-bin。libpng&pngquant都在 Nixpkgs 中可用,但它试图找到libpng-dev.

在这种情况下最好的解决方案是什么?例如设置一个覆盖,从源创建包...

研究:

使用libpng-config --cflag显示开发标题的位置。我假设我可以以某种方式将 NPM 包定向到这些头文件以构建pngquant-bin二进制文件。

我在 GitHub 上记录了一个问题,其中提供了更多详细信息:https : //github.com/svanderburg/node2nix/issues/123

免责声明:我是 NixOS 的新手 - 来自 Arch。我感谢任何建议,喜欢 NixOS!

dependencies software-installation nixos nix

3
推荐指数
1
解决办法
509
查看次数

如何在 Nixos 上安装 Python pip?

我似乎找不到pip在 Nixos 上安装的合适软件包?

python nixos nixpkgs nix

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

如何发现并安装特定版本的软件包?

nix在 Linux 系统上安装了,并添加了频道nixpkgs-unstable。我现在可以安装软件包,例如gcc

% nix-env --install gcc
installing 'gcc-7.4.0'
...
created 78 symlinks in user environment
Run Code Online (Sandbox Code Playgroud)

如果我看着如目录~/.nix-defexpr/channels/nixpkgs/pkgs/development/compilers/gcc/,我会发现,有多种版本,全部完成default.nix

  • 如何使用ghc-env --query或其他一些友好工具发现这些隐藏的软件包版本?

  • 假设我想在gcc我的用户环境中安装版本 8,我应该怎么做?我可以一次获得多个版本gcc吗?

我一直在浏览 Nix 的大量文档,但到处都在说“使用 Nix,你可以一次安装任意数量的版本,它们永远不会发生冲突”,同时“你应该只安装一次一个版本,在您选择的频道中进行硬编码”。它有什么意义?

nix

3
推荐指数
2
解决办法
1525
查看次数

如何强制 Nix 通过在本地构建软件包来“安装软件包”,而不是下载预先构建的二进制文件?

通过“安装包”,我的意思是评估 Nix 构建表达式(使用nix-envnix-shell -p等)从源代​​码构建,而不是使用替代品

最初发布在 Stackoverflow 上,但 [Charles Duffy 指出][3] 如果它是关于命令行工具或配置的,那么在这里更合适。仍然把它留在那里,因为我假设通过使用 Nix 语言本身可以强制包始终从源代码编译,我只是还不知道如何做。(或者如果实际上不可能,有人会指出,那么这个问题就属于这里。)

nixos nix

3
推荐指数
1
解决办法
3913
查看次数

如何获得 Nix 导数的大小?

构建推导后是否可以计算出推导的大小?例如,在 后nixos-rebuild,新的派生需要多少空间(不包括由于先前构建而节省的任何存储空间)?

nixos nix

3
推荐指数
1
解决办法
1815
查看次数

在 Nix 中,如何构建具有 Python 安装后脚本的包?

我正在尝试为Foliate进行 Nix 推导,这是我的第一个真正的推导,所以我还不知道我在做什么。

这是我到目前为止所拥有的。它构建并安装,但失败并出现以下错误:

Running custom install script '/build/source/build-aux/meson/postinstall.py'
Failed to run install script '/build/source/build-aux/meson/postinstall.py'
FAILED: meson-install
/nix/store/2b4cdbcs1xbqjna5dr4qrr1p9p9bgm98-meson-0.51.2/bin/meson install --no-rebuild
ninja: build stopped: subcommand failed.
builder for '/nix/store/32vn9xlxlk9zb7vmpm90bz5i5qq59fjc-foliate-1.5.3.drv' failed with exit code 1
error: build of '/nix/store/32vn9xlxlk9zb7vmpm90bz5i5qq59fjc-foliate-1.5.3.drv' failed
Run Code Online (Sandbox Code Playgroud)

我尝试添加python3为构建依赖项,但这似乎不起作用。我缺少什么?

另外,还有其他方法可以改进或简化这个推导吗?

nixos nix

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

如何将频道回滚到上一代 Nixos?

$ sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
...
 600   2020-01-25 21:01:11   
 601   2020-02-03 13:44:19   
 602   2020-02-09 14:06:20   
 603   2020-02-09 14:11:11   
 604   2020-02-11 00:02:43   
 605   2020-02-13 12:26:22   
 606   2020-02-16 16:40:02   (current)
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得 Nixos 一代的提交/频道生成(这是一个东西吗?) - 并可能将频道回滚到它?

或者换句话说,我怎样才能将我的“通道状态”回滚到 605 代时的状态?


为什么我想知道是因为几天前我做了一个sudo nix-channel --updatesudo nixos-rebuild switch但无论发生了什么包更新 - 导致系统不稳定。

因此,为了缓解这种情况,我启动并继续使用老年代 ( 605)。

我现在想更新 Nixos 系统配置中的特定软件包,并将更改基于605最新的606.


我确实找到了/sf/ask/2736327121/ ( nix-channel --rollback..) 但是我可能已经更新了几次频道 - 所以“最后”频道状态可能不是什么我需要。

我确实注意到您可以指定通道代号作为此命令的参数 - 但我不确定这与 nixos 代之间有什么关系?它似乎与我尝试605的结果不同:

sudo nix-channel --rollback 605
error: …
Run Code Online (Sandbox Code Playgroud)

nixos nix

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

如何在全球范围内用 LibreSSL 替换 OpenSSL?

鉴于即将发布的关键 OpenSSL 3.0.7 安全修复程序,如何将 NixOS 更改为全局使用 LibreSSL 而不是 OpenSSL?

nixos nix

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

无法安装 vim 插件

我无法在 nixOS 上安装任何 vim 插件

运行命令:

nix-env -i vimplugin-Syntastic
Run Code Online (Sandbox Code Playgroud)

将这些作为最后 3 行输出:

output path ‘/nix/store/3bcdjr4hwgrimcimdg2115prpfm83xca-syntastic-4782184’ should 
have r:sha256 hash ‘1vjh3a3w6whvaws86z48j8bp7dgavvix8a2kgjn195axs83hpkxy’, instead has 
‘01a1px7i77ajc4y8czwhkhhqif89q6yf26wpjakh3asdv7cvnidm’

cannot build derivation ‘/nix/store/478msfr0bm6h64zp0ri5c98dgkp4zrcd-vimplugin-
Syntastic-2015-02-17.drv’: 1 dependencies couldn't be built

error: build of ‘/nix/store/478msfr0bm6h64zp0ri5c98dgkp4zrcd-vimplugin-Syntastic-2015-02-17.drv’ failed
Run Code Online (Sandbox Code Playgroud)

在最后几行之前,所有其他输出都显示正常。我在使用其他 vim 插件时遇到了完全相同的问题,我尝试了其他 4 个插件:

Solarized
Nerd commenter
airline
ctrp
Run Code Online (Sandbox Code Playgroud)

vim vi nixos nixpkgs nix

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