about summary refs log tree commit diff
path: root/pkgs/by-name/re/retrospy/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/re/retrospy/package.nix')
-rw-r--r--pkgs/by-name/re/retrospy/package.nix89
1 files changed, 89 insertions, 0 deletions
diff --git a/pkgs/by-name/re/retrospy/package.nix b/pkgs/by-name/re/retrospy/package.nix
new file mode 100644
index 0000000000000..07ba2d35da367
--- /dev/null
+++ b/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;
+  };
+}
+