summary refs log tree commit diff
path: root/pkgs/desktops/gnome/core/gnome-shell/default.nix
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2021-05-07 23:18:14 +0200
committerJan Tojnar <jtojnar@gmail.com>2021-05-08 09:47:42 +0200
commit468cb5980b56d348979488a74a9b5de638400160 (patch)
tree1426485105b897074e82af80efdd545462edb211 /pkgs/desktops/gnome/core/gnome-shell/default.nix
parentd03a5eb09720fd6ad670df12d8eafbbfcd7ff494 (diff)
downloadnixpkgs-468cb5980b56d348979488a74a9b5de638400160.tar
nixpkgs-468cb5980b56d348979488a74a9b5de638400160.tar.gz
nixpkgs-468cb5980b56d348979488a74a9b5de638400160.tar.bz2
nixpkgs-468cb5980b56d348979488a74a9b5de638400160.tar.lz
nixpkgs-468cb5980b56d348979488a74a9b5de638400160.tar.xz
nixpkgs-468cb5980b56d348979488a74a9b5de638400160.tar.zst
nixpkgs-468cb5980b56d348979488a74a9b5de638400160.zip
gnome: rename from gnome3
Since GNOME version is now 40, it no longer makes sense to use the old attribute name.
Diffstat (limited to 'pkgs/desktops/gnome/core/gnome-shell/default.nix')
-rw-r--r--pkgs/desktops/gnome/core/gnome-shell/default.nix225
1 files changed, 225 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome/core/gnome-shell/default.nix b/pkgs/desktops/gnome/core/gnome-shell/default.nix
new file mode 100644
index 00000000000..66eaafb2cc7
--- /dev/null
+++ b/pkgs/desktops/gnome/core/gnome-shell/default.nix
@@ -0,0 +1,225 @@
+{ fetchurl
+, fetchpatch
+, fetchgit
+, substituteAll
+, lib, stdenv
+, meson
+, ninja
+, pkg-config
+, gnome
+, json-glib
+, gettext
+, libsecret
+, python3
+, polkit
+, networkmanager
+, gtk-doc
+, docbook-xsl-nons
+, at-spi2-core
+, libstartup_notification
+, unzip
+, shared-mime-info
+, libgweather
+, librsvg
+, geoclue2
+, perl
+, docbook_xml_dtd_45
+, desktop-file-utils
+, libpulseaudio
+, libical
+, gobject-introspection
+, wrapGAppsHook
+, libxslt
+, gcr
+, accountsservice
+, gdk-pixbuf
+, gdm
+, upower
+, ibus
+, libnma
+, libgnomekbd
+, gnome-desktop
+, gsettings-desktop-schemas
+, gnome-keyring
+, glib
+, gjs
+, mutter
+, evolution-data-server
+, gtk3
+, gtk4
+, sassc
+, systemd
+, pipewire
+, gst_all_1
+, adwaita-icon-theme
+, gnome-bluetooth
+, gnome-clocks
+, gnome-settings-daemon
+, gnome-autoar
+, asciidoc-full
+, bash-completion
+, mesa
+}:
+
+# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup
+let
+  pythonEnv = python3.withPackages (ps: with ps; [ pygobject3 ]);
+in
+stdenv.mkDerivation rec {
+  pname = "gnome-shell";
+  version = "40.0-unstable-2021-05-01";
+
+  outputs = [ "out" "devdoc" ];
+
+  src = fetchgit {
+    url = "https://gitlab.gnome.org/GNOME/gnome-shell.git";
+    rev = "a8a79c03330427808e776c344f7ebc42782a1b5a";
+    sha256 = "ivHV0SRpnBqsdC7fu1Xhtd/BA55O0UdbUyDLy5KHNYs=";
+    fetchSubmodules = true;
+  };
+  # src = fetchurl {
+  #   url = "mirror://gnome/sources/gnome-shell/${lib.versions.major version}/${pname}-${version}.tar.xz";
+  #   sha256 = "sha256-vOcfQC36qcXiab9lv0iiI0PYlubPmiw0ZpOS1/v2hHg=";
+  # };
+
+  patches = [
+    # Hardcode paths to various dependencies so that they can be found at runtime.
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit libgnomekbd unzip;
+      gsettings = "${glib.bin}/bin/gsettings";
+    })
+
+    # Use absolute path for libshew installation to make our patched gobject-introspection
+    # aware of the location to hardcode in the generated GIR file.
+    ./shew-gir-path.patch
+
+    # Make D-Bus services wrappable.
+    ./wrap-services.patch
+
+    # Fix greeter logo being too big.
+    # https://gitlab.gnome.org/GNOME/gnome-shell/issues/2591
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-shell/commit/ffb8bd5fa7704ce70ce7d053e03549dd15dce5ae.patch";
+      revert = true;
+      sha256 = "14h7ahlxgly0n3sskzq9dhxzbyb04fn80pv74vz1526396676dzl";
+    })
+
+    # Work around failing fingerprint auth
+    (fetchpatch {
+      url = "https://src.fedoraproject.org/rpms/gnome-shell/raw/9a647c460b651aaec0b8a21f046cc289c1999416/f/0001-gdm-Work-around-failing-fingerprint-auth.patch";
+      sha256 = "pFvZli3TilUt6YwdZztpB8Xq7O60XfuWUuPMMVSpqLw=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gettext
+    docbook-xsl-nons
+    docbook_xml_dtd_45
+    gtk-doc
+    perl
+    wrapGAppsHook
+    sassc
+    desktop-file-utils
+    libxslt.bin
+    python3
+    asciidoc-full
+  ];
+
+  buildInputs = [
+    systemd
+    gsettings-desktop-schemas
+    gnome-keyring
+    glib
+    gcr
+    accountsservice
+    libsecret
+    polkit
+    gdk-pixbuf
+    librsvg
+    networkmanager
+    libstartup_notification
+    gjs
+    mutter
+    libpulseaudio
+    evolution-data-server
+    libical
+    gtk3
+    gtk4
+    gdm
+    geoclue2
+    adwaita-icon-theme
+    gnome-bluetooth
+    gnome-clocks # schemas needed
+    at-spi2-core
+    upower
+    ibus
+    gnome-desktop
+    gnome-settings-daemon
+    gobject-introspection
+    mesa
+
+    # recording
+    pipewire
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+
+    # not declared at build time, but typelib is needed at runtime
+    libgweather
+    libnma
+
+    # for gnome-extension tool
+    bash-completion
+    gnome-autoar
+    json-glib
+  ];
+
+  mesonFlags = [
+    "-Dgtk_doc=true"
+  ];
+
+  postPatch = ''
+    patchShebangs src/data-to-c.pl
+    chmod +x meson/postinstall.py
+    patchShebangs meson/postinstall.py
+
+    substituteInPlace src/gnome-shell-extension-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python"
+    substituteInPlace src/gnome-shell-perf-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python"
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      # Until glib’s xdgmime is patched
+      # Fixes “Failed to load resource:///org/gnome/shell/theme/noise-texture.png: Unrecognized image file format”
+      --prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
+    )
+  '';
+
+  postFixup = ''
+    # The services need typelibs.
+    for svc in org.gnome.ScreenSaver org.gnome.Shell.Extensions org.gnome.Shell.Notifications org.gnome.Shell.Screencast; do
+      wrapGApp $out/share/gnome-shell/$svc
+    done
+  '';
+
+  passthru = {
+    mozillaPlugin = "/lib/mozilla/plugins";
+    updateScript = gnome.updateScript {
+      packageName = "gnome-shell";
+      attrPath = "gnome.gnome-shell";
+    };
+  };
+
+  meta = with lib; {
+    description = "Core user interface for the GNOME 3 desktop";
+    homepage = "https://wiki.gnome.org/Projects/GnomeShell";
+    license = licenses.gpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+
+}