about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix')
-rw-r--r--nixpkgs/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix143
1 files changed, 143 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix b/nixpkgs/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix
new file mode 100644
index 000000000000..5b4dc1b372ef
--- /dev/null
+++ b/nixpkgs/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix
@@ -0,0 +1,143 @@
+{ lib
+, buildDotnetModule
+, dotnetCorePackages
+, fetchFromGitHub
+, wrapGAppsHook
+, iconConvTools
+, copyDesktopItems
+, makeDesktopItem
+, libX11
+, libICE
+, libSM
+, libXi
+, libXcursor
+, libXext
+, libXrandr
+, fontconfig
+, glew
+, SDL2
+, glfw
+, glibc
+, libGL
+, freetype
+, openal
+, fluidsynth
+, gtk3
+, pango
+, atk
+, cairo
+, zlib
+, glib
+, gdk-pixbuf
+}:
+let
+  version = "0.21.1";
+  pname = "space-station-14-launcher";
+in
+buildDotnetModule rec {
+  inherit pname;
+
+  # Workaround to prevent buildDotnetModule from overriding assembly versions.
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "space-wizards";
+    repo = "SS14.Launcher";
+    rev = "v${version}";
+    hash = "sha256-uJ/47cQZsGgrExemWCWeSM/U6eW2HoKWHCsVE2KypVQ=";
+    fetchSubmodules = true;
+  };
+
+  buildType = "Release";
+  selfContainedBuild = false;
+
+  projectFile = [
+    "SS14.Loader/SS14.Loader.csproj"
+    "SS14.Launcher/SS14.Launcher.csproj"
+  ];
+
+  nugetDeps = ./deps.nix;
+
+  passthru = {
+    inherit version; # Workaround so update script works.
+    updateScript = ./update.sh;
+  };
+
+  dotnet-sdk = dotnetCorePackages.sdk_7_0;
+  dotnet-runtime = dotnetCorePackages.runtime_7_0;
+
+  dotnetFlags = [
+    "-p:FullRelease=true"
+    "-p:RobustILLink=true"
+    "-nologo"
+  ];
+
+  nativeBuildInputs = [ wrapGAppsHook iconConvTools copyDesktopItems ];
+
+  runtimeDeps = [
+    # Required by the game.
+    glfw
+    SDL2
+    glibc
+    libGL
+    openal
+    freetype
+    fluidsynth
+
+    # Needed for file dialogs.
+    gtk3
+    pango
+    cairo
+    atk
+    zlib
+    glib
+    gdk-pixbuf
+
+    # Avalonia UI dependencies.
+    libX11
+    libICE
+    libSM
+    libXi
+    libXcursor
+    libXext
+    libXrandr
+    fontconfig
+    glew
+  ];
+
+  executables = [ "SS14.Launcher" ];
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = pname;
+      exec = meta.mainProgram;
+      icon = pname;
+      desktopName = "Space Station 14 Launcher";
+      comment = meta.description;
+      categories = [ "Game" ];
+      startupWMClass = meta.mainProgram;
+    })
+  ];
+
+  postInstall = ''
+    mkdir -p $out/lib/space-station-14-launcher/loader
+    cp -r SS14.Loader/bin/${buildType}/*/* $out/lib/space-station-14-launcher/loader/
+
+    icoFileToHiColorTheme SS14.Launcher/Assets/icon.ico space-station-14-launcher $out
+  '';
+
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  meta = with lib; {
+    description = "Launcher for Space Station 14, a multiplayer game about paranoia and disaster";
+    homepage = "https://spacestation14.io";
+    license = licenses.mit;
+    maintainers = [ maintainers.zumorica ];
+    platforms = [ "x86_64-linux" ];
+    mainProgram = "SS14.Launcher";
+  };
+}