about summary refs log tree commit diff
path: root/pkgs/applications/emulators
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/emulators')
-rw-r--r--pkgs/applications/emulators/86box/default.nix3
-rwxr-xr-xpkgs/applications/emulators/86box/update.sh12
-rw-r--r--pkgs/applications/emulators/attract-mode/default.nix2
-rw-r--r--pkgs/applications/emulators/box64/default.nix108
-rw-r--r--pkgs/applications/emulators/bsnes/bsnes-hd/default.nix2
-rw-r--r--pkgs/applications/emulators/bsnes/higan/default.nix2
-rw-r--r--pkgs/applications/emulators/caprice32/default.nix2
-rw-r--r--pkgs/applications/emulators/ccemux/default.nix2
-rw-r--r--pkgs/applications/emulators/cdemu/common-drv-attrs.nix2
-rw-r--r--pkgs/applications/emulators/cemu/default.nix7
-rw-r--r--pkgs/applications/emulators/cen64/default.nix2
-rw-r--r--pkgs/applications/emulators/craftos-pc/default.nix2
-rw-r--r--pkgs/applications/emulators/desmume/default.nix2
-rw-r--r--pkgs/applications/emulators/dlx/default.nix2
-rw-r--r--pkgs/applications/emulators/dosbox-x/default.nix2
-rw-r--r--pkgs/applications/emulators/dosbox/default.nix2
-rw-r--r--pkgs/applications/emulators/duckstation/001-fix-test-inclusion.diff11
-rw-r--r--pkgs/applications/emulators/duckstation/002-hardcode-vars.diff19
-rw-r--r--pkgs/applications/emulators/duckstation/default.nix121
-rw-r--r--pkgs/applications/emulators/dynamips/default.nix2
-rw-r--r--pkgs/applications/emulators/emu2/default.nix2
-rw-r--r--pkgs/applications/emulators/fceux/default.nix2
-rw-r--r--pkgs/applications/emulators/flycast/default.nix2
-rw-r--r--pkgs/applications/emulators/gens-gs/default.nix2
-rw-r--r--pkgs/applications/emulators/libdsk/default.nix2
-rw-r--r--pkgs/applications/emulators/mame/default.nix6
-rw-r--r--pkgs/applications/emulators/mupen64plus/default.nix2
-rw-r--r--pkgs/applications/emulators/np2kai/default.nix2
-rw-r--r--pkgs/applications/emulators/openmsx/default.nix2
-rw-r--r--pkgs/applications/emulators/pcsx2/default.nix140
-rw-r--r--pkgs/applications/emulators/pcsx2/define-rev.patch12
-rw-r--r--pkgs/applications/emulators/punes/default.nix11
-rw-r--r--pkgs/applications/emulators/retroarch/cores.nix6
-rw-r--r--pkgs/applications/emulators/retroarch/default.nix4
-rw-r--r--pkgs/applications/emulators/retroarch/hashes.json120
-rw-r--r--pkgs/applications/emulators/retroarch/libretro-core-info.nix4
-rw-r--r--pkgs/applications/emulators/retroarch/retroarch-assets.nix6
-rw-r--r--pkgs/applications/emulators/retroarch/retroarch-joypad-autoconfig.nix4
-rw-r--r--pkgs/applications/emulators/retrofe/default.nix2
-rw-r--r--pkgs/applications/emulators/ripes/default.nix2
-rw-r--r--pkgs/applications/emulators/ruffle/default.nix88
-rw-r--r--pkgs/applications/emulators/sameboy/default.nix4
-rw-r--r--pkgs/applications/emulators/simh/default.nix2
-rw-r--r--pkgs/applications/emulators/simplenes/default.nix2
-rw-r--r--pkgs/applications/emulators/tamatool/default.nix2
-rw-r--r--pkgs/applications/emulators/tiny8086/default.nix2
-rw-r--r--pkgs/applications/emulators/tinyemu/default.nix2
-rw-r--r--pkgs/applications/emulators/vbam/default.nix2
-rw-r--r--pkgs/applications/emulators/wine/base.nix2
-rw-r--r--pkgs/applications/emulators/wine/sources.nix6
-rw-r--r--pkgs/applications/emulators/wine/winetricks.nix2
-rw-r--r--pkgs/applications/emulators/xcpc/default.nix2
-rw-r--r--pkgs/applications/emulators/yabause/default.nix2
-rw-r--r--pkgs/applications/emulators/zsnes/2.x.nix2
-rw-r--r--pkgs/applications/emulators/zsnes/default.nix2
55 files changed, 256 insertions, 506 deletions
diff --git a/pkgs/applications/emulators/86box/default.nix b/pkgs/applications/emulators/86box/default.nix
index 1e9b887d2d6a5..0e543fa8d821f 100644
--- a/pkgs/applications/emulators/86box/default.nix
+++ b/pkgs/applications/emulators/86box/default.nix
@@ -88,6 +88,7 @@ stdenv.mkDerivation (finalAttrs: {
       rev = "v${finalAttrs.version}";
       hash = "sha256-58nNTOLund/KeDlNwzwwihjFVigs/P0K8SN07zExE2c=";
     };
+    updateScript = ./update.sh;
   };
 
   # Some libraries are loaded dynamically, but QLibrary doesn't seem to search
