summary refs log tree commit diff
path: root/pkgs/applications/editors/gnome-builder/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/editors/gnome-builder/default.nix')
-rw-r--r--pkgs/applications/editors/gnome-builder/default.nix155
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;
+  };
+}