about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/gnome/games
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/gnome/games')
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/aisleriot/default.nix74
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/atomix/default.nix61
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/five-or-more/default.nix65
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/four-in-a-row/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-2048/default.nix65
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-chess/default.nix66
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-klotski/default.nix41
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-mahjongg/default.nix63
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-mines/default.nix38
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-nibbles/default.nix64
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-robots/default.nix73
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-sudoku/default.nix66
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-taquin/default.nix75
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/gnome-tetravex/default.nix76
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/hitori/default.nix65
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/iagno/default.nix77
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/lightsoff/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/quadrapassel/default.nix73
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/swell-foop/default.nix71
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/tali/default.nix69
20 files changed, 1260 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/gnome/games/aisleriot/default.nix b/nixpkgs/pkgs/desktops/gnome/games/aisleriot/default.nix
new file mode 100644
index 000000000000..a56d9e4569b1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/aisleriot/default.nix
@@ -0,0 +1,74 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, gitUpdater
+, pkg-config
+, itstool
+, gtk3
+, wrapGAppsHook
+, meson
+, librsvg
+, libxml2
+, desktop-file-utils
+, guile
+, libcanberra-gtk3
+, ninja
+, appstream-glib
+, yelp-tools
+}:
+
+stdenv.mkDerivation rec {
+  pname = "aisleriot";
+  version = "3.22.30";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "aisleriot";
+    rev = version;
+    sha256 = "sha256-Fj5v2h6xDqf+PPxduxGr3vTy+eZ3aIv0u/ThrheYLGQ=";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    meson
+    ninja
+    appstream-glib
+    pkg-config
+    itstool
+    libxml2
+    desktop-file-utils
+    yelp-tools
+  ];
+
+  buildInputs = [
+    gtk3
+    librsvg
+    guile
+    libcanberra-gtk3
+  ];
+
+  prePatch = ''
+    patchShebangs cards/meson_svgz.sh
+    patchShebangs data/meson_desktopfile.py
+    patchShebangs data/icons/meson_updateiconcache.py
+    patchShebangs src/lib/meson_compileschemas.py
+  '';
+
+  mesonFlags = [
+    "-Dtheme_kde=false"
+  ];
+
+  passthru = {
+    updateScript = gitUpdater {
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Aisleriot";
+    description = "A collection of patience games written in guile scheme";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/atomix/default.nix b/nixpkgs/pkgs/desktops/gnome/games/atomix/default.nix
new file mode 100644
index 000000000000..0d43c8e2ee7d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/atomix/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, wrapGAppsHook
+, python3
+, gettext
+, gnome
+, glib
+, gtk3
+, libgnome-games-support
+, gdk-pixbuf
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "atomix";
+  version = "44.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/atomix/${lib.versions.major finalAttrs.version}/atomix-${finalAttrs.version}.tar.xz";
+    sha256 = "yISTF2iNh9pzTJBjA1YxBSAH8qh5m2xsyRUmWIC1X7Q=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gettext
+    wrapGAppsHook
+    python3
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gdk-pixbuf
+    libgnome-games-support
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "atomix";
+      attrPath = "gnome.atomix";
+    };
+  };
+
+  meta = with lib; {
+    description = "Puzzle game where you move atoms to build a molecule";
+    homepage = "https://wiki.gnome.org/Apps/Atomix";
+    license = licenses.gpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.unix;
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/gnome/games/five-or-more/default.nix b/nixpkgs/pkgs/desktops/gnome/games/five-or-more/default.nix
new file mode 100644
index 000000000000..2b264442eab1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/five-or-more/default.nix
@@ -0,0 +1,65 @@
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gnome
+, gtk3
+, wrapGAppsHook
+, librsvg
+, libgnome-games-support
+, gettext
+, itstool
+, libxml2
+, python3
+, vala
+}:
+
+stdenv.mkDerivation rec {
+  pname = "five-or-more";
+  version = "3.32.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/five-or-more/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "LRDXLu/esyS0R9YyrwwySW4l/BWjwB230vAMm1HQnvQ=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gettext
+    itstool
+    libxml2
+    python3
+    wrapGAppsHook
+    vala
+  ];
+
+  buildInputs = [
+    gtk3
+    librsvg
+    libgnome-games-support
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "five-or-more";
+      attrPath = "gnome.five-or-more";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Five_or_more";
+    description = "Remove colored balls from the board by forming lines";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/four-in-a-row/default.nix b/nixpkgs/pkgs/desktops/gnome/games/four-in-a-row/default.nix
new file mode 100644
index 000000000000..a85da0499215
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/four-in-a-row/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchurl, pkg-config, gnome, gtk3, wrapGAppsHook
+, gettext, meson, gsound, librsvg, itstool, vala
+, python3, ninja, desktop-file-utils }:
+
+stdenv.mkDerivation rec {
+  pname = "four-in-a-row";
+  version = "3.38.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/four-in-a-row/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "10ji60bdfdzb6wk5dkwjc3yww7hqi3yjcx1k1z7x2521h2dpdli1";
+  };
+
+  nativeBuildInputs = [
+    pkg-config wrapGAppsHook gettext meson itstool vala
+    ninja python3 desktop-file-utils
+  ];
+  buildInputs = [ gtk3 gsound librsvg gnome.adwaita-icon-theme ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "four-in-a-row";
+      attrPath = "gnome.four-in-a-row";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Four-in-a-row";
+    description = "Make lines of the same color to win";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-2048/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-2048/default.nix
new file mode 100644
index 000000000000..137521c8bba3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-2048/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchurl
+, fetchpatch
+, wrapGAppsHook
+, meson
+, vala
+, pkg-config
+, ninja
+, itstool
+, clutter-gtk
+, libgee
+, libgnome-games-support
+, gnome
+, gtk3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-twenty-forty-eight";
+  version = "3.38.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-2048/${lib.versions.majorMinor version}/gnome-2048-${version}.tar.xz";
+    sha256 = "0s5fg4z5in1h39fcr69j1qc5ynmg7a8mfprk3mc3c0csq3snfwz2";
+  };
+
+  patches = [
+    # Fix build with meson 0.61
+    # https://gitlab.gnome.org/GNOME/gnome-2048/-/merge_requests/21
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-2048/-/commit/194e22699f7166a016cd39ba26dd719aeecfc868.patch";
+      sha256 = "Qpn/OJJwblRm5Pi453aU2HwbrNjsf+ftmSnns/5qZ9E=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    itstool
+    meson
+    ninja
+    pkg-config
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    clutter-gtk
+    libgee
+    libgnome-games-support
+    gtk3
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-2048";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/2048";
+    description = "Obtain the 2048 tile";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-chess/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-chess/default.nix
new file mode 100644
index 000000000000..43b4628d2bb6
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-chess/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, vala
+, pkg-config
+, desktop-file-utils
+, wrapGAppsHook4
+, gobject-introspection
+, gettext
+, itstool
+, libxml2
+, gnome
+, glib
+, gtk4
+, libadwaita
+, librsvg
+, pango
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-chess";
+  version = "43.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-chess/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "NIUI+PbnRRwHNE/6egmpkM8dKIO8z1M0CdvgKSaNSfI=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkg-config
+    gettext
+    itstool
+    libxml2
+    desktop-file-utils
+    wrapGAppsHook4
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    glib
+    gtk4
+    libadwaita
+    librsvg
+    pango
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-chess";
+      attrPath = "gnome.gnome-chess";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Chess";
+    description = "Play the classic two-player boardgame of chess";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-klotski/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-klotski/default.nix
new file mode 100644
index 000000000000..bdfa9f8ed8f7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-klotski/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchurl, pkg-config, vala, gnome, gtk3, wrapGAppsHook, appstream-glib, desktop-file-utils
+, glib, librsvg, libxml2, gettext, itstool, libgee, libgnome-games-support
+, meson, ninja, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-klotski";
+  version = "3.38.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-klotski/${lib.versions.majorMinor version}/gnome-klotski-${version}.tar.xz";
+    sha256 = "1qm01hdd5yp8chig62bj10912vclbdvywwczs84sfg4zci2phqwi";
+  };
+
+  nativeBuildInputs = [
+    pkg-config vala meson ninja python3 wrapGAppsHook
+    gettext itstool libxml2 appstream-glib desktop-file-utils
+    gnome.adwaita-icon-theme
+  ];
+  buildInputs = [ glib gtk3 librsvg libgee libgnome-games-support ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+      attrPath = "gnome.${pname}";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Klotski";
+    description = "Slide blocks to solve the puzzle";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-mahjongg/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-mahjongg/default.nix
new file mode 100644
index 000000000000..4ca1a535f186
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-mahjongg/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, lib
+, fetchurl
+, pkg-config
+, gnome
+, gtk4
+, wrapGAppsHook4
+, libadwaita
+, librsvg
+, gettext
+, itstool
+, libxml2
+, meson
+, ninja
+, glib
+, vala
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-mahjongg";
+  version = "3.40.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-mahjongg/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "WorIbXY8VmDdkCX3vAgxC5IjRvp+Lfe2SMmJTa4/GD8=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    desktop-file-utils
+    pkg-config
+    libxml2
+    itstool
+    gettext
+    wrapGAppsHook4
+    glib # for glib-compile-schemas
+  ];
+
+  buildInputs = [
+    glib
+    gtk4
+    libadwaita
+    librsvg
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+      attrPath = "gnome.${pname}";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Mahjongg";
+    description = "Disassemble a pile of tiles by removing matching pairs";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-mines/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-mines/default.nix
new file mode 100644
index 000000000000..4640c5842493
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-mines/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv, fetchurl, meson, ninja, vala, pkg-config, gnome, gtk3, wrapGAppsHook
+, librsvg, gettext, itstool, python3, libxml2, libgnome-games-support, libgee, desktop-file-utils }:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-mines";
+  version = "40.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "NQLps/ccs7LnEcDmAZGH/rzCvKh349RW3KtwD3vjEnI=";
+  };
+
+  nativeBuildInputs = [
+    meson ninja vala pkg-config gettext itstool python3
+    libxml2 wrapGAppsHook desktop-file-utils
+  ];
+  buildInputs = [ gtk3 librsvg gnome.adwaita-icon-theme libgnome-games-support libgee ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-mines";
+      attrPath = "gnome.gnome-mines";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Mines";
+    description = "Clear hidden mines from a minefield";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-nibbles/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-nibbles/default.nix
new file mode 100644
index 000000000000..cf7a0038c145
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-nibbles/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, gnome
+, gtk4
+, wrapGAppsHook4
+, librsvg
+, gsound
+, gettext
+, itstool
+, vala
+, libxml2
+, libgee
+, libgnome-games-support_2_0
+, meson
+, ninja
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "gnome-nibbles";
+  version = "4.0.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-nibbles/${lib.versions.majorMinor finalAttrs.version}/gnome-nibbles-${finalAttrs.version}.tar.xz";
+    sha256 = "SF+Mnq03/xr/ANXFfZk40PXc/xyocDHyKkrjhS6HU8U=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkg-config
+    wrapGAppsHook4
+    gettext
+    itstool
+    libxml2
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    gtk4
+    librsvg
+    gsound
+    libgee
+    libgnome-games-support_2_0
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-nibbles";
+      attrPath = "gnome.gnome-nibbles";
+    };
+  };
+
+  meta = with lib; {
+    description = "Guide a worm around a maze";
+    homepage = "https://wiki.gnome.org/Apps/Nibbles";
+    license = licenses.gpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-robots/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-robots/default.nix
new file mode 100644
index 000000000000..e8b5d48efca1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-robots/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, gnome
+, gtk3
+, wrapGAppsHook
+, librsvg
+, gsound
+, gettext
+, itstool
+, libxml2
+, libgnome-games-support
+, libgee
+, meson
+, ninja
+, vala
+, python3
+, desktop-file-utils
+, adwaita-icon-theme
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-robots";
+  version = "40.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-robots/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "04fbykj576dq1h6cycgfhh8wd6yxmlsqykvj188sbwahay42zgvg";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    meson
+    ninja
+    vala
+    python3
+    libxml2
+    wrapGAppsHook
+    gettext
+    itstool
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    gtk3
+    librsvg
+    gsound
+    libgnome-games-support
+    libgee
+    adwaita-icon-theme
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-robots";
+      attrPath = "gnome.gnome-robots";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Robots";
+    description = "Avoid the robots and make them crash into each other";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-sudoku/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
new file mode 100644
index 000000000000..36378775c69d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, vala
+, pkg-config
+, gobject-introspection
+, gettext
+, gtk4
+, gnome
+, wrapGAppsHook4
+, libadwaita
+, libgee
+, json-glib
+, qqwing
+, itstool
+, libxml2
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-sudoku";
+  version = "45.5";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-sudoku/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "jo4rymzaSfBdAGHD+YZgILNj74TDow9bfo7U5BpX/Q8=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkg-config
+    gobject-introspection
+    gettext
+    itstool
+    libxml2
+    desktop-file-utils
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    gtk4
+    libadwaita
+    libgee
+    json-glib
+    qqwing
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-sudoku";
+      attrPath = "gnome.gnome-sudoku";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Sudoku";
+    description = "Test your logic skills in this number grid puzzle";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-taquin/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-taquin/default.nix
new file mode 100644
index 000000000000..e982f83f3ff7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-taquin/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, stdenv
+, fetchurl
+, fetchpatch
+, pkg-config
+, gnome
+, gtk3
+, wrapGAppsHook
+, librsvg
+, gsound
+, gettext
+, itstool
+, libxml2
+, meson
+, ninja
+, vala
+, python3
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-taquin";
+  version = "3.38.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-taquin/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0kw131q0ad0rbsp6qifjc8fjlhvjxyihil8a76kj8ya9mn7kvnwn";
+  };
+
+  patches = [
+    # Fix build with recent Vala.
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-taquin/-/commit/99dea5e7863e112f33f16e59898c56a4f1a547b3.patch";
+      sha256 = "U7djuMhb1XJaKAPyogQjaunOkbBK24r25YD7BgH05P4=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-taquin/-/commit/66be44dc20d114e449fc33156e3939fd05dfbb16.patch";
+      sha256 = "RN41RCLHlJyXTARSH9qjsmpYi1UFeMRssoYxRsbngDQ=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    wrapGAppsHook
+    meson
+    ninja
+    python3
+    gettext
+    itstool
+    libxml2
+    vala
+    desktop-file-utils
+  ];
+  buildInputs = [
+    gtk3
+    librsvg
+    gsound
+    gnome.adwaita-icon-theme
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-taquin";
+      attrPath = "gnome.gnome-taquin";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Taquin";
+    description = "Move tiles so that they reach their places";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/gnome-tetravex/default.nix b/nixpkgs/pkgs/desktops/gnome/games/gnome-tetravex/default.nix
new file mode 100644
index 000000000000..46e512ad316a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/gnome-tetravex/default.nix
@@ -0,0 +1,76 @@
+{ stdenv
+, lib
+, fetchurl
+, fetchpatch
+, pkg-config
+, gnome
+, gtk3
+, wrapGAppsHook
+, libxml2
+, gettext
+, itstool
+, meson
+, ninja
+, python3
+, vala
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-tetravex";
+  version = "3.38.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-tetravex/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "06wihvqp2p52zd2dnknsc3rii69qib4a30yp15h558xrg44z3k8z";
+  };
+
+  patches = [
+    # Fix build with meson 0.61
+    # data/meson.build:37:0: ERROR: Function does not take positional arguments.
+    # data/meson.build:59:0: ERROR: Function does not take positional arguments.
+    # Taken from https://gitlab.gnome.org/GNOME/gnome-tetravex/-/merge_requests/20
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-tetravex/-/commit/80912d06f5e588f6aca966fa516103275e58d94e.patch";
+      sha256 = "2+nFw5sJzbInibKaq3J10Ufbl3CnZWlgnUtzRTZ5G0I=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    itstool
+    libxml2
+    gnome.adwaita-icon-theme
+    pkg-config
+    gettext
+    meson
+    ninja
+    python3
+    vala
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    gtk3
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-tetravex";
+      attrPath = "gnome.gnome-tetravex";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Tetravex";
+    description = "Complete the puzzle by matching numbered tiles";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/hitori/default.nix b/nixpkgs/pkgs/desktops/gnome/games/hitori/default.nix
new file mode 100644
index 000000000000..e416a7f0343f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/hitori/default.nix
@@ -0,0 +1,65 @@
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gnome
+, glib
+, gtk3
+, cairo
+, wrapGAppsHook
+, libxml2
+, python3
+, gettext
+, itstool
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "hitori";
+  version = "44.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/hitori/${lib.versions.major finalAttrs.version}/hitori-${finalAttrs.version}.tar.xz";
+    sha256 = "QicL1PlSXRgNMVG9ckUzXcXPJIqYTgL2j/kw2nmeWDs=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gettext
+    itstool
+    desktop-file-utils
+    libxml2
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    cairo
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "hitori";
+      attrPath = "gnome.hitori";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Hitori";
+    description = "GTK application to generate and let you play games of Hitori";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/gnome/games/iagno/default.nix b/nixpkgs/pkgs/desktops/gnome/games/iagno/default.nix
new file mode 100644
index 000000000000..eb27430be4e9
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/iagno/default.nix
@@ -0,0 +1,77 @@
+{ lib, stdenv
+, fetchurl
+, fetchpatch
+, pkg-config
+, gtk3
+, gnome
+, gdk-pixbuf
+, librsvg
+, wrapGAppsHook
+, itstool
+, gsound
+, libxml2
+, meson
+, ninja
+, python3
+, vala
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "iagno";
+  version = "3.38.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/iagno/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "097dw1l92l73xah9l56ka5mi3dvx48ffpiv33ni5i5rqw0ng7fc4";
+  };
+
+  patches = [
+    # Fix build with recent Vala.
+    # https://gitlab.gnome.org/GNOME/dconf-editor/-/merge_requests/15
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/iagno/-/commit/e8a0aeec350ea80349582142c0e8e3cd3f1bce38.patch";
+      sha256 = "OO1x0Yx56UFzHTBsPAMYAjnJHlnTjdO1Vk7q6XU8wKQ=";
+    })
+    # https://gitlab.gnome.org/GNOME/dconf-editor/-/merge_requests/13
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/iagno/-/commit/508c0f94e5f182e50ff61be6e04f72574dee97cb.patch";
+      sha256 = "U7djuMhb1XJaKAPyogQjaunOkbBK24r25YD7BgH05P4=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    python3
+    vala
+    desktop-file-utils
+    pkg-config
+    wrapGAppsHook
+    itstool
+    libxml2
+  ];
+
+  buildInputs = [
+    gtk3
+    gnome.adwaita-icon-theme
+    gdk-pixbuf
+    librsvg
+    gsound
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "iagno";
+      attrPath = "gnome.iagno";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Iagno";
+    description = "Computer version of the game Reversi, more popularly called Othello";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/lightsoff/default.nix b/nixpkgs/pkgs/desktops/gnome/games/lightsoff/default.nix
new file mode 100644
index 000000000000..fa9eb5d20812
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/lightsoff/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchurl, vala, pkg-config, gtk3, gnome, gdk-pixbuf, librsvg, wrapGAppsHook
+, gettext, itstool, clutter, clutter-gtk, libxml2, appstream-glib
+, meson, ninja, python3 }:
+
+stdenv.mkDerivation rec {
+  pname = "lightsoff";
+  version = "40.0.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/lightsoff/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "1aziy64g15bm83zfn3ifs20z9yvscdvsxbx132xnq77i0r3qvlxc";
+  };
+
+  nativeBuildInputs = [
+    vala pkg-config wrapGAppsHook itstool gettext appstream-glib libxml2
+    meson ninja python3
+  ];
+  buildInputs = [ gtk3 gnome.adwaita-icon-theme gdk-pixbuf librsvg clutter clutter-gtk ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "lightsoff";
+      attrPath = "gnome.lightsoff";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Lightsoff";
+    description = "Puzzle game, where the objective is to turn off all of the tiles on the board";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/quadrapassel/default.nix b/nixpkgs/pkgs/desktops/gnome/games/quadrapassel/default.nix
new file mode 100644
index 000000000000..956f9f842d3d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/quadrapassel/default.nix
@@ -0,0 +1,73 @@
+{
+  stdenv,
+  lib,
+  fetchurl,
+  pkg-config,
+  gtk3,
+  gnome,
+  gdk-pixbuf,
+  librsvg,
+  gsound,
+  libmanette,
+  gettext,
+  itstool,
+  libxml2,
+  clutter,
+  clutter-gtk,
+  wrapGAppsHook,
+  meson,
+  ninja,
+  python3,
+  vala,
+  desktop-file-utils,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "quadrapassel";
+  version = "40.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "C9giQUIHxzEj7WpJ9yPaWsjdTfXTXtwJn/6i4TmcwAo=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    python3
+    vala
+    desktop-file-utils
+    pkg-config
+    gnome.adwaita-icon-theme
+    libxml2
+    itstool
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gdk-pixbuf
+    librsvg
+    libmanette
+    gsound
+    clutter
+    libxml2
+    clutter-gtk
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+      attrPath = "gnome.${pname}";
+    };
+  };
+
+  meta = with lib; {
+    description = "Classic falling-block game, Tetris";
+    homepage = "https://wiki.gnome.org/Apps/Quadrapassel";
+    license = licenses.gpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/swell-foop/default.nix b/nixpkgs/pkgs/desktops/gnome/games/swell-foop/default.nix
new file mode 100644
index 000000000000..61d3e2c0bb67
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/swell-foop/default.nix
@@ -0,0 +1,71 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, vala
+, glib
+, gtk3
+, libgnome-games-support
+, gnome
+, desktop-file-utils
+, clutter
+, clutter-gtk
+, gettext
+, itstool
+, libxml2
+, wrapGAppsHook
+, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "swell-foop";
+  version = "41.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "JD96VeXnU6UQhu7CVoMg12ktWxWmanI6tZFwXg2O9t0=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkg-config
+    wrapGAppsHook
+    python3
+    itstool
+    gettext
+    libxml2
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libgnome-games-support
+    clutter
+    clutter-gtk
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+      attrPath = "gnome.${pname}";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Swell%20Foop";
+    description = "Puzzle game, previously known as Same GNOME";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/games/tali/default.nix b/nixpkgs/pkgs/desktops/gnome/games/tali/default.nix
new file mode 100644
index 000000000000..f5c1e83ee4d0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/games/tali/default.nix
@@ -0,0 +1,69 @@
+{
+  lib,
+  stdenv,
+  fetchurl,
+  pkg-config,
+  gtk3,
+  gnome,
+  gdk-pixbuf,
+  librsvg,
+  libgnome-games-support,
+  gettext,
+  itstool,
+  libxml2,
+  wrapGAppsHook,
+  meson,
+  ninja,
+  python3,
+  desktop-file-utils,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tali";
+  version = "40.9";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/tali/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "+p7eNm8KcuTKpSGJw6sLEMG1aoDHiFsBZgJVjETc59M=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    python3
+    desktop-file-utils
+    pkg-config
+    gnome.adwaita-icon-theme
+    libxml2
+    itstool
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gdk-pixbuf
+    librsvg
+    libgnome-games-support
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+      attrPath = "gnome.${pname}";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Tali";
+    description = "Sort of poker with dice and less money";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+  };
+}