@@ -102,7 +103,7 @@ stdenv.mkDerivation (finalAttrs: {
     '';
 
   meta = with lib; {
-    description = "Emulator of x86-based machines based on PCem.";
+    description = "Emulator of x86-based machines based on PCem";
     mainProgram = "86Box";
     homepage = "https://86box.net/";
     license = with licenses; [ gpl2Only ] ++ optional (unfreeEnableDiscord || unfreeEnableRoms) unfree;
diff --git a/pkgs/applications/emulators/86box/update.sh b/pkgs/applications/emulators/86box/update.sh
new file mode 100755
index 0000000000000..8af12478529f3
--- /dev/null
+++ b/pkgs/applications/emulators/86box/update.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p jq nix-prefetch-github common-updater-scripts
+
+set -euo pipefail
+
+latest_release=$(curl --silent https://api.github.com/repos/86Box/86Box/releases/latest)
+version=$(jq -r '.tag_name' <<<"$latest_release" | cut -c2-)
+main_hash=$(nix-prefetch-github --json --rev "v$version" 86Box 86Box | jq -r '.hash')
+roms_hash=$(nix-prefetch-github --json --rev "v$version" 86Box roms | jq -r '.hash')
+
+update-source-version _86Box "_$version" "$main_hash"
+update-source-version _86Box "$version" "$roms_hash" --source-key=roms
diff --git a/pkgs/applications/emulators/attract-mode/default.nix b/pkgs/applications/emulators/attract-mode/default.nix
index 9173faf7fe5bb..53765e927a0d6 100644
--- a/pkgs/applications/emulators/attract-mode/default.nix
+++ b/pkgs/applications/emulators/attract-mode/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "A frontend for arcade cabinets and media PCs";
+    description = "Frontend for arcade cabinets and media PCs";
     homepage = "http://attractmode.org";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ hrdinka ];
diff --git a/pkgs/applications/emulators/box64/default.nix b/pkgs/applications/emulators/box64/default.nix
index 19653ea73060c..5a6e87b0644aa 100644
--- a/pkgs/applications/emulators/box64/default.nix
+++ b/pkgs/applications/emulators/box64/default.nix
@@ -1,26 +1,33 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, gitUpdater
-, cmake
-, python3
-, withDynarec ? (stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isRiscV64)
-, runCommand
-, hello-x86_64
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  gitUpdater,
+  cmake,
+  python3,
+  withDynarec ? (
+    stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isRiscV64 || stdenv.hostPlatform.isLoongArch64
+  ),
+  runCommand,
+  hello-x86_64,
 }:
 
-# Currently only supported on ARM & RISC-V
-assert withDynarec -> (stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isRiscV64);
+# Currently only supported on specific archs
+assert
+  withDynarec
+  -> (
+    stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isRiscV64 || stdenv.hostPlatform.isLoongArch64
+  );
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "box64";
-  version = "0.2.6";
+  version = "0.2.8";
 
   src = fetchFromGitHub {
     owner = "ptitSeb";
     repo = "box64";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-eKYnBuaEWRb6kDGFvuG+xM70LbUAcJ6Zcr6hPHqi9Do=";
+    hash = "sha256-P+m+JS3THh3LWMZYW6BQ7QyNWlBuL+hMcUtUbpMHzis=";
   };
 
   nativeBuildInputs = [
@@ -28,23 +35,27 @@ stdenv.mkDerivation (finalAttrs: {
     python3
   ];
 
-  cmakeFlags = [
-    "-DNOGIT=ON"
-
-    # Arch mega-option
-    "-DARM64=${lib.boolToString stdenv.hostPlatform.isAarch64}"
-    "-DRV64=${lib.boolToString stdenv.hostPlatform.isRiscV64}"
-    "-DPPC64LE=${lib.boolToString (stdenv.hostPlatform.isPower64 && stdenv.hostPlatform.isLittleEndian)}"
-    "-DLARCH64=${lib.boolToString stdenv.hostPlatform.isLoongArch64}"
-  ] ++ lib.optionals stdenv.hostPlatform.isx86_64 [
-    # x86_64 has no arch-specific mega-option, manually enable the options that apply to it
-    "-DLD80BITS=ON"
-    "-DNOALIGN=ON"
-  ] ++ [
-    # Arch dynarec
-    "-DARM_DYNAREC=${lib.boolToString (withDynarec && stdenv.hostPlatform.isAarch64)}"
-    "-DRV64_DYNAREC=${lib.boolToString (withDynarec && stdenv.hostPlatform.isRiscV64)}"
-  ];
+  cmakeFlags =
+    [
+      (lib.cmakeBool "NOGIT" true)
+
+      # Arch mega-option
+      (lib.cmakeBool "ARM64" stdenv.hostPlatform.isAarch64)
+      (lib.cmakeBool "RV64" stdenv.hostPlatform.isRiscV64)
+      (lib.cmakeBool "PPC64LE" (stdenv.hostPlatform.isPower64 && stdenv.hostPlatform.isLittleEndian))
+      (lib.cmakeBool "LARCH64" stdenv.hostPlatform.isLoongArch64)
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isx86_64 [
+      # x86_64 has no arch-specific mega-option, manually enable the options that apply to it
+      (lib.cmakeBool "LD80BITS" true)
+      (lib.cmakeBool "NOALIGN" true)
+    ]
+    ++ [
+      # Arch dynarec
+      (lib.cmakeBool "ARM_DYNAREC" (withDynarec && stdenv.hostPlatform.isAarch64))
+      (lib.cmakeBool "RV64_DYNAREC" (withDynarec && stdenv.hostPlatform.isRiscV64))
+      (lib.cmakeBool "LARCH64_DYNAREC" (withDynarec && stdenv.hostPlatform.isLoongArch64))
+    ];
 
   installPhase = ''
     runHook preInstall
@@ -71,24 +82,33 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   passthru = {
-    updateScript = gitUpdater {
-      rev-prefix = "v";
-    };
-    tests.hello = runCommand "box64-test-hello" {
-      nativeBuildInputs = [ finalAttrs.finalPackage ];
-    } ''
-      # There is no actual "Hello, world!" with any of the logging enabled, and with all logging disabled it's hard to
-      # tell what problems the emulator has run into.
-      BOX64_NOBANNER=0 BOX64_LOG=1 box64 ${hello-x86_64}/bin/hello --version | tee $out
-    '';
+    updateScript = gitUpdater { rev-prefix = "v"; };
+    tests.hello =
+      runCommand "box64-test-hello" { nativeBuildInputs = [ finalAttrs.finalPackage ]; }
+        # There is no actual "Hello, world!" with any of the logging enabled, and with all logging disabled it's hard to
+        # tell what problems the emulator has run into.
+        ''
+          BOX64_NOBANNER=0 BOX64_LOG=1 box64 ${lib.getExe hello-x86_64} --version | tee $out
+        '';
   };
 
-  meta = with lib; {
+  meta = {
     homepage = "https://box86.org/";
     description = "Lets you run x86_64 Linux programs on non-x86_64 Linux systems";
-    license = licenses.mit;
-    maintainers = with maintainers; [ gador OPNA2608 ];
+    changelog = "https://github.com/ptitSeb/box64/releases/tag/v${finalAttrs.version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      gador
+      OPNA2608
+    ];
     mainProgram = "box64";
-    platforms = [ "x86_64-linux" "aarch64-linux" "riscv64-linux" "powerpc64le-linux" "loongarch64-linux" "mips64el-linux" ];
+    platforms = [
+      "x86_64-linux"
+      "aarch64-linux"
+      "riscv64-linux"
+      "powerpc64le-linux"
+      "loongarch64-linux"
+      "mips64el-linux"
+    ];
   };
 })
diff --git a/pkgs/applications/emulators/bsnes/bsnes-hd/default.nix b/pkgs/applications/emulators/bsnes/bsnes-hd/default.nix
index 4b8e94dac1d10..354437e7c7b0b 100644
--- a/pkgs/applications/emulators/bsnes/bsnes-hd/default.nix
+++ b/pkgs/applications/emulators/bsnes/bsnes-hd/default.nix
@@ -73,7 +73,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A fork of bsnes that adds HD video features";
+    description = "Fork of bsnes that adds HD video features";
     homepage = "https://github.com/DerKoun/bsnes-hd";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ stevebob ];
diff --git a/pkgs/applications/emulators/bsnes/higan/default.nix b/pkgs/applications/emulators/bsnes/higan/default.nix
index 0b9eb51d3baf8..17700859ca3a4 100644
--- a/pkgs/applications/emulators/bsnes/higan/default.nix
+++ b/pkgs/applications/emulators/bsnes/higan/default.nix
@@ -156,7 +156,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     homepage = "https://github.com/higan-emu/higan";
-    description = "An open-source, cycle-accurate multi-system emulator";
+    description = "Open-source, cycle-accurate multi-system emulator";
     longDescription = ''
       higan is a multi-system emulator, originally developed by Near, with an
       uncompromising focus on accuracy and code readability.
diff --git a/pkgs/applications/emulators/caprice32/default.nix b/pkgs/applications/emulators/caprice32/default.nix
index 7a4f4b1ab4aed..54ebfc49964f5 100644
--- a/pkgs/applications/emulators/caprice32/default.nix
+++ b/pkgs/applications/emulators/caprice32/default.nix
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A complete emulation of CPC464, CPC664 and CPC6128";
+    description = "Complete emulation of CPC464, CPC664 and CPC6128";
     homepage = "https://github.com/ColinPitrat/caprice32";
     license = licenses.gpl2;
     maintainers = [ ];
diff --git a/pkgs/applications/emulators/ccemux/default.nix b/pkgs/applications/emulators/ccemux/default.nix
index 8e00b8281efa2..0aba58f5f10a6 100644
--- a/pkgs/applications/emulators/ccemux/default.nix
+++ b/pkgs/applications/emulators/ccemux/default.nix
@@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A modular ComputerCraft emulator";
+    description = "Modular ComputerCraft emulator";
     homepage = "https://github.com/CCEmuX/CCEmuX";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.mit;
diff --git a/pkgs/applications/emulators/cdemu/common-drv-attrs.nix b/pkgs/applications/emulators/cdemu/common-drv-attrs.nix
index 9c43e358981ef..2a99841eeed81 100644
--- a/pkgs/applications/emulators/cdemu/common-drv-attrs.nix
+++ b/pkgs/applications/emulators/cdemu/common-drv-attrs.nix
@@ -9,7 +9,7 @@
     inherit hash;
   };
   meta = with lib; {
-    description = "A suite of tools for emulating optical drives and discs";
+    description = "Suite of tools for emulating optical drives and discs";
     longDescription = ''
       CDEmu consists of:
 
diff --git a/pkgs/applications/emulators/cemu/default.nix b/pkgs/applications/emulators/cemu/default.nix
index 483bd8d4d5098..c5860d3b0b265 100644
--- a/pkgs/applications/emulators/cemu/default.nix
+++ b/pkgs/applications/emulators/cemu/default.nix
@@ -46,13 +46,13 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "cemu";
-  version = "2.0-82";
+  version = "2.0-85";
 
   src = fetchFromGitHub {
     owner = "cemu-project";
     repo = "Cemu";
     rev = "v${version}";
-    hash = "sha256-rmlkit7ZNUM0ErqoclivfBHolV0tRWyToLmsvoTslbI=";
+    hash = "sha256-uMVbKJhdHLLKsJnj7YFIG+S5pm7rSZfBSWebhTP01Y8=";
   };
 
   patches = [
@@ -108,7 +108,8 @@ in stdenv.mkDerivation rec {
     tag = last (splitString "-" version);
   in ''
     rm -rf dependencies/imgui
-    ln -s ${imgui'}/include/imgui dependencies/imgui
+    # cemu expects imgui source code, not just header files
+    ln -s ${imgui'.src} dependencies/imgui
     substituteInPlace src/Common/version.h --replace " (experimental)" "-${tag} (experimental)"
     substituteInPlace dependencies/gamemode/lib/gamemode_client.h --replace "libgamemode.so.0" "${gamemode.lib}/lib/libgamemode.so.0"
   '';
diff --git a/pkgs/applications/emulators/cen64/default.nix b/pkgs/applications/emulators/cen64/default.nix
index e13adbb71de82..d9c0048b7b34b 100644
--- a/pkgs/applications/emulators/cen64/default.nix
+++ b/pkgs/applications/emulators/cen64/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Cycle-Accurate Nintendo 64 Emulator";
+    description = "Cycle-Accurate Nintendo 64 Emulator";
     license = licenses.bsd3;
     homepage = "https://github.com/n64dev/cen64";
     maintainers = [ maintainers._414owen ];
diff --git a/pkgs/applications/emulators/craftos-pc/default.nix b/pkgs/applications/emulators/craftos-pc/default.nix
index 0d077d7669f25..1952bd6e6bd32 100644
--- a/pkgs/applications/emulators/craftos-pc/default.nix
+++ b/pkgs/applications/emulators/craftos-pc/default.nix
@@ -85,7 +85,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = with lib; {
-    description = "An implementation of the CraftOS-PC API written in C++ using SDL";
+    description = "Implementation of the CraftOS-PC API written in C++ using SDL";
     homepage = "https://www.craftos-pc.cc";
     license = with licenses; [ mit free ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/emulators/desmume/default.nix b/pkgs/applications/emulators/desmume/default.nix
index 89078bc6411a5..19f28f7962f65 100644
--- a/pkgs/applications/emulators/desmume/default.nix
+++ b/pkgs/applications/emulators/desmume/default.nix
@@ -81,7 +81,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     homepage = "https://www.github.com/TASVideos/desmume/";
-    description = "An open-source Nintendo DS emulator";
+    description = "Open-source Nintendo DS emulator";
     longDescription = ''
       DeSmuME is a freeware emulator for the NDS roms & Nintendo DS Lite games
       created by YopYop156 and now maintained by the TASvideos team. It supports
diff --git a/pkgs/applications/emulators/dlx/default.nix b/pkgs/applications/emulators/dlx/default.nix
index 9573dd6d48dc3..8230f2b52c9c8 100644
--- a/pkgs/applications/emulators/dlx/default.nix
+++ b/pkgs/applications/emulators/dlx/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://www.davidviner.com/dlx.html?name=DLX+Simulator";
-    description = "An DLX simulator written in C";
+    description = "DLX simulator written in C";
     license = licenses.gpl2Only;
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/emulators/dosbox-x/default.nix b/pkgs/applications/emulators/dosbox-x/default.nix
index 7ec2b8df3b715..9920e9e77baf1 100644
--- a/pkgs/applications/emulators/dosbox-x/default.nix
+++ b/pkgs/applications/emulators/dosbox-x/default.nix
@@ -120,7 +120,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "https://dosbox-x.com";
-    description = "A cross-platform DOS emulator based on the DOSBox project";
+    description = "Cross-platform DOS emulator based on the DOSBox project";
     longDescription = ''
       DOSBox-X is an expanded fork of DOSBox with specific focus on running
       Windows 3.x/9x/Me, PC-98 and 3D support via 3dfx.
diff --git a/pkgs/applications/emulators/dosbox/default.nix b/pkgs/applications/emulators/dosbox/default.nix
index f17d3a783ba9d..2a1171ccf3b78 100644
--- a/pkgs/applications/emulators/dosbox/default.nix
+++ b/pkgs/applications/emulators/dosbox/default.nix
@@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "http://www.dosbox.com/";
-    description = "A DOS emulator";
+    description = "DOS emulator";
     longDescription = ''
       DOSBox is an emulator that recreates a MS-DOS compatible environment
       (complete with Sound, Input, Graphics and even basic networking). This
diff --git a/pkgs/applications/emulators/duckstation/001-fix-test-inclusion.diff b/pkgs/applications/emulators/duckstation/001-fix-test-inclusion.diff
deleted file mode 100644
index b2dabe0262db3..0000000000000
--- a/pkgs/applications/emulators/duckstation/001-fix-test-inclusion.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 879d46bc..95570f6b 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -20,5 +20,5 @@ if(BUILD_REGTEST)
- endif()
- 
- if(BUILD_TESTS)
--  add_subdirectory(common-tests EXCLUDE_FROM_ALL)
-+  add_subdirectory(common-tests)
- endif()
diff --git a/pkgs/applications/emulators/duckstation/002-hardcode-vars.diff b/pkgs/applications/emulators/duckstation/002-hardcode-vars.diff
deleted file mode 100644
index edba33fce7ceb..0000000000000
--- a/pkgs/applications/emulators/duckstation/002-hardcode-vars.diff
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/src/scmversion/gen_scmversion.sh b/src/scmversion/gen_scmversion.sh
-index 9122cd8..50ed8f9 100755
---- a/src/scmversion/gen_scmversion.sh
-+++ b/src/scmversion/gen_scmversion.sh
-@@ -10,10 +10,10 @@ else
- fi
- 
- 
--HASH=$(git rev-parse HEAD)
--BRANCH=$(git rev-parse --abbrev-ref HEAD | tr -d '\r\n')
--TAG=$(git describe --dirty | tr -d '\r\n')
--DATE=$(git log -1 --date=iso8601-strict --format=%cd)
-+HASH="@gitHash@"
-+BRANCH="@gitBranch@"
-+TAG="@gitTag@"
-+DATE="@gitDate@"
- 
- cd $CURDIR
- 
diff --git a/pkgs/applications/emulators/duckstation/default.nix b/pkgs/applications/emulators/duckstation/default.nix
deleted file mode 100644
index 91d2b23705ad7..0000000000000
--- a/pkgs/applications/emulators/duckstation/default.nix
+++ /dev/null
@@ -1,121 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, SDL2
-, cmake
-, cubeb
-, curl
-, extra-cmake-modules
-, libXrandr
-, libbacktrace
-, makeWrapper
-, ninja
-, pkg-config
-, qtbase
-, qtsvg
-, qttools
-, qtwayland
-, substituteAll
-, vulkan-loader
-, wayland
-, wrapQtAppsHook
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "duckstation";
-  version = "0.1-6292";
-
-  src = fetchFromGitHub {
-    owner = "stenzek";
-    repo = "duckstation";
-    rev = "0bc42c38aab49030118f507c9783de047769148b";
-    hash = "sha256-8OavixSwEWihFY2fEdsepR1lqWlTH+//xZRKwb7lFCQ=";
-  };
-
-  patches = [
-    # Tests are not built by default
-    ./001-fix-test-inclusion.diff
-    # Patching yet another script that fills data based on git commands...
-    (substituteAll {
-      src = ./002-hardcode-vars.diff;
-      gitHash = finalAttrs.src.rev;
-      gitBranch = "master";
-      gitTag = "${finalAttrs.version}-g0bc42c38";
-      gitDate = "2024-02-06T22:47:47+09:00";
-    })
-  ];
-
-  nativeBuildInputs = [
-    cmake
-    extra-cmake-modules
-    ninja
-    pkg-config
-    qttools
-    wrapQtAppsHook
-  ];
-
-  buildInputs = [
-    SDL2
-    curl
-    libXrandr
-    libbacktrace
-    qtbase
-    qtsvg
-    qtwayland
-    wayland
-  ]
-  ++ cubeb.passthru.backendLibs;
-
-  strictDeps = true;
-
-  cmakeFlags = [
-    (lib.cmakeBool "BUILD_TESTS" true)
-  ];
-
-  doCheck = true;
-  checkPhase = ''
-    runHook preCheck
-    bin/common-tests
-    runHook postCheck
-  '';
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin $out/share
-
-    cp -r bin $out/share/duckstation
-    ln -s $out/share/duckstation/duckstation-qt $out/bin/
-
-    install -Dm644 $src/scripts/org.duckstation.DuckStation.desktop $out/share/applications/org.duckstation.DuckStation.desktop
-    install -Dm644 $src/scripts/org.duckstation.DuckStation.png $out/share/pixmaps/org.duckstation.DuckStation.png
-
-    runHook postInstall
-  '';
-
-  qtWrapperArgs =
-    let
-      libPath = lib.makeLibraryPath ([
-        vulkan-loader
-      ] ++ cubeb.passthru.backendLibs);
-    in [
-      "--prefix LD_LIBRARY_PATH : ${libPath}"
-    ];
-
-  # https://github.com/stenzek/duckstation/blob/master/scripts/appimage/apprun-hooks/default-to-x11.sh
-  # Can't avoid the double wrapping, the binary wrapper from qtWrapperArgs doesn't support --run
-  postFixup = ''
-    source "${makeWrapper}/nix-support/setup-hook"
-    wrapProgram $out/bin/duckstation-qt \
-      --run 'if [[ -z $I_WANT_A_BROKEN_WAYLAND_UI ]]; then export QT_QPA_PLATFORM=xcb; fi'
-  '';
-
-  meta = {
-    homepage = "https://github.com/stenzek/duckstation";
-    description = "Fast PlayStation 1 emulator for x86-64/AArch32/AArch64";
-    license = lib.licenses.gpl3Only;
-    mainProgram = "duckstation-qt";
-    maintainers = with lib.maintainers; [ guibou AndersonTorres ];
-    platforms = lib.platforms.linux;
-  };
-})
diff --git a/pkgs/applications/emulators/dynamips/default.nix b/pkgs/applications/emulators/dynamips/default.nix
index 2c529af3a80f3..1abc0dcf52365 100644
--- a/pkgs/applications/emulators/dynamips/default.nix
+++ b/pkgs/applications/emulators/dynamips/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     inherit (src.meta) homepage;
-    description = "A Cisco router emulator";
+    description = "Cisco router emulator";
     longDescription = ''
       Dynamips is an emulator computer program that was written to emulate Cisco
       routers.
diff --git a/pkgs/applications/emulators/emu2/default.nix b/pkgs/applications/emulators/emu2/default.nix
index a919d644d720c..22f2e17902e84 100644
--- a/pkgs/applications/emulators/emu2/default.nix
+++ b/pkgs/applications/emulators/emu2/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/dmsc/emu2/";
-    description = "A simple text-mode x86 + DOS emulator";
+    description = "Simple text-mode x86 + DOS emulator";
     platforms = platforms.linux;
     maintainers = with maintainers; [ AndersonTorres ];
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/emulators/fceux/default.nix b/pkgs/applications/emulators/fceux/default.nix
index 6a33b68dbe708..c5b3188b3ca40 100644
--- a/pkgs/applications/emulators/fceux/default.nix
+++ b/pkgs/applications/emulators/fceux/default.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "http://www.fceux.com/";
-    description = "A Nintendo Entertainment System (NES) Emulator";
+    description = "Nintendo Entertainment System (NES) Emulator";
     mainProgram = "fceux";
     changelog = "https://github.com/TASEmulators/blob/fceux/${finalAttrs.src.rev}/changelog.txt";
     license = with lib.licenses; [ gpl2Plus ];
diff --git a/pkgs/applications/emulators/flycast/default.nix b/pkgs/applications/emulators/flycast/default.nix
index 6c598c5f51284..8f426f9c52651 100644
--- a/pkgs/applications/emulators/flycast/default.nix
+++ b/pkgs/applications/emulators/flycast/default.nix
@@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/flyinghead/flycast";
     changelog = "https://github.com/flyinghead/flycast/releases/tag/v${version}";
-    description = "A multi-platform Sega Dreamcast, Naomi and Atomiswave emulator";
+    description = "Multi-platform Sega Dreamcast, Naomi and Atomiswave emulator";
     mainProgram = "flycast";
     license = licenses.gpl2Only;
     platforms = platforms.unix;
diff --git a/pkgs/applications/emulators/gens-gs/default.nix b/pkgs/applications/emulators/gens-gs/default.nix
index 66c4eb8ada23a..9699d24be6a76 100644
--- a/pkgs/applications/emulators/gens-gs/default.nix
+++ b/pkgs/applications/emulators/gens-gs/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://segaretro.org/Gens/GS";
-    description = "A Genesis/Mega Drive emulator";
+    description = "Genesis/Mega Drive emulator";
     platforms = [ "i686-linux" ];
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.eelco ];
diff --git a/pkgs/applications/emulators/libdsk/default.nix b/pkgs/applications/emulators/libdsk/default.nix
index 356e0631659f1..a0ea910adad90 100644
--- a/pkgs/applications/emulators/libdsk/default.nix
+++ b/pkgs/applications/emulators/libdsk/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = with lib; {
-    description = "A library for accessing discs and disc image files";
+    description = "Library for accessing discs and disc image files";
     homepage = "http://www.seasip.info/Unix/LibDsk/";
     license = licenses.gpl2Plus;
     maintainers = [ ];
diff --git a/pkgs/applications/emulators/mame/default.nix b/pkgs/applications/emulators/mame/default.nix
index 4ba40b417c8cb..804c5b1cceeed 100644
--- a/pkgs/applications/emulators/mame/default.nix
+++ b/pkgs/applications/emulators/mame/default.nix
@@ -38,14 +38,14 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mame";
-  version = "0.265";
+  version = "0.266";
   srcVersion = builtins.replaceStrings [ "." ] [ "" ] version;
 
   src = fetchFromGitHub {
     owner = "mamedev";
     repo = "mame";
     rev = "mame${srcVersion}";
-    hash = "sha256-jXGmABFeoT8g2UtVV159gUpdWcBvb9aX3uiFi2neVQI=";
+    hash = "sha256-nggpDKcZURwC4SQHiRnF7lJNaAWSniVHvsF/IjAPd9E=";
   };
 
   outputs = [ "out" "tools" ];
@@ -176,7 +176,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://www.mamedev.org/";
-    description = "A multi-purpose emulation framework";
+    description = "Multi-purpose emulation framework";
     longDescription = ''
       MAME's purpose is to preserve decades of software history. As electronic
       technology continues to rush forward, MAME prevents this important
diff --git a/pkgs/applications/emulators/mupen64plus/default.nix b/pkgs/applications/emulators/mupen64plus/default.nix
index ba8c69cfb3e02..81c86eeafecbe 100644
--- a/pkgs/applications/emulators/mupen64plus/default.nix
+++ b/pkgs/applications/emulators/mupen64plus/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Nintendo 64 Emulator";
+    description = "Nintendo 64 Emulator";
     license = licenses.gpl2Plus;
     homepage = "http://www.mupen64plus.org/";
     maintainers = [ maintainers.sander ];
diff --git a/pkgs/applications/emulators/np2kai/default.nix b/pkgs/applications/emulators/np2kai/default.nix
index 4a0ed1d519f9d..0fc56e2844173 100644
--- a/pkgs/applications/emulators/np2kai/default.nix
+++ b/pkgs/applications/emulators/np2kai/default.nix
@@ -190,7 +190,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A PC-9801 series emulator";
+    description = "PC-9801 series emulator";
     homepage = "https://github.com/AZO234/NP2kai";
     license = licenses.mit;
     maintainers = with maintainers; [ OPNA2608 ];
diff --git a/pkgs/applications/emulators/openmsx/default.nix b/pkgs/applications/emulators/openmsx/default.nix
index 1c34c0025c8e1..cc6992f7bcccb 100644
--- a/pkgs/applications/emulators/openmsx/default.nix
+++ b/pkgs/applications/emulators/openmsx/default.nix
@@ -63,7 +63,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     homepage = "https://openmsx.org";
-    description = "The MSX emulator that aims for perfection";
+    description = "MSX emulator that aims for perfection";
     longDescription = ''
       OpenMSX is an emulator for the MSX home computer system. Its goal is
       to emulate all aspects of the MSX with 100% accuracy.
diff --git a/pkgs/applications/emulators/pcsx2/default.nix b/pkgs/applications/emulators/pcsx2/default.nix
deleted file mode 100644
index cb39b5417b095..0000000000000
--- a/pkgs/applications/emulators/pcsx2/default.nix
+++ /dev/null
@@ -1,140 +0,0 @@
-{ cmake
-, fetchFromGitHub
-, lib
-, llvmPackages_17
-, cubeb
-, curl
-, extra-cmake-modules
-, ffmpeg
-, libaio
-, libbacktrace
-, libpcap
-, libwebp
-, libXrandr
-, libzip
-, lz4
-, makeWrapper
-, pkg-config
-, qtbase
-, qtsvg
-, qttools
-, qtwayland
-, SDL2
-, soundtouch
-, strip-nondeterminism
-, vulkan-headers
-, vulkan-loader
-, wayland
-, wrapQtAppsHook
-, xz
-, zip
-, zstd
-}:
-
-let
-  # The pre-zipped files in releases don't have a versioned link, we need to zip them ourselves
-  pcsx2_patches = fetchFromGitHub {
-    owner = "PCSX2";
-    repo = "pcsx2_patches";
-    rev = "e3b354f144de71d2b87471166cca8911867c1dfd";
-    sha256 = "sha256-H7cFyBYZumcCZ0/FFOFZoChoi0XPs4siA4dHcFt9U7k=";
-  };
-in
-llvmPackages_17.stdenv.mkDerivation rec {
-  pname = "pcsx2";
-  version = "1.7.5587";
-
-  src = fetchFromGitHub {
-    owner = "PCSX2";
-    repo = "pcsx2";
-    fetchSubmodules = true;
-    rev = "v${version}";
-    sha256 = "sha256-PCZ1r6x28Z5FEVMXWm4oxpTknz/XEiwo0rRGhn4B33g=";
-  };
-
-  patches = [
-    ./define-rev.patch
-  ];
-
-  cmakeFlags = [
-    "-DDISABLE_ADVANCE_SIMD=ON"
-    "-DUSE_LINKED_FFMPEG=ON"
-    "-DPCSX2_GIT_REV=v${version}"
-  ];
-
-  nativeBuildInputs = [
-    cmake
-    extra-cmake-modules
-    pkg-config
-    strip-nondeterminism
-    wrapQtAppsHook
-    zip
-  ];
-
-  buildInputs = [
-    curl
-    ffmpeg
-    libaio
-    libbacktrace
-    libpcap
-    libwebp
-    libXrandr
-    libzip
-    lz4
-    qtbase
-    qtsvg
-    qttools
-    qtwayland
-    SDL2
-    soundtouch
-    vulkan-headers
-    wayland
-    xz
-    zstd
-  ]
-  ++ cubeb.passthru.backendLibs;
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp -a bin/pcsx2-qt bin/resources $out/bin/
-
-    install -Dm644 $src/pcsx2-qt/resources/icons/AppIcon64.png $out/share/pixmaps/PCSX2.png
-    install -Dm644 $src/.github/workflows/scripts/linux/pcsx2-qt.desktop $out/share/applications/PCSX2.desktop
-
-    zip -jq $out/bin/resources/patches.zip ${pcsx2_patches}/patches/*
-    strip-nondeterminism $out/bin/resources/patches.zip
-  '';
-
-  qtWrapperArgs =
-    let
-      libs = lib.makeLibraryPath ([
-        vulkan-loader
-      ] ++ cubeb.passthru.backendLibs);
-    in [
-      "--prefix LD_LIBRARY_PATH : ${libs}"
-    ];
-
-  # https://github.com/PCSX2/pcsx2/pull/10200
-  # Can't avoid the double wrapping, the binary wrapper from qtWrapperArgs doesn't support --run
-  postFixup = ''
-    source "${makeWrapper}/nix-support/setup-hook"
-    wrapProgram $out/bin/pcsx2-qt \
-      --run 'if [[ -z $I_WANT_A_BROKEN_WAYLAND_UI ]]; then export QT_QPA_PLATFORM=xcb; fi'
-  '';
-
-  meta = with lib; {
-    description = "Playstation 2 emulator";
-    longDescription = ''
-      PCSX2 is an open-source PlayStation 2 (AKA PS2) emulator. Its purpose
-      is to emulate the PS2 hardware, using a combination of MIPS CPU
-      Interpreters, Recompilers and a Virtual Machine which manages hardware
-      states and PS2 system memory. This allows you to play PS2 games on your
-      PC, with many additional features and benefits.
-    '';
-    homepage = "https://pcsx2.net";
-    license = with licenses; [ gpl3 lgpl3 ];
-    maintainers = with maintainers; [ hrdinka govanify ];
-    mainProgram = "pcsx2-qt";
-    platforms = platforms.x86_64;
-  };
-}
diff --git a/pkgs/applications/emulators/pcsx2/define-rev.patch b/pkgs/applications/emulators/pcsx2/define-rev.patch
deleted file mode 100644
index 1f970b1a073be..0000000000000
--- a/pkgs/applications/emulators/pcsx2/define-rev.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/cmake/Pcsx2Utils.cmake b/cmake/Pcsx2Utils.cmake
-index 87f012c..052f1be 100644
---- a/cmake/Pcsx2Utils.cmake
-+++ b/cmake/Pcsx2Utils.cmake
-@@ -44,7 +44,6 @@ function(detect_compiler)
- endfunction()
- 
- function(get_git_version_info)
--	set(PCSX2_GIT_REV "")
- 	set(PCSX2_GIT_TAG "")
- 	set(PCSX2_GIT_HASH "")
- 	if (GIT_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.git)
diff --git a/pkgs/applications/emulators/punes/default.nix b/pkgs/applications/emulators/punes/default.nix
index ba5f1205a58bd..a7b435c3a0ae8 100644
--- a/pkgs/applications/emulators/punes/default.nix
+++ b/pkgs/applications/emulators/punes/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , lib
 , fetchFromGitHub
+, fetchpatch
 , gitUpdater
 , cmake
 , pkg-config
@@ -27,6 +28,16 @@ stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-TIXjYkInWV3yVnvXrdHcmeWYeps5TcvkG2Xjg4roIds=";
   };
 
+  patches = [
+    # Fix FTBFS with Qt 6.7.1
+    # Remove when https://github.com/punesemu/puNES/pull/403 merged & in release
+    (fetchpatch {
+      name = "0001-punes-Fix-compatibility-with-Qt-6.7.1.patch";
+      url = "https://github.com/punesemu/puNES/commit/78c72d2dfcd570e7463a78da10904cebae6127f5.patch";
+      hash = "sha256-xRalKIOb1qWgqJsFLcm7uUOblEfHDYbkukmcr4/+4Qc=";
+    })
+  ];
+
   nativeBuildInputs = [
     cmake
     pkg-config
diff --git a/pkgs/applications/emulators/retroarch/cores.nix b/pkgs/applications/emulators/retroarch/cores.nix
index d4fb8a4c3afb6..532109eefa6d8 100644
--- a/pkgs/applications/emulators/retroarch/cores.nix
+++ b/pkgs/applications/emulators/retroarch/cores.nix
@@ -405,7 +405,7 @@ in
     hardeningDisable = [ "format" ];
     makefile = "Makefile";
     meta = {
-      description = "Port of DOSBox to libretro aiming for simplicity and ease of use.";
+      description = "Port of DOSBox to libretro aiming for simplicity and ease of use";
       license = lib.licenses.gpl2Only;
     };
   };
@@ -510,7 +510,7 @@ in
   fuse = mkLibretroCore {
     core = "fuse";
     meta = {
-      description = "A port of the Fuse Unix Spectrum Emulator to libretro";
+      description = "Port of the Fuse Unix Spectrum Emulator to libretro";
       license = lib.licenses.gpl3Only;
     };
   };
@@ -809,7 +809,7 @@ in
       && sed -i -e 's,CPUFLAGS  :=,,g' Makefile
     '';
     meta = {
-      description = "Parallel Mupen64plus rewrite for libretro.";
+      description = "Parallel Mupen64plus rewrite for libretro";
       license = lib.licenses.gpl3Only;
     };
   };
diff --git a/pkgs/applications/emulators/retroarch/default.nix b/pkgs/applications/emulators/retroarch/default.nix
index 0e86d182f3e22..7e7090a87a640 100644
--- a/pkgs/applications/emulators/retroarch/default.nix
+++ b/pkgs/applications/emulators/retroarch/default.nix
@@ -47,12 +47,12 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "retroarch-bare";
-  version = "1.18.0";
+  version = "1.19.1";
 
   src = fetchFromGitHub {
     owner = "libretro";
     repo = "RetroArch";
-    hash = "sha256-uOnFkLrLQlBbUlIFA8wrOkQdVIvO7Np7fvi+sPJPtHE=";
+    hash = "sha256-NVe5dhH3w7RL1C7Z736L5fdi/+aO+Ah9Dpa4u4kn0JY=";
     rev = "v${version}";
   };
 
diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json
index a7655cb9bb3c3..6c5269fb53c8f 100644
--- a/pkgs/applications/emulators/retroarch/hashes.json
+++ b/pkgs/applications/emulators/retroarch/hashes.json
@@ -85,10 +85,10 @@
         "src": {
             "owner": "libretro",
             "repo": "beetle-psx-libretro",
-            "rev": "1743ca1a97cc90eac463def2e6118602b3d230c0",
-            "hash": "sha256-0ViuIo+iEIthRayJQeedOo2L+uTsJQh6PTJ21zlC/f0="
+            "rev": "b8e10a3039391db6e4fbdc96720d3428a2dbd039",
+            "hash": "sha256-F38lUBhe9JR3dPwkLqhAAlvLtAeas8bnPuiK6eOpUuU="
         },
-        "version": "unstable-2024-05-17"
+        "version": "unstable-2024-06-07"
     },
     "beetle-saturn": {
         "fetcher": "fetchFromGitHub",
@@ -115,10 +115,10 @@
         "src": {
             "owner": "libretro",
             "repo": "beetle-supergrafx-libretro",
-            "rev": "c96c05c0b6e948df00da7e6253ff3e2874314baa",
-            "hash": "sha256-ruxp66E7D+r/9h7lzggIy9q9DKWKJikVzL5Oqsy9kQM="
+            "rev": "e3f68c1311d4684a5a59d3d1662d5c4f32662c02",
+            "hash": "sha256-jTO2SDOefpB+cfahiPkReYID0pjP437h53hZElSLsdY="
         },
-        "version": "unstable-2024-05-17"
+        "version": "unstable-2024-06-07"
     },
     "beetle-vb": {
         "fetcher": "fetchFromGitHub",
@@ -165,10 +165,10 @@
         "src": {
             "owner": "libretro",
             "repo": "bsnes-libretro",
-            "rev": "37606e377ebae5d3175cd6267e4ddfa3f3c5091f",
-            "hash": "sha256-B1ragos8ZeCjg8Xlt6SC8V69iTZ6OXTpPptlWw4EMOU="
+            "rev": "44f6ce5dedb138ded8e59d71df18cae5b0655eba",
+            "hash": "sha256-7iB2VQ3f8YVOV3C+Rkviaj7USoZdO/riDnT9kCdzc8k="
         },
-        "version": "unstable-2024-05-17"
+        "version": "unstable-2024-05-31"
     },
     "bsnes-hd": {
         "fetcher": "fetchFromGitHub",
@@ -246,10 +246,10 @@
         "src": {
             "owner": "schellingb",
             "repo": "dosbox-pure",
-            "rev": "1c7ad4fafc5204e3aff83e2caa6020cb2fe43a2d",
-            "hash": "sha256-cOamfnwLilAz2I8CKA18JvauadbObuAq4JabNcdw7EQ="
+            "rev": "1e3cb35355769467ca7be192e740eb9728ecc88c",
+            "hash": "sha256-svVpHUOPPAFMypmeaHLCQfwTAVOZajTMKyeKvWLZlcc="
         },
-        "version": "unstable-2024-05-20"
+        "version": "unstable-2024-06-03"
     },
     "easyrpg": {
         "fetcher": "fetchFromGitHub",
@@ -287,31 +287,31 @@
         "src": {
             "owner": "libretro",
             "repo": "fbneo",
-            "rev": "312473be86f25e1a0456d4bb9d12462d90d59131",
-            "hash": "sha256-QU+ZG1onr3BtXZAUT9o5LypFozZsAF6biTj05sKtV+s="
+            "rev": "634d207adade213bbe83684be2a183d158f56e52",
+            "hash": "sha256-hmnb7euH2VfGnF8ztGFhXYmqaCY49APDG0Y3s4ku7Ac="
         },
-        "version": "unstable-2024-05-20"
+        "version": "unstable-2024-06-02"
     },
     "fceumm": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "libretro",
             "repo": "libretro-fceumm",
-            "rev": "aebea8783652bc75b21b9d2dcb28cedf1fa78e8a",
-            "hash": "sha256-4ux8pI2d8djkwY0M+h5tlXrLGIDHnMFiFqAWKrZAsxA="
+            "rev": "bc9d865f9427384e40084cb090d94d72d4970e78",
+            "hash": "sha256-/g7gRNWDbW5LFZ+uBkIf5DMELas0/ilqbmUbvq8YSsE="
         },
-        "version": "unstable-2024-04-06"
+        "version": "unstable-2024-06-09"
     },
     "flycast": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "flyinghead",
             "repo": "flycast",
-            "rev": "0fa3e9a37b37d2ab200a910ff2a5736ca8c57a1b",
-            "hash": "sha256-c2cDQ2MSsP/rUrX89Mj5Gplb0WS2EjjOBCNd5QFbuHw=",
+            "rev": "4cd62781043cd9193c6c5ec04f6a8084375bed0d",
+            "hash": "sha256-EKK9PNFHWm1Jakq0E6fIqmcDiiiOSgHEbixB3X/H77g=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-05-21"
+        "version": "unstable-2024-06-08"
     },
     "fmsx": {
         "fetcher": "fetchFromGitHub",
@@ -348,20 +348,20 @@
         "src": {
             "owner": "libretro",
             "repo": "gambatte-libretro",
-            "rev": "238b195bca073bc1a2032c4e92c097d157e521f8",
-            "hash": "sha256-i9+a1kVlJ6EPaCOMkuIZgujNEg6MwPRM3mHnhconWHo="
+            "rev": "e2031a4010463adcd00ce3f34acbbb6db2ad1266",
+            "hash": "sha256-yFj9ZkvDliaTO43l0fjg8FwD17MxjV4wszY7AVjTiNY="
         },
-        "version": "unstable-2024-05-17"
+        "version": "unstable-2024-06-07"
     },
     "genesis-plus-gx": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "libretro",
             "repo": "Genesis-Plus-GX",
-            "rev": "58cf8471e3aa09ac4cb4c4b2dc5fdf3d1d54d626",
-            "hash": "sha256-y1pVoKrIV5n2wKoUIkUEor2CKTx9CyvkDagkByuFeiE="
+            "rev": "60955a01f601ef73c02b07581dd7d5aa3b6a4788",
+            "hash": "sha256-h0T6i1kiN58TagFo5XHzXMLaEwkGGTyuZpyS1QGNrb8="
         },
-        "version": "unstable-2024-05-17"
+        "version": "unstable-2024-06-07"
     },
     "gpsp": {
         "fetcher": "fetchFromGitHub",
@@ -429,20 +429,20 @@
         "src": {
             "owner": "libretro",
             "repo": "mame2003-libretro",
-            "rev": "cb2c76b2185c6600d1985b041eae001c674ffc08",
-            "hash": "sha256-HBDJsYEC4G/wELYe8IGfq+9Hv2Sx+v52YxYfLQRZ+ns="
+            "rev": "ce82eaa30932c988e9d9abc0ac5d6d637fb88cc6",
+            "hash": "sha256-vCqv2EhgYtJwNE2sRcs8KTg0cGlRSmhykRLkt8mUKlg="
         },
-        "version": "unstable-2024-05-21"
+        "version": "unstable-2024-06-07"
     },
     "mame2003-plus": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "libretro",
             "repo": "mame2003-plus-libretro",
-            "rev": "97dfe652dba01872bc5dd5d13a0dfb6588286adf",
-            "hash": "sha256-BQoc8y0eJkK8PpPqHjQ8qKp8/xrjl789bxNy+RdU3Sc="
+            "rev": "ecd00b18187c7fff75b6d9a70ac1b349e79652bb",
+            "hash": "sha256-1dVNNlDKDJwGHou/bY/grj/p9BJmfUwDxEiw2zQ7gSg="
         },
-        "version": "unstable-2024-05-21"
+        "version": "unstable-2024-06-08"
     },
     "mame2010": {
         "fetcher": "fetchFromGitHub",
@@ -489,10 +489,10 @@
         "src": {
             "owner": "libretro",
             "repo": "mesen",
-            "rev": "d6f2f1797694f87e698c737b068f621889e96fa9",
-            "hash": "sha256-iLX9UvrjYjGjyaLD4sC10gntWUvgZrwiUqTS7S7YDdc="
+            "rev": "91db6be681f70b2080525c267af6132555323ea1",
+            "hash": "sha256-rw/bwHaeglO/DPeOCFHAWF5Y5DXVKiteO4bWZjTB4rI="
         },
-        "version": "unstable-2024-01-30"
+        "version": "unstable-2024-06-09"
     },
     "mesen-s": {
         "fetcher": "fetchFromGitHub",
@@ -631,10 +631,10 @@
         "src": {
             "owner": "libretro",
             "repo": "pcsx_rearmed",
-            "rev": "87f07621f8f864204d15e5514b7dcda7ed458fd4",
-            "hash": "sha256-J9HzZzzeih/Hv/hi+JmGloPMTgtRSdAubnipMDUOpIM="
+            "rev": "1f8c6be323aa8fad329e38682158197e822d27c1",
+            "hash": "sha256-f1U7hmSywECmXwRi6vhAFjG971XsDXhsYzSAKMa2ZVY="
         },
-        "version": "unstable-2024-05-20"
+        "version": "unstable-2024-05-30"
     },
     "picodrive": {
         "fetcher": "fetchFromGitHub",
@@ -652,32 +652,32 @@
         "src": {
             "owner": "jpd002",
             "repo": "Play-",
-            "rev": "0efd17e79dc470c86cd1363a93130888c1e7a528",
-            "hash": "sha256-+f1xOSqKUJmM0bhtsPR9zk6mybo2HOXLURtYVb6qBGU=",
+            "rev": "2f3d8252a2ba398078538abfe8a633b667a858a4",
+            "hash": "sha256-Trr+xJWcWfQW5TnSTxqAsUK3HSMsoLaAkz7UIwp6L4c=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-05-17"
+        "version": "unstable-2024-06-04"
     },
     "ppsspp": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "hrydgard",
             "repo": "ppsspp",
-            "rev": "1a01e4fd2e1ad1a6c5a7a1511ddeb495f525ae9e",
-            "hash": "sha256-MWXfHbWQXi/UflOV4zchrBVdh+Nt04HnvoTbpLNyq/Q=",
+            "rev": "5dec3ca2db10943dcdf5e483cc8c28e0524d1a43",
+            "hash": "sha256-B9/0uGpBrM+qndvO2BC9sQCNkSK3qR2fUtWx5Vx16xU=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-05-21"
+        "version": "unstable-2024-06-09"
     },
     "prboom": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "libretro",
             "repo": "libretro-prboom",
-            "rev": "ab05295d81fed2bb9db9f68a7ceeec7a544191d8",
-            "hash": "sha256-ekVVxYg+Uet3pfir6P7PwI87p5XF2ATbFbux1t38ETs="
+            "rev": "9d412db570d3291829b308e6d1ac17f04acdda17",
+            "hash": "sha256-50Nl8IyaQRLOQtTRYhJFwTH8ojMxNVVn/c+oGCeJts0="
         },
-        "version": "unstable-2024-05-07"
+        "version": "unstable-2024-05-23"
     },
     "prosystem": {
         "fetcher": "fetchFromGitHub",
@@ -694,10 +694,10 @@
         "src": {
             "owner": "libretro",
             "repo": "libretro-uae",
-            "rev": "3432007d28ef173707e2b32bd931932e5b74085d",
-            "hash": "sha256-spkl8A4mijM4uSpFojAFiYZl7tetWpCBKCDMUM8byUU="
+            "rev": "4493a194dd42e593914c26952ee8cb4ba750f596",
+            "hash": "sha256-uSnxx85+AX/15UvyOOiVApKT5I9SjKITfi5Osd4nBSE="
         },
-        "version": "unstable-2024-05-20"
+        "version": "unstable-2024-05-25"
     },
     "quicknes": {
         "fetcher": "fetchFromGitHub",
@@ -754,10 +754,10 @@
         "src": {
             "owner": "snes9xgit",
             "repo": "snes9x",
-            "rev": "738e53989e29c912eba3be4656df18cecc76e69b",
-            "hash": "sha256-riz4WBK/Qrw6QuIyi6ylNdDBxYOq1SsltC7/GAunZbM="
+            "rev": "c7b77d4a763e8fa3ee2c4ef63b3974527056b7ad",
+            "hash": "sha256-a9IKbuSrlzrhrRrLRFAnhHWBhaYIf58oRFYjWSqbNTU="
         },
-        "version": "unstable-2024-05-19"
+        "version": "unstable-2024-06-07"
     },
     "snes9x2002": {
         "fetcher": "fetchFromGitHub",
@@ -794,10 +794,10 @@
         "src": {
             "owner": "stella-emu",
             "repo": "stella",
-            "rev": "49166ca9949708c3bddaed5cc549194c4bfcfae5",
-            "hash": "sha256-Oszglo1BQYTkuSZ96RSIBa1A0v/4qLQSBzsSVmOq07I="
+            "rev": "1c2dceab2b74980effb8d6497ea64fc3bd6b0be3",
+            "hash": "sha256-UeuSHHAZV798sSws32PhcBq9q2bGfX758mR+mIEnX+I="
         },
-        "version": "unstable-2024-05-13"
+        "version": "unstable-2024-06-08"
     },
     "stella2014": {
         "fetcher": "fetchFromGitHub",
@@ -814,10 +814,10 @@
         "src": {
             "owner": "libretro",
             "repo": "swanstation",
-            "rev": "6a0cc4a1cf3b8a89150160f631f477c36dc6e559",
-            "hash": "sha256-YciqQW5Q9NYbzdsWeYc92CDWBaXT3HZmDsd3WkqPYzo="
+            "rev": "7a27436548128c00e70b08dde63c52118e2a6228",
+            "hash": "sha256-u7D044lKNAH4aAaY/Ol7BR3dNeusX4wirIMdUEGw2oM="
         },
-        "version": "unstable-2024-05-21"
+        "version": "unstable-2024-05-30"
     },
     "tgbdual": {
         "fetcher": "fetchFromGitHub",
diff --git a/pkgs/applications/emulators/retroarch/libretro-core-info.nix b/pkgs/applications/emulators/retroarch/libretro-core-info.nix
index b70d4431c59de..3e11deb4b40f0 100644
--- a/pkgs/applications/emulators/retroarch/libretro-core-info.nix
+++ b/pkgs/applications/emulators/retroarch/libretro-core-info.nix
@@ -6,13 +6,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "libretro-core-info";
-  version = "1.18.0";
+  version = "1.19.0";
 
   src = fetchFromGitHub {
     owner = "libretro";
     repo = "libretro-core-info";
     rev = "v${version}";
-    hash = "sha256-tIuDDueYocvRDbA8CTR5ubGI7/Up02zUENw/HaDwC0U=";
+    hash = "sha256-dMMX9i2xPKay6BKC52fYxElcGSllHkSZyOXX/t3l6Io=";
   };
 
   makeFlags = [
diff --git a/pkgs/applications/emulators/retroarch/retroarch-assets.nix b/pkgs/applications/emulators/retroarch/retroarch-assets.nix
index b97d551a6c868..f1d34f9f5ac1f 100644
--- a/pkgs/applications/emulators/retroarch/retroarch-assets.nix
+++ b/pkgs/applications/emulators/retroarch/retroarch-assets.nix
@@ -6,13 +6,13 @@
 
 stdenvNoCC.mkDerivation {
   pname = "retroarch-assets";
-  version = "1.17.0-unstable-2024-04-24";
+  version = "1.19.0-unstable-2024-05-30";
 
   src = fetchFromGitHub {
     owner = "libretro";
     repo = "retroarch-assets";
-    rev = "9c0bd0d1015889592ad4362b800ac90ff4d019e1";
-    hash = "sha256-DB4i4iKx174822OJwJ5QIuMBLywufcR4+4Y+R01W+KQ=";
+    rev = "771e60b1eacd4edc57c19b61ab2c713200af0a3f";
+    hash = "sha256-304xYXY5cESjSxepb5xpfMeJBnG+EJBiaVnhSUE3icQ=";
   };
 
   makeFlags = [
diff --git a/pkgs/applications/emulators/retroarch/retroarch-joypad-autoconfig.nix b/pkgs/applications/emulators/retroarch/retroarch-joypad-autoconfig.nix
index b4e60fdcaba87..36bc02c43f7d3 100644
--- a/pkgs/applications/emulators/retroarch/retroarch-joypad-autoconfig.nix
+++ b/pkgs/applications/emulators/retroarch/retroarch-joypad-autoconfig.nix
@@ -6,13 +6,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "retroarch-joypad-autoconfig";
-  version = "1.18.1";
+  version = "1.19.0";
 
   src = fetchFromGitHub {
     owner = "libretro";
     repo = "retroarch-joypad-autoconfig";
     rev = "v${version}";
-    hash = "sha256-eWfSqHusTri1HQUkSxY/iAceF/9PFVMC0rhLu/4W35k=";
+    hash = "sha256-iwxTMwGHix2K5UyjBWFamyo3nVULxwbIF+djyQWz5L0=";
   };
 
   makeFlags = [
diff --git a/pkgs/applications/emulators/retrofe/default.nix b/pkgs/applications/emulators/retrofe/default.nix
index fe61849d5ae1a..37e05f744d8bf 100644
--- a/pkgs/applications/emulators/retrofe/default.nix
+++ b/pkgs/applications/emulators/retrofe/default.nix
@@ -67,7 +67,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A frontend for arcade cabinets and media PCs";
+    description = "Frontend for arcade cabinets and media PCs";
     homepage = "http://retrofe.nl/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ hrdinka ];
diff --git a/pkgs/applications/emulators/ripes/default.nix b/pkgs/applications/emulators/ripes/default.nix
index d1ebaf34be25b..92b7aca0a1444 100644
--- a/pkgs/applications/emulators/ripes/default.nix
+++ b/pkgs/applications/emulators/ripes/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
   passthru.updateScript = unstableGitUpdater { };
 
   meta = with lib; {
-    description = "A graphical processor simulator and assembly editor for the RISC-V ISA";
+    description = "Graphical processor simulator and assembly editor for the RISC-V ISA";
     homepage = "https://github.com/mortbopet/Ripes";
     license = licenses.mit;
     platforms = platforms.unix;
diff --git a/pkgs/applications/emulators/ruffle/default.nix b/pkgs/applications/emulators/ruffle/default.nix
index e538def0d47c5..0d9e05dc2e86d 100644
--- a/pkgs/applications/emulators/ruffle/default.nix
+++ b/pkgs/applications/emulators/ruffle/default.nix
@@ -6,6 +6,7 @@
   pkg-config,
   python3,
   rustPlatform,
+  stdenv,
   lib,
   wayland,
   xorg,
@@ -18,6 +19,7 @@
   gsettings-desktop-schemas,
   glib,
   libxkbcommon,
+  darwin,
 }:
 
 let
@@ -34,56 +36,62 @@ rustPlatform.buildRustPackage {
     hash = "sha256-WfoYQku1NFhvWyqeSVKtsMMEyUA97YFD7cvdn4XYIPI=";
   };
 
-  nativeBuildInputs = [
-    glib
-    gsettings-desktop-schemas
-    jre_minimal
-    makeWrapper
-    pkg-config
-    python3
-    wrapGAppsHook3
-  ];
+  nativeBuildInputs =
+    [ jre_minimal ]
+    ++ lib.optionals stdenv.isLinux [
+      glib
+      gsettings-desktop-schemas
+      makeWrapper
+      pkg-config
+      python3
+      wrapGAppsHook3
+    ]
+    ++ lib.optionals stdenv.isDarwin [ rustPlatform.bindgenHook ];
 
-  buildInputs = [
-    alsa-lib
-    cairo
-    gtk3
-    openssl
-    wayland
-    xorg.libX11
-    xorg.libXcursor
-    xorg.libXrandr
-    xorg.libXi
-    xorg.libxcb
-    xorg.libXrender
-    vulkan-loader
-    udev
-  ];
+  buildInputs =
+    lib.optionals stdenv.isLinux [
+      alsa-lib
+      cairo
+      gtk3
+      openssl
+      wayland
+      xorg.libX11
+      xorg.libXcursor
+      xorg.libXrandr
+      xorg.libXi
+      xorg.libxcb
+      xorg.libXrender
+      vulkan-loader
+      udev
+    ]
+    ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.AppKit ];
 
   dontWrapGApps = true;
 
-  preFixup = ''
+  preFixup = lib.optionalString stdenv.isLinux ''
     patchelf $out/bin/ruffle_desktop \
       --add-needed libxkbcommon-x11.so \
       --add-needed libwayland-client.so \
       --add-rpath ${libxkbcommon}/lib:${wayland}/lib
   '';
 
-  postFixup = ''
-    # This name is too generic
-    mv $out/bin/exporter $out/bin/ruffle_exporter
+  postFixup =
+    ''
+      # This name is too generic
+      mv $out/bin/exporter $out/bin/ruffle_exporter
+    ''
+    + lib.optionalString stdenv.isLinux ''
+      vulkanWrapperArgs+=(
+        --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib
+      )
 
-    vulkanWrapperArgs+=(
-      --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib
-    )
+      wrapProgram $out/bin/ruffle_exporter \
+        "''${vulkanWrapperArgs[@]}"
 
-    wrapProgram $out/bin/ruffle_exporter \
-      "''${vulkanWrapperArgs[@]}"
-
-    wrapProgram $out/bin/ruffle_desktop \
-      "''${vulkanWrapperArgs[@]}" \
-      "''${gappsWrapperArgs[@]}"
-  '';
+      wrapProgram $out/bin/ruffle_desktop \
+        "''${vulkanWrapperArgs[@]}" \
+        "''${gappsWrapperArgs[@]}"
+    '';
 
   cargoBuildFlags = [ "--workspace" ];
 
@@ -99,7 +107,7 @@ rustPlatform.buildRustPackage {
   };
 
   meta = with lib; {
-    description = "An Adobe Flash Player emulator written in the Rust programming language";
+    description = "Adobe Flash Player emulator written in the Rust programming language";
     homepage = "https://ruffle.rs/";
     license = with licenses; [
       mit
@@ -109,7 +117,7 @@ rustPlatform.buildRustPackage {
       govanify
       jchw
     ];
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
     mainProgram = "ruffle_desktop";
   };
 }
diff --git a/pkgs/applications/emulators/sameboy/default.nix b/pkgs/applications/emulators/sameboy/default.nix
index 643092b0a06b7..d723eaecc20c5 100644
--- a/pkgs/applications/emulators/sameboy/default.nix
+++ b/pkgs/applications/emulators/sameboy/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "sameboy";
-  version = "0.16.3";
+  version = "0.16.5";
 
   src = fetchFromGitHub {
     owner = "LIJI32";
     repo = "SameBoy";
     rev = "v${version}";
-    sha256 = "sha256-sQWmuF1dQgvW9WyOxgxaupTUcde3KzzYiGv+v1N5ssk=";
+    sha256 = "sha256-w/l+L/Gs2ERzXLiGFrNKHBTGBLdr+2zn1ZYRHUtZcHg=";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/applications/emulators/simh/default.nix b/pkgs/applications/emulators/simh/default.nix
index b0cae68ed2180..74419d500a53e 100644
--- a/pkgs/applications/emulators/simh/default.nix
+++ b/pkgs/applications/emulators/simh/default.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "http://simh.trailing-edge.com/";
-    description = "A collection of simulators of historic hardware";
+    description = "Collection of simulators of historic hardware";
     longDescription = ''
       SimH (History Simulator) is a collection of simulators for historically
       significant or just plain interesting computer hardware and software from
diff --git a/pkgs/applications/emulators/simplenes/default.nix b/pkgs/applications/emulators/simplenes/default.nix
index 05a00e2c9201b..5fba8b5376e92 100644
--- a/pkgs/applications/emulators/simplenes/default.nix
+++ b/pkgs/applications/emulators/simplenes/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/amhndu/SimpleNES";
-    description = "An NES emulator written in C++";
+    description = "NES emulator written in C++";
     license = licenses.gpl3;
     maintainers = with maintainers; [ ivar ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/emulators/tamatool/default.nix b/pkgs/applications/emulators/tamatool/default.nix
index cc245ebbe1fae..04e5452bf72d5 100644
--- a/pkgs/applications/emulators/tamatool/default.nix
+++ b/pkgs/applications/emulators/tamatool/default.nix
@@ -69,7 +69,7 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   meta = with lib; {
-    description = "A cross-platform Tamagotchi P1 explorer";
+    description = "Cross-platform Tamagotchi P1 explorer";
     homepage = "https://github.com/jcrona/tamatool";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ fgaz ];
diff --git a/pkgs/applications/emulators/tiny8086/default.nix b/pkgs/applications/emulators/tiny8086/default.nix
index c236cd0950f61..a3dc3c07265c8 100644
--- a/pkgs/applications/emulators/tiny8086/default.nix
+++ b/pkgs/applications/emulators/tiny8086/default.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/adriancable/8086tiny";
-    description = "An open-source small 8086 emulator";
+    description = "Open-source small 8086 emulator";
     longDescription = ''
       8086tiny is a tiny, open-source (MIT), portable (little-endian hosts)
       Intel PC emulator, powerful enough to run DOS, Windows 3.0, Excel, MS
diff --git a/pkgs/applications/emulators/tinyemu/default.nix b/pkgs/applications/emulators/tinyemu/default.nix
index ca3f8acd88ca2..31dbfc9c23db6 100644
--- a/pkgs/applications/emulators/tinyemu/default.nix
+++ b/pkgs/applications/emulators/tinyemu/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://bellard.org/tinyemu/";
-    description = "A system emulator for the RISC-V and x86 architectures";
+    description = "System emulator for the RISC-V and x86 architectures";
     longDescription = ''
       TinyEMU is a system emulator for the RISC-V and x86 architectures. Its
       purpose is to be small and simple while being complete.
diff --git a/pkgs/applications/emulators/vbam/default.nix b/pkgs/applications/emulators/vbam/default.nix
index 3c89fed020b41..b5141c59f91ea 100644
--- a/pkgs/applications/emulators/vbam/default.nix
+++ b/pkgs/applications/emulators/vbam/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta =  with lib; {
-    description = "A merge of the original Visual Boy Advance forks";
+    description = "Merge of the original Visual Boy Advance forks";
     license = licenses.gpl2;
     maintainers = with maintainers; [ lassulus netali ];
     homepage = "https://vba-m.com/";
diff --git a/pkgs/applications/emulators/wine/base.nix b/pkgs/applications/emulators/wine/base.nix
index 1c62a9aad97d3..dfc72683d7d3b 100644
--- a/pkgs/applications/emulators/wine/base.nix
+++ b/pkgs/applications/emulators/wine/base.nix
@@ -193,7 +193,7 @@ lib.optionalAttrs (buildScript != null) { builder = buildScript; }
       fromSource
       binaryNativeCode  # mono, gecko
     ];
-    description = "An Open Source implementation of the Windows API on top of X, OpenGL, and Unix";
+    description = "Open Source implementation of the Windows API on top of X, OpenGL, and Unix";
     inherit badPlatforms platforms;
     maintainers = with lib.maintainers; [ avnik raskin bendlas jmc-figueira reckenrode ];
     inherit mainProgram;
diff --git a/pkgs/applications/emulators/wine/sources.nix b/pkgs/applications/emulators/wine/sources.nix
index abede892b5ecf..bd6b5e4d080d0 100644
--- a/pkgs/applications/emulators/wine/sources.nix
+++ b/pkgs/applications/emulators/wine/sources.nix
@@ -69,9 +69,9 @@ in rec {
 
   unstable = fetchurl rec {
     # NOTE: Don't forget to change the hash for staging as well.
-    version = "9.9";
+    version = "9.10";
     url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz";
-    hash = "sha256-TWengSxKvUo96SMjjmD1qGsWrH+yD2KU4Nxu+ei+yjY=";
+    hash = "sha256-r8NLSRv6FMYsP99ifdK13Kxefp8/FFrbFDMleK+M8cA=";
     inherit (stable) patches;
 
     ## see http://wiki.winehq.org/Gecko
@@ -117,7 +117,7 @@ in rec {
   staging = fetchFromGitLab rec {
     # https://gitlab.winehq.org/wine/wine-staging
     inherit (unstable) version;
-    hash = "sha256-JJrt2zTCjI8Zectoa5B0eZm2BLQm9u5cHbqVEHygwd0=";
+    hash = "sha256-ZqajfgPSKTcNBiDWEc9UgZWWmvkJvTA0S+j98Qz/y08=";
     domain = "gitlab.winehq.org";
     owner = "wine";
     repo = "wine-staging";
diff --git a/pkgs/applications/emulators/wine/winetricks.nix b/pkgs/applications/emulators/wine/winetricks.nix
index 2b31faae18a42..6d3ac4f662963 100644
--- a/pkgs/applications/emulators/wine/winetricks.nix
+++ b/pkgs/applications/emulators/wine/winetricks.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = {
-    description = "A script to install DLLs needed to work around problems in Wine";
+    description = "Script to install DLLs needed to work around problems in Wine";
     mainProgram = "winetricks";
     license = lib.licenses.lgpl21;
     homepage = "https://github.com/Winetricks/winetricks";
diff --git a/pkgs/applications/emulators/xcpc/default.nix b/pkgs/applications/emulators/xcpc/default.nix
index 6482f05cf1b11..d2d946c400fd1 100644
--- a/pkgs/applications/emulators/xcpc/default.nix
+++ b/pkgs/applications/emulators/xcpc/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     ++ optional motifSupport lesstif;
 
   meta = {
-    description = "A portable Amstrad CPC 464/664/6128 emulator written in C";
+    description = "Portable Amstrad CPC 464/664/6128 emulator written in C";
     homepage = "https://www.xcpc-emulator.net";
     license = licenses.gpl2Plus;
     maintainers = [ ];
diff --git a/pkgs/applications/emulators/yabause/default.nix b/pkgs/applications/emulators/yabause/default.nix
index fea9a439bb8fe..53fcc870f1a16 100644
--- a/pkgs/applications/emulators/yabause/default.nix
+++ b/pkgs/applications/emulators/yabause/default.nix
@@ -27,7 +27,7 @@ mkDerivation rec {
   ] ;
 
   meta = with lib; {
-    description = "An open-source Sega Saturn emulator";
+    description = "Open-source Sega Saturn emulator";
     mainProgram = "yabause";
     homepage = "https://yabause.org/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/emulators/zsnes/2.x.nix b/pkgs/applications/emulators/zsnes/2.x.nix
index df253477d07bb..4a446174a34d2 100644
--- a/pkgs/applications/emulators/zsnes/2.x.nix
+++ b/pkgs/applications/emulators/zsnes/2.x.nix
@@ -55,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "https://github.com/xyproto/zsnes";
-    description = "A maintained fork of zsnes";
+    description = "Maintained fork of zsnes";
     license = lib.licenses.gpl2Plus;
     maintainers = [ lib.maintainers.AndersonTorres ];
     platforms = lib.intersectLists lib.platforms.linux lib.platforms.x86;
diff --git a/pkgs/applications/emulators/zsnes/default.nix b/pkgs/applications/emulators/zsnes/default.nix
index ebe7af84d7fcf..98fed7058611c 100644
--- a/pkgs/applications/emulators/zsnes/default.nix
+++ b/pkgs/applications/emulators/zsnes/default.nix
@@ -65,7 +65,7 @@ in stdenv.mkDerivation {
   '';
 
   meta = {
-    description = "A Super Nintendo Entertainment System Emulator";
+    description = "Super Nintendo Entertainment System Emulator";
     license = lib.licenses.gpl2Plus;
     maintainers = [ lib.maintainers.sander ];
     homepage = "https://www.zsnes.com";