diff options
Diffstat (limited to 'pkgs/applications/editors/gnome-builder/default.nix')
-rw-r--r-- | pkgs/applications/editors/gnome-builder/default.nix | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/pkgs/applications/editors/gnome-builder/default.nix b/pkgs/applications/editors/gnome-builder/default.nix new file mode 100644 index 000000000000..db2d07db31e7 --- /dev/null +++ b/pkgs/applications/editors/gnome-builder/default.nix @@ -0,0 +1,155 @@ +{ stdenv +, desktop-file-utils +, docbook_xsl +, docbook_xml_dtd_43 +, fetchpatch +, fetchurl +, flatpak +, glibcLocales +, gnome3 +, gobjectIntrospection +, gspell +, gtk-doc +, gtk3 +, gtksourceview3 +, hicolor-icon-theme +, json-glib +, jsonrpc-glib +, libdazzle +, libxml2 +, meson +, ninja +, ostree +, pcre +, pkgconfig +, python3 +, sysprof +, template-glib +, vala +, webkitgtk +, wrapGAppsHook +}: +let + version = "3.28.4"; + pname = "gnome-builder"; +in stdenv.mkDerivation { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${pname}-${version}.tar.xz"; + sha256 = "0ibb74jlyrl5f6rj1b74196zfg2qaf870lxgi76qzpkgwq0iya05"; + }; + + nativeBuildInputs = [ + #appstream-glib # tests fail if these tools are available + desktop-file-utils + docbook_xsl + docbook_xml_dtd_43 + glibcLocales # for Meson's gtkdochelper + gobjectIntrospection + gtk-doc + hicolor-icon-theme + meson + ninja + pkgconfig + python3.pkgs.wrapPython + wrapGAppsHook + ]; + + buildInputs = [ + flatpak + gnome3.devhelp + gnome3.libgit2-glib + gnome3.libpeas + gnome3.vte + gspell + gtk3 + gtksourceview3 + json-glib + jsonrpc-glib + libdazzle + libxml2 + ostree + pcre + python3 + sysprof + template-glib + vala + webkitgtk + ]; + + outputs = [ "out" "devdoc" ]; + + prePatch = '' + patchShebangs build-aux/meson/post_install.py + ''; + + patches = [ + (fetchpatch { + name = "absolute-shared-library-path.patch"; + url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/1011cabc519fd7322e2d695c79bfce3e18ff6200.patch"; + sha256 = "1g12zziidzrphp527aa8sklfaln4qpjprkz73f0c9w5ph6k252fw"; + }) + (fetchpatch { + name = "python-libprefix.patch"; + url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/43494ce83a347f369ed4cfb8dd71d3b93452736b.patch"; + sha256 = "0kgi3n3g13n1j4xa61ln9xiahcfdc43bxi5mw4yva2d5px445msf"; + }) + (fetchpatch { + name = "ostree-dependency.patch"; + url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/8b11773b65c95f464a0de16b91318c1ca73deeae.patch"; + sha256 = "18r4hd90id0w6r0lzqpw83bcj45nm9jhr46a0ffi1mcayb18mgbk"; + }) + ]; + + mesonFlags = [ + "-Dpython_libprefix=${python3.libPrefix}" + "-Dwith_docs=true" + + # Making the build system correctly detect clang header and library paths + # is difficult. Somebody should look into fixing this. + "-Dwith_clang=false" + ]; + + # Some tests fail due to being unable to find the Vte typelib, and I don't + # understand why. Somebody should look into fixing this. + doCheck = false; + + preInstall = '' + export LC_ALL="en_US.utf-8" + ''; + + pythonPath = with python3.pkgs; requiredPythonModules [ pygobject3 ]; + + preFixup = '' + buildPythonPath "$out $pythonPath" + gappsWrapperArgs+=( + --prefix PYTHONPATH : "$program_PYTHONPATH" + ) + + # Ensure that all plugins get their interpreter paths fixed up. + find $out/lib -name \*.py -type f -print0 | while read -d "" f; do + chmod a+x "$f" + done + ''; + + passthru.updateScript = gnome3.updateScript { packageName = pname; }; + + meta = with stdenv.lib; { + description = "An IDE for writing GNOME-based software"; + longDescription = '' + Global search, auto-completion, source code map, documentation + reference, and other features expected in an IDE, but with a focus + on streamlining GNOME-based development projects. + + This package does not pull in the dependencies needed for every + plugin. If you find that a plugin you wish to use doesn't work, we + currently recommend running gnome-builder inside a nix-shell with + appropriate dependencies loaded. + ''; + homepage = https://wiki.gnome.org/Apps/Builder; + license = licenses.gpl3Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} |