我认为NixOS很棒,但无法弄清楚如何从源代码构建一个包。 unkdestanding nix语言不是问题,但如何知道要在default.nix中放置什么来构建一个包。以gedit的nix表达式为例:
{ 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;
};
}
¿有人能够达成这个解决方案吗?我肯定错过了什么。
答案 0 :(得分:2)
毫无疑问,这样的包装定义对任何人来说都有点压倒性。当您了解各种属性的影响时,您的示例包变得非常简单。
根据我的经验,您可以得到如下的包装定义。我假设您暂时没有从特定于语言的存储库中打包。例如,您可以使用make
构建的内容。
所以,你有它,它的反复试验。使用所需构建工具的经验有很多帮助。
一些提示: