当尝试在 NixOs 上从源代码构建uckless/surf和suckless/st时,make找不到X11头文件,例如X11/X.h
和X11/Xatom.h
。我确实已经Xlib
安装了。我还依稀记得 nixos 将库放在一个有趣的地方,而且我看到有人建议将一些路径放入C_INCLUDE
变量。感觉好像快到了,还缺少什么吗?
更新:添加解决了和/home/username/.nix-profile/include
的问题,但现在它抱怨我安装了但它没有显示。我在哪里可以找到它?X.h
Xatom.h
X11/extensions/render.h
libXrender
答案1
surf 和 st 已经打包(这里和这里) 在 nixpkgs 中
我喜欢 nix 的一件事是可以覆盖任何构建过程中的步骤,这也意味着您可以更改代码源(例如:src
属性)。
举个例子,假设您将 surf 克隆到了/path/to/surf
.一个default.nix
将覆盖src
,但使用所有其他构建步骤的文件将是:
{ pkgs ? import <nixpkgs> {}
}:
pkgs.surf.overrideDerivation (old: {
src = /path/to/surf;
})
上面你会使用nix-build default.nix
您还可以使用的另一种方法是使用nix-shell
.nix-shell
是一个工具,可以将您带入 nix 环境,不运行 nix 构建步骤,但所有依赖项(buildInputs、propagatedBuildInputs)都可供您使用。有关更多信息,nix-shell
您可以阅读这里。
使用nix-shell
你可以这样做:
% cd /path/where/above/mentioned/default.nix/is
% nix-shell
或者你可以克隆 nixpkgs
% cd /path/to/nixpkgs
... here edit file pkgs/applications/misc/st/default.nix
% nix-build -A st # to build st
% nix-shell -A st # to enter development environment
我希望以上有帮助。