about summary refs log tree commit diff
path: root/nixpkgs/pkgs/by-name/re
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/by-name/re')
-rw-r--r--nixpkgs/pkgs/by-name/re/redka/package.nix30
-rw-r--r--nixpkgs/pkgs/by-name/re/refinery-cli/package.nix28
-rw-r--r--nixpkgs/pkgs/by-name/re/regal/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/re/regina/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/re/regols/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/re/renode-unstable/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/re/renpy/package.nix138
-rw-r--r--nixpkgs/pkgs/by-name/re/renpy/shutup-erofs-errors.patch29
-rw-r--r--nixpkgs/pkgs/by-name/re/retool/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/re/retrospy/deps.nix154
-rw-r--r--nixpkgs/pkgs/by-name/re/retrospy/package.nix89
-rwxr-xr-xnixpkgs/pkgs/by-name/re/retrospy/update.sh17
13 files changed, 499 insertions, 14 deletions
diff --git a/nixpkgs/pkgs/by-name/re/redka/package.nix b/nixpkgs/pkgs/by-name/re/redka/package.nix
new file mode 100644
index 000000000000..3ead73db8310
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/re/redka/package.nix
@@ -0,0 +1,30 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "redka";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "nalgeon";
+    repo = "redka";
+    rev = "v${version}";
+    hash = "sha256-Dm+QMmCYoYJWv+Crot0bwcSPHuUYQzhRgTO65jRjLLE=";
+  };
+
+  vendorHash = "sha256-aX0X6TWVEouo884LunCt+UzLyvDHgmvuxdV0wh0r7Ro=";
+
+  subPackages = [ "cmd/redka" "cmd/cli" ];
+
+  ldflags = [ "-X main.version=v${version}" ];
+
+  postInstall = ''
+    mv $out/bin/{cli,redka-cli}
+  '';
+
+  meta = {
+    description = "Redis re-implemented with SQLite";
+    homepage = "https://github.com/nalgeon/redka";
+    maintainers = with lib.maintainers; [ sikmir ];
+    license = lib.licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/re/refinery-cli/package.nix b/nixpkgs/pkgs/by-name/re/refinery-cli/package.nix
new file mode 100644
index 000000000000..609a2618f86c
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/re/refinery-cli/package.nix
@@ -0,0 +1,28 @@
+{ fetchCrate, lib, stdenv, openssl, pkg-config, rustPlatform, darwin }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "refinery-cli";
+  version = "0.8.14";
+
+  src = fetchCrate {
+    pname = "refinery_cli";
+    inherit version;
+    sha256 = "sha256-gHW+5WWzk1H2O5B2sWdl6QcOeUbNvbdZZBD10SmE1GA=";
+  };
+
+  cargoHash = "sha256-Go7+LZSze/IrNwEl+11Dm5O9RcREyPSkHPjlE9SPO70=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ openssl ]
+    ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.SystemConfiguration ];
+
+  meta = with lib; {
+    description = "Run migrations for the Refinery ORM for Rust via the CLI";
+    mainProgram = "refinery";
+    homepage = "https://github.com/rust-db/refinery";
+    changelog = "https://github.com/rust-db/refinery/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucperkins ];
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/re/regal/package.nix b/nixpkgs/pkgs/by-name/re/regal/package.nix
index 70f6058c674a..d97004f6439b 100644
--- a/nixpkgs/pkgs/by-name/re/regal/package.nix
+++ b/nixpkgs/pkgs/by-name/re/regal/package.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   name = "regal";
-  version = "0.21.2";
+  version = "0.21.3";
 
   src = fetchFromGitHub {
     owner = "StyraInc";
     repo = "regal";
     rev = "v${version}";
-    hash = "sha256-YGUXJ5rfzyLwqhOLBuIRdN1G0fTcrPmuIsYKS/CzzW4=";
+    hash = "sha256-MeEamVAETl+PJXJ2HpbhYdEG3kqvEeT5bGzRHyTrjcY=";
   };
 
   vendorHash = "sha256-5rj2dCWya24VUmIFf0oJQop80trq9NnqqFlBW/A6opk=";
diff --git a/nixpkgs/pkgs/by-name/re/regina/package.nix b/nixpkgs/pkgs/by-name/re/regina/package.nix
index 7480ade5413c..f551d09dfc72 100644
--- a/nixpkgs/pkgs/by-name/re/regina/package.nix
+++ b/nixpkgs/pkgs/by-name/re/regina/package.nix
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   pname = "regina-rexx";
-  version = "3.9.5";
+  version = "3.9.6";
 
   src = fetchurl {
     url = "mirror://sourceforge/regina-rexx/regina-rexx/${version}/${pname}-${version}.tar.gz";
-    hash = "sha256-COmpBhvuADjPtFRG3iB2b/2uUO6jf2ZCRG7E5zoqvFE=";
+    hash = "sha256-7ZjHp/HVpBSLAv7xsWruSmpthljQGoDPXFAwFe8Br6U=";
   };
 
   buildInputs = [ ncurses ];
diff --git a/nixpkgs/pkgs/by-name/re/regols/package.nix b/nixpkgs/pkgs/by-name/re/regols/package.nix
index 64515e5ed72e..d96dda45bf71 100644
--- a/nixpkgs/pkgs/by-name/re/regols/package.nix
+++ b/nixpkgs/pkgs/by-name/re/regols/package.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "regols";
-  version = "0.2.2";
+  version = "0.2.3";
 
   src = fetchFromGitHub {
     owner = "kitagry";
     repo = "regols";
     rev = "v${version}";
-    hash = "sha256-2ZwmIlv3kJ26p15t7NvB9sX2GO+B3ypeNl50b7XA0Iw=";
+    hash = "sha256-nZ0zBCZXVY2AqzsBWm/HOp9wO7Cj1AsSgpi6YwmhfHY=";
   };
 
-  vendorHash = "sha256-N6gtkZSNLXz3B961grM3xHzm7x4/kzcLkDOgiFLGp8U=";
+  vendorHash = "sha256-LQdYmsof4CRDBz65Q/YDl+Ll77fvAR/CV/P2RK8a0Lg=";
 
   meta = with lib; {
     description = "OPA Rego language server";
diff --git a/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix b/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix
index 2472831eac22..47ef5321bd19 100644
--- a/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix
+++ b/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix
@@ -6,14 +6,14 @@
 
 python3.pkgs.buildPythonApplication {
   pname = "renode-dts2repl";
-  version = "unstable-2024-04-16";
+  version = "0-unstable-2024-05-16";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "antmicro";
     repo = "dts2repl";
-    rev = "83e2d743202684eb1f89a1b93e859c69cd736455";
-    hash = "sha256-iD+59mrFNVRu6g58XXLR2Pg8oDpNIiI/+TyCdbRbjtM=";
+    rev = "2eb930e6c9f6b5821e62ca568682a099a2aea99e";
+    hash = "sha256-fMx3sbpxLDzNiDvqxEtqXvAKD8UWe7Du7JTOL1hVkk4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix b/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix
index dd971a8df0fe..46cf78a80971 100644
--- a/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix
+++ b/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix
@@ -5,11 +5,11 @@
 
 renode.overrideAttrs (finalAttrs: _: {
   pname = "renode-unstable";
-  version = "1.15.0+20240426git72f3c383b";
+  version = "1.15.0+20240515gita6b1d773d";
 
   src = fetchurl {
     url = "https://builds.renode.io/renode-${finalAttrs.version}.linux-portable.tar.gz";
-    hash = "sha256-BOQT5nG6Vu12RyAkCwnh6PYfNQTcYGdV4XHDpi/8kPE=";
+    hash = "sha256-N0pdjbEsXZiPh/xr76akmwSmkEt/fsBXZl4Cjncz3hU=";
   };
 
   passthru.updateScript =
diff --git a/nixpkgs/pkgs/by-name/re/renpy/package.nix b/nixpkgs/pkgs/by-name/re/renpy/package.nix
new file mode 100644
index 000000000000..d31ad9ced864
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/re/renpy/package.nix
@@ -0,0 +1,138 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  python3,
+  pkg-config,
+  SDL2,
+  libpng,
+  ffmpeg,
+  freetype,
+  glew,
+  libGL,
+  libGLU,
+  fribidi,
+  zlib,
+  harfbuzz,
+  makeWrapper,
+}:
+
+let
+  # https://renpy.org/doc/html/changelog.html#versioning
+  # base_version is of the form major.minor.patch
+  # vc_version is of the form YYMMDDCC
+  # version corresponds to the tag on GitHub
+  base_version = "8.2.1";
+  vc_version = "24030407";
+  version = "${base_version}.${vc_version}";
+in
+stdenv.mkDerivation {
+  pname = "renpy";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "renpy";
+    repo = "renpy";
+    rev = version;
+    hash = "sha256-07Hj8mJGR0+Pn1DQ+sK5YQ3x3CTMsZ5h5yEoz44b2TM=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    makeWrapper
+    # Ren'Py currently does not compile on Cython 3.x.
+    # See https://github.com/renpy/renpy/issues/5359
+    python3.pkgs.cython_0
+    python3.pkgs.setuptools
+  ];
+
+  buildInputs =
+    [
+      SDL2
+      libpng
+      ffmpeg
+      freetype
+      glew
+      libGLU
+      libGL
+      fribidi
+      zlib
+      harfbuzz
+    ]
+    ++ (with python3.pkgs; [
+      python
+      pygame-sdl2
+      tkinter
+      future
+      six
+      pefile
+      requests
+      ecdsa
+    ]);
+
+  RENPY_DEPS_INSTALL = lib.concatStringsSep "::" [
+    SDL2
+    SDL2.dev
+    libpng
+    ffmpeg.lib
+    freetype
+    glew.dev
+    libGLU
+    libGL
+    fribidi
+    zlib
+    harfbuzz.dev
+  ];
+
+  enableParallelBuilding = true;
+
+  patches = [ ./shutup-erofs-errors.patch ];
+
+  postPatch = ''
+    cp tutorial/game/tutorial_director.rpy{m,}
+
+    cat > renpy/vc_version.py << EOF
+    version = '${version}'
+    official = False
+    nightly = False
+    # Look at https://renpy.org/latest.html for what to put.
+    version_name = '64bit Sensation'
+    EOF
+  '';
+
+  buildPhase = with python3.pkgs; ''
+    runHook preBuild
+    ${python.pythonOnBuildForHost.interpreter} module/setup.py build --parallel=$NIX_BUILD_CORES
+    runHook postBuild
+  '';
+
+  installPhase = with python3.pkgs; ''
+    runHook preInstall
+
+    ${python.pythonOnBuildForHost.interpreter} module/setup.py install_lib -d $out/${python.sitePackages}
+    mkdir -p $out/share/renpy
+    cp -vr sdk-fonts gui launcher renpy the_question tutorial renpy.py $out/share/renpy
+
+    makeWrapper ${python.interpreter} $out/bin/renpy \
+      --set PYTHONPATH "$PYTHONPATH:$out/${python.sitePackages}" \
+      --add-flags "$out/share/renpy/renpy.py"
+
+    runHook postInstall
+  '';
+
+  env.NIX_CFLAGS_COMPILE = with python3.pkgs; "-I${pygame-sdl2}/include/${python.libPrefix}";
+
+  meta = {
+    description = "Visual Novel Engine";
+    mainProgram = "renpy";
+    homepage = "https://renpy.org/";
+    changelog = "https://renpy.org/doc/html/changelog.html";
+    license = lib.licenses.mit;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ shadowrz ];
+  };
+
+  passthru = {
+    inherit base_version vc_version;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/re/renpy/shutup-erofs-errors.patch b/nixpkgs/pkgs/by-name/re/renpy/shutup-erofs-errors.patch
new file mode 100644
index 000000000000..9889c9f8ef85
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/re/renpy/shutup-erofs-errors.patch
@@ -0,0 +1,29 @@
+From 09e598ddf1f6af72ccb6c7c9301abff689e64f88 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=E5=A4=9C=E5=9D=82=E9=9B=85?=
+ <23130178+ShadowRZ@users.noreply.github.com>
+Date: Wed, 17 May 2023 14:32:03 +0800
+Subject: [PATCH] Don't print a backtrace on EROFS
+
+This can shut up EROFS errors caused by writing to read-only /nix/store.
+---
+ renpy/script.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/renpy/script.py b/renpy/script.py
+index de35457ba..b7d511560 100644
+--- a/renpy/script.py
++++ b/renpy/script.py
+@@ -705,6 +705,10 @@ class Script(object):
+                                 rpydigest = hashlib.md5(fullf.read()).digest()
+ 
+                             self.write_rpyc_md5(f, rpydigest)
++                    except OSError as e:
++                        if e.errno != 30:
++                            import traceback
++                            traceback.print_exc()
+                     except Exception:
+                         import traceback
+                         traceback.print_exc()
+-- 
+2.40.1
+
diff --git a/nixpkgs/pkgs/by-name/re/retool/package.nix b/nixpkgs/pkgs/by-name/re/retool/package.nix
index 9d93358c3d14..dd47fa3e6d0a 100644
--- a/nixpkgs/pkgs/by-name/re/retool/package.nix
+++ b/nixpkgs/pkgs/by-name/re/retool/package.nix
@@ -7,7 +7,7 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "retool";
-  version = "2.3.7";
+  version = "2.3.8";
 
   pyproject = true;
   disabled = python3.pkgs.pythonOlder "3.10";
@@ -16,7 +16,7 @@ python3.pkgs.buildPythonApplication rec {
     owner = "unexpectedpanda";
     repo = "retool";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WEx/S6+8lJXu+4yKazzJ55HTGKr38GMRL242FV7KdLQ=";
+    hash = "sha256-KGBpGZAC0SjStp0aulxVRJMmNwlpvSG0i0rtZgvFCpc=";
   };
 
   nativeBuildInputs = with python3.pkgs; [
diff --git a/nixpkgs/pkgs/by-name/re/retrospy/deps.nix b/nixpkgs/pkgs/by-name/re/retrospy/deps.nix
new file mode 100644
index 000000000000..3e91b8962400
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/re/retrospy/deps.nix
@@ -0,0 +1,154 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+  (fetchNuGet { pname = "Avalonia"; version = "11.0.0"; sha256 = "0wfbwrr8p5hg9f809d44gh2zfkfwnwayfw84vs33hh7ms0r380gd"; })
+  (fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; sha256 = "1az4s1g22ipak9a3xfh55z2h3rm6lpqh7svbpw6ag4ysrgsjjsjd"; })
+  (fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.28"; sha256 = "0d9hyc1zmyvzlb320arwrv12ncp45llq98hibv711b7ibm11dm7c"; })
+  (fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.0"; sha256 = "06wgzhxkivlaxkn8p61wainsprml2g1q4jmvy9fpn64qnfywjdn7"; })
+  (fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.0"; sha256 = "0qlcdx4w1pcljgs7sfbn5xmmnqwp2m0fqyswrgz6c8cvjzcfsjsj"; })
+  (fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.0"; sha256 = "08y31b357fax7c1ggwhjsfwgaj6zkm2abhpc6amlmk6ci4zn12lf"; })
+  (fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.0"; sha256 = "134xl19rfswnz75a1mhil9yqy8haqa788rmd1p1kk6ibjbhb3np9"; })
+  (fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.0"; sha256 = "042s8lc83lw6ygcsiza14wlsc09rgzw3ch2qaxkhlp73bh736ps3"; })
+  (fetchNuGet { pname = "Avalonia.Native"; version = "11.0.0"; sha256 = "1j7wpv81wqwh6zhfzc1f36vb5dp6s2ig45v8km9sp0q6f66zkrsh"; })
+  (fetchNuGet { pname = "Avalonia.ReactiveUI"; version = "11.0.0"; sha256 = "1fhp6f2aj2bmzlcj0s5r9i9rcxwakdg9gvjqvdqaq8s98d0s06qh"; })
+  (fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.0"; sha256 = "1b5031k8slwiz7bncih67fjl6ny234yd4skqxk611l9zp5snjic2"; })
+  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.0"; sha256 = "1ra1kd0kkblppr5zy7rzdbwllggrzvp9lkxblf9mg3y8rnp6fk83"; })
+  (fetchNuGet { pname = "Avalonia.Themes.Fluent"; version = "11.0.0"; sha256 = "0v1pnk3hjclr2yqxmff8w6mlgmjch5gfb6yb8h0z1a5m5j6y31qv"; })
+  (fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.0"; sha256 = "1qw76n78c14xl419yzabahbsrgymm850ql05gd4fh5naq2brksdm"; })
+  (fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.0"; sha256 = "1djp4m5yin4i2f9sjv4v3syv02fllwbfinzm9h0hm2abc2ccvrm3"; })
+  (fetchNuGet { pname = "Avalonia.X11"; version = "11.0.0"; sha256 = "1gd4zrjyw3hg3d48ivhxp0ca7ma13dnpr8y1wc7d51ddlrj3c86g"; })
+  (fetchNuGet { pname = "ColorTextBlock.Avalonia"; version = "11.0.0-d1"; sha256 = "1vf5fp11zx21bsakbpf12j6mchafh749cs03w9cifb6ci98jchgh"; })
+  (fetchNuGet { pname = "Desktop.Robot"; version = "1.5.0"; sha256 = "1y78cpv97cwk4xas0rcpr2wwyags424f3in63kzj8w80d9gradr1"; })
+  (fetchNuGet { pname = "DialogHost.Avalonia"; version = "0.7.5"; sha256 = "1wkvqrzvhjhhg128gfr57fcm2xvs9yvix405nm7v06kn6xr12d73"; })
+  (fetchNuGet { pname = "DynamicData"; version = "7.9.5"; sha256 = "1m9qx8g6na5ka6kd9vhg8gjmxrnkzb6v5cl5yqp1kdjsw4rcwy6x"; })
+  (fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; sha256 = "115aybicqs9ijjlcv6k6r5v0agkjm1bm1nkd0rj3jglv8s0xvmp2"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; sha256 = "1f18ahwkaginrg0vwsi6s56lvnqvvxv7pzklfs5lnknasxy1a76z"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; sha256 = "052d8frpkj4ijs6fm6xp55xbv95b1s9biqwa0w8zp3rgm88m9236"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; sha256 = "043hv36bg5240znbm8x5la7py17m4jfzy57q3ka32f6zjld83j36"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; sha256 = "08khd2jqm8sw58ljz5srangzfm2sz3gd2q1jzc5fr80lj8rv6r74"; })
+  (fetchNuGet { pname = "LibUsbDotNet"; version = "3.0.102-alpha"; sha256 = "05hz68aj5z76lgxz87r26314xw1a37s9wjy6gmvwwa77kg6av4d0"; })
+  (fetchNuGet { pname = "Markdown.Avalonia.Tight"; version = "11.0.0-d1"; sha256 = "0ks9k3wqwvdssiwbcjc4gnrfn1r8x2dbp9amraxkmws5a7vbjdyk"; })
+  (fetchNuGet { pname = "MessageBox.Avalonia"; version = "3.0.0"; sha256 = "1hyfhbayyi8dqsy9fnp09qh92qdil9wsjy97pdfp2mywgr121q50"; })
+  (fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; sha256 = "0p9c3m0zk59x9dcqw077hzd2yk60myisbacvm36mnwpcjwzjkp2m"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; sha256 = "0w0yx0lpg54iw5jazqk46h48gx43ij32gwac8iywdj6kxfxm03vw"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; sha256 = "0hjgxcsj5zy27lqk0986m59n5dbplx2vjjla2lsvg4bwg8qa7bpk"; })
+  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
+  (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.0"; sha256 = "0c6pcj088g1yd1vs529q3ybgsd2vjlk5y1ic6dkmbhvrp5jibl9p"; })
+  (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "7.0.0"; sha256 = "1bh77misznh19m1swqm3dsbji499b8xh9gk6w74sgbkarf6ni8lb"; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
+  (fetchNuGet { pname = "NodaTime"; version = "3.1.9"; sha256 = "10vyhv24awjqxjhyq6sw0gbbim8wddj1hnsv9l7mjv2vmg71qz1w"; })
+  (fetchNuGet { pname = "PolySharp"; version = "1.10.0"; sha256 = "06qici3hhk6a0jmy0nyvspcnmhbapnic6iin3i28pkdvrii02hnz"; })
+  (fetchNuGet { pname = "ReactiveUI"; version = "18.3.1"; sha256 = "1lxkc8yk9glj0w9n5vry2dnwwvh8152ad2c5bivk8aciq64zidyn"; })
+  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
+  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
+  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
+  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
+  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
+  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
+  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
+  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
+  (fetchNuGet { pname = "runtime.linux-arm.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "1q38c2fq6c464h1hs3g6528m0m8c3a5a08vsg59mzmm42r0ayh4k"; })
+  (fetchNuGet { pname = "runtime.linux-arm.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0gvrha8fp26hnzxqw99r50ki3mjnpjr6iaa483b4lahpljk06ijb"; })
+  (fetchNuGet { pname = "runtime.linux-arm64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "1z35v6bwwl8lv7yz37xj99gablhs9sr5y0r3zb57qmjx4psvix3f"; })
+  (fetchNuGet { pname = "runtime.linux-arm64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "1flvgvbpk7iqsi3cr23bjm9kdj63rmb97bn1hxzcia8iyybdzcnj"; })
+  (fetchNuGet { pname = "runtime.linux-x64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "1gfzdz42rsv5gp1p4w5ygkw43gm101q444a3jzgsspp2jk50hdj7"; })
+  (fetchNuGet { pname = "runtime.linux-x64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "17fw28ymsdbwpimmvh3nx2shc2khqm8gypg5q1s90kvyzb5ivzpg"; })
+  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
+  (fetchNuGet { pname = "runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "0l52l3kkl4rg9wg25lacb8khywmclcyq230mss0aqsyjqlyxv9l8"; })
+  (fetchNuGet { pname = "runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0gigh53b9ddkycvhm8vg5gz53wq02qzb7kivwh69vh2454f1qap7"; })
+  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
+  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
+  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
+  (fetchNuGet { pname = "runtime.osx-arm64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "03fjxh2lcrkgbr63zdk3sal99rrr60z9rgwa58pz4a2y78zy5h53"; })
+  (fetchNuGet { pname = "runtime.osx-arm64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0zphic782inl2mc6ijv7m4003pdlrk3rb7xdkcavxb5gy00lgc7n"; })
+  (fetchNuGet { pname = "runtime.osx-x64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "0y3rj0dv8l4fsw4w149q94zbqz4wm28ix5cvbhs8da3r92nqy9dj"; })
+  (fetchNuGet { pname = "runtime.osx-x64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0rnx41sgf690wx02z3i6bxgiw43khx5xq7f27arp53v7m0d11xny"; })
+  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
+  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
+  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
+  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
+  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
+  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
+  (fetchNuGet { pname = "SharpGen.Runtime"; version = "2.0.0-beta.13"; sha256 = "1250z6sa9ghf84czlkzvaysb29c0n229z1f0vh5qls89akrkl7h8"; })
+  (fetchNuGet { pname = "SharpGen.Runtime.COM"; version = "2.0.0-beta.13"; sha256 = "1lmv3jp2g7mgy9j23pd3j0wr3p89qiq8v6c6qxqf688izyni1166"; })
+  (fetchNuGet { pname = "SixLabors.ImageSharp"; version = "3.0.1"; sha256 = "12ypfknphk30szsymmn1378vlp4jmlcvsz88flfxyhwgxrir0453"; })
+  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.3"; sha256 = "1yq694myq2rhfp2hwwpyzcg1pzpxcp7j72wib8p9pw9dfj7008sv"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.3"; sha256 = "0dajvr60nwvnv7s6kcqgw1w97zxdpz1c5lb7kcq7r0hi0l05ck3q"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.3"; sha256 = "191ajgi6fnfqcvqvkayjsxasiz6l0bv3pps8vv9abbyc4b12qvph"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.3"; sha256 = "1w5njksq3amrrp7fqxw89nv6ar2kgc5yx092i4rxv7hrjbd1aagx"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.3"; sha256 = "03wwfbarsxjnk70qhqyd1dw65098dncqk2m0vksx92j70i7lry6q"; })
+  (fetchNuGet { pname = "Splat"; version = "14.4.1"; sha256 = "03ycyjn2ii44npi015p4rk344xnjgdzz02cf63cmhx2ab8hv6p4b"; })
+  (fetchNuGet { pname = "SSH.NET"; version = "2020.0.2"; sha256 = "18mq7jjdbzc7qcsh5wg2j0gd39qbnrxkn811cy8wrdvki0pfi0sm"; })
+  (fetchNuGet { pname = "SshNet.Security.Cryptography"; version = "1.3.0"; sha256 = "1y9r9c2dn81l1l4nn976fwf0by83qbvb0sp1hw7m19pqz7pmaflh"; })
+  (fetchNuGet { pname = "System.CodeDom"; version = "7.0.0"; sha256 = "08a2k2v7kdx8wmzl4xcpfj749yy476ggqsy4cps4iyqqszgyv0zc"; })
+  (fetchNuGet { pname = "System.CodeDom"; version = "8.0.0-preview.6.23329.7"; sha256 = "1wbh229qyhrhcwihpkh99kzcfmn7f13s8l94gbw3hm4d24kqks7b"; })
+  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; })
+  (fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p"; })
+  (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "7.0.0"; sha256 = "149d9kmakzkbw69cip1ny0wjlgcvnhrr7vz5pavpsip36k2mw02a"; })
+  (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "8.0.0-preview.6.23329.7"; sha256 = "1jj4yizbcj54m0qhj18il5b2r2cw4njl5z46v0121qvsxsgllc8k"; })
+  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
+  (fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "7.0.0"; sha256 = "16p8z975dnzmncfifa9gw9n3k9ycpr2qvz7lglpghsvx0fava8k9"; })
+  (fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "8.0.0-preview.6.23329.7"; sha256 = "0c1m9c6fq4mqxv8mnwzmhpv5321lrgnn3sikis9l2072cm5lzcnm"; })
+  (fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; sha256 = "02n8rzm58dac2np8b3xw8ychbvylja4nh6938l5k2fhyn40imlgz"; })
+  (fetchNuGet { pname = "System.Drawing.Common"; version = "7.0.0"; sha256 = "0jwyv5zjxzr4bm4vhmz394gsxqa02q6pxdqd2hwy1f116f0l30dp"; })
+  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
+  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
+  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
+  (fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.0"; sha256 = "08211lvckdsdbd67xz4f6cyk76cli565j0dby1grlc4k9bhwby65"; })
+  (fetchNuGet { pname = "System.IO.Ports"; version = "7.0.0"; sha256 = "0nk5r3vair9kvbgcrp8zbc60x2yr464cnm6gjsz6wj1pm5b51gvp"; })
+  (fetchNuGet { pname = "System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0mc02ngqdbgazg7kw82g68kpbm5f7pdyjbfssjj30281116plyqq"; })
+  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
+  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
+  (fetchNuGet { pname = "System.Management"; version = "7.0.2"; sha256 = "0mjdkzl459hnz0qg4m0xp2kwizsqgdc9vc3xk7y7cv0znhhbb7bc"; })
+  (fetchNuGet { pname = "System.Management"; version = "8.0.0-preview.6.23329.7"; sha256 = "1f7apr1yq5jpr9alq03g90mj8wg9s30vxd8hp6irnf3pk9sgk5ys"; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
+  (fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; })
+  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
+  (fetchNuGet { pname = "System.Reactive"; version = "6.0.0"; sha256 = "1mkvx1fwychpczksy6svfmniqhbm3xqblxqik6178l12xgq7aw45"; })
+  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
+  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
+  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
+  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
+  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
+  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; })
+  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
+  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
+  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j"; })
+  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
+  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
+  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "7.0.0"; sha256 = "15s9s6hsj9bz0nzw41mxbqdjgjd71w2djqbv0aj413gfi9amybk9"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "8.0.0-preview.6.23329.7"; sha256 = "1xs1fmz30gr0g5c2m0xy1dx5rlfsfapyj8l6v7a9c312bd02m4id"; })
+  (fetchNuGet { pname = "System.Security.Permissions"; version = "7.0.0"; sha256 = "0wkm6bj4abknzj41ygkziifx8mzhj4bix92wjvj6lihaw1gniq8c"; })
+  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w"; })
+  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
+  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
+  (fetchNuGet { pname = "System.Windows.Extensions"; version = "7.0.0"; sha256 = "11r9f0v7qp365bdpq5ax023yra4qvygljz18dlqs650d44iay669"; })
+  (fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.15.0"; sha256 = "0d99kcs7r9cp6gpyc7z230czkkyx4164x86dhy0mca73f2ykc2g2"; })
+  (fetchNuGet { pname = "Vortice.DirectInput"; version = "3.2.0"; sha256 = "0ig60651kvynw6x3f70y3c95n581shr1k75b407p1n9mr8qnzfsy"; })
+  (fetchNuGet { pname = "Vortice.DirectX"; version = "3.2.0"; sha256 = "15wlzag7p8kvrjzjpndaa1pb9acpvylnxz8vb3rx2d3q62k9k2hw"; })
+  (fetchNuGet { pname = "Vortice.Mathematics"; version = "1.5.2"; sha256 = "04s282b07fz1h1d6rw1iiqcsfpj415fin5q5cxmq2bg7a930rfjz"; })
+  (fetchNuGet { pname = "Vortice.XInput"; version = "3.2.0"; sha256 = "00bkrsml45rzy1yvxfrykdgmg9g74ac3a2xb0251205mziwa0m3x"; })
+]
diff --git a/nixpkgs/pkgs/by-name/re/retrospy/package.nix b/nixpkgs/pkgs/by-name/re/retrospy/package.nix
new file mode 100644
index 000000000000..07ba2d35da36
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/re/retrospy/package.nix
@@ -0,0 +1,89 @@
+{ buildDotnetModule
+, fetchFromGitHub
+, dotnetCorePackages
+, copyDesktopItems
+, makeDesktopItem
+, lib
+, fontconfig
+, libX11
+, libXcursor
+, libICE
+, libSM
+, runCommandLocal
+}:
+let
+  version = "6.4.8";
+
+  src = fetchFromGitHub {
+    owner = "retrospy";
+    repo = "RetroSpy";
+    rev = "v${version}";
+    hash = "sha256-0rdLdud78gnBX8CIdG81caJ1IRoIjGzb7coP4huEPDA=";
+  };
+
+  executables = [
+    "RetroSpy"
+    "GBPemu"
+    "GBPUpdater"
+    "UsbUpdater"
+  ];
+
+  retrospy-icons = runCommandLocal "retrospy-icons" { } ''
+    mkdir -p $out/share/retrospy
+    ${builtins.concatStringsSep "\n" (map (e: "cp ${src}/${e}.ico $out/share/retrospy/${e}.ico") executables)}
+  '';
+in
+buildDotnetModule {
+  pname = "retrospy";
+  inherit version;
+
+  inherit src;
+
+  nativeBuildInputs = [
+    copyDesktopItems
+  ];
+
+  runtimeDeps = [
+    fontconfig
+    libX11
+    libICE
+    libXcursor
+    libSM
+  ];
+
+  projectFile = [
+    "RetroSpyX/RetroSpyX.csproj"
+    "GBPemuX/GBPemuX.csproj"
+    "GBPUpdaterX2/GBPUpdaterX2.csproj"
+    "UsbUpdaterX2/UsbUpdaterX2.csproj"
+  ];
+
+  dotnet-sdk = dotnetCorePackages.sdk_7_0;
+  dotnet-runtime = dotnetCorePackages.aspnetcore_7_0;
+
+  nugetDeps = ./deps.nix;
+
+  inherit executables;
+
+  passthru.updateScript = ./update.sh;
+
+  desktopItems = map
+    (e: (makeDesktopItem {
+      name = e;
+      exec = e;
+      icon = "${retrospy-icons}/share/retrospy/${e}.ico";
+      desktopName = "${e}";
+      categories = [ "Utility" ];
+      startupWMClass = e;
+    }))
+    executables;
+
+  meta = {
+    description = "Live controller viewer for Nintendo consoles as well as many other retro consoles and computers";
+    homepage = "https://retro-spy.com/";
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.naxdy ];
+    platforms = lib.platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/by-name/re/retrospy/update.sh b/nixpkgs/pkgs/by-name/re/retrospy/update.sh
new file mode 100755
index 000000000000..f3715f9da478
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/re/retrospy/update.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq common-updater-scripts
+# shellcheck shell=bash
+set -euo pipefail
+
+new_version="$(curl -s "https://api.github.com/repos/retrospy/RetroSpy/releases?per_page=1" | jq -r '.[0].tag_name')"
+new_version=${new_version#v}
+old_version=$(nix-instantiate --eval -A retrospy.version | jq -e -r)
+
+if [[ "$new_version" == "$old_version" ]]; then
+    echo "Up to date"
+    exit 0
+fi
+
+update-source-version retrospy "$new_version"
+
+eval "$(nix-build . -A retrospy.fetch-deps --no-out-link)"