我认为 NixOS 很棒,但无法弄清楚如何从源代码构建包。理解Nix 表达式语言不是问题,而是知道要default.nix构建一个包要放入什么内容。
以 Nix 表达式为例gedit:
{ stdenv, intltool, fetchurl, enchant, isocodes
, pkgconfig, gtk3, glib
, bash, wrapGAppsHook, itstool, libsoup, libxml2
, gnome3, librsvg, gdk_pixbuf, file, gspell }:
stdenv.mkDerivation rec {
inherit (import ./src.nix fetchurl) name src;
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
buildInputs = [ gtk3 glib intltool itstool enchant isocodes
gdk_pixbuf gnome3.defaultIconTheme librsvg libsoup
gnome3.libpeas gnome3.gtksourceview libxml2
gnome3.gsettings_desktop_schemas gnome3.dconf file gspell ];
enableParallelBuilding = true;
preFixup = ''
gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ gnome3.libpeas gnome3.gtksourceview ]}")
'';
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Gedit;
description = "Official text editor of the GNOME desktop environment";
maintainers = gnome3.maintainers;
license = licenses.gpl2;
platforms = platforms.linux;
};
}
Run Code Online (Sandbox Code Playgroud)
有人如何得出这个解决方案?我肯定错过了什么。
毫不奇怪,这样的包定义对任何人来说都有点难以承受。当您了解各种属性的作用时,您的示例包就会变得非常简单。
根据我的经验,您会得到如下这样的包定义。我假设您现在没有从特定于语言的存储库中打包某些内容。make例如,您可以使用 来构建的东西。
现在你已经知道了,这就是反复试验。使用所需构建工具的经验会很有帮助。
一些提示:
| 归档时间: |
|
| 查看次数: |
4577 次 |
| 最近记录: |