Unverified Commit 8675dc30 authored by gale's avatar gale
Browse files

slimevr-server: init at 0.13.2

parent a78c3461
Loading
Loading
Loading
Loading
+1073 −0

File added.

Preview size limit exceeded, changes collapsed.

+36 −0
Original line number Diff line number Diff line
diff --git a/build.gradle.kts b/build.gradle.kts
index 79534cdf..4f298e66 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,3 +1,2 @@
 plugins {
-	id("org.ajoberstar.grgit")
 }
diff --git a/server/desktop/build.gradle.kts b/server/desktop/build.gradle.kts
index 9ebb84a7..6130e45f 100644
--- a/server/desktop/build.gradle.kts
+++ b/server/desktop/build.gradle.kts
@@ -13,7 +13,6 @@ plugins {
 	application
 	id("com.gradleup.shadow")
 	id("com.github.gmazzo.buildconfig")
-	id("org.ajoberstar.grgit")
 }
 
 kotlin {
@@ -86,12 +85,10 @@ buildConfig {
 	useKotlinOutput { topLevelConstants = true }
 	packageName("dev.slimevr.desktop")
 
-	val gitVersionTag = providers.exec {
-		commandLine("git", "--no-pager", "tag", "--sort", "-taggerdate", "--points-at", "HEAD")
-	}.standardOutput.asText.get().split('\n').first()
-	buildConfigField("String", "GIT_COMMIT_HASH", "\"${grgit.head().abbreviatedId}\"")
+	val gitVersionTag = "@version@"
+	buildConfigField("String", "GIT_COMMIT_HASH", "\"NOT AVAILABLE\"")
 	buildConfigField("String", "GIT_VERSION_TAG", "\"${gitVersionTag.trim()}\"")
-	buildConfigField("boolean", "GIT_CLEAN", grgit.status().isClean.toString())
+	buildConfigField("boolean", "GIT_CLEAN", "true")
 }
 
 tasks.run<JavaExec> {
+107 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  runCommand,
  replaceVars,
  jdk17_headless,
  gradle,
  hidapi,
  makeWrapper,
}:
let
  java = jdk17_headless;
  # Without this the hidapi bundled with `org.hid4java:hid4java` will be used.
  # The bundled version won't be able to find `libudev.so.1`.
  javaOptions =
    let
      # hid4java tries to load `libhidapi.so` which doesn't exist in Nix's hidapi.
      # The `libhidapi.so` it expects is actually `libhidapi-hidraw.so`.
      libhidapi = runCommand "libhidapi" { } ''
        mkdir -p $out/lib
        ln -s ${hidapi}/lib/libhidapi-hidraw.so $out/lib/libhidapi.so
      '';
    in
    "-Djna.library.path='${
      lib.makeLibraryPath [
        hidapi
        libhidapi
      ]
    }'";
in

stdenv.mkDerivation (finalAttrs: {
  pname = "slimevr-server";
  version = "0.13.2";

  src = fetchFromGitHub {
    owner = "SlimeVR";
    repo = "SlimeVR-Server";
    rev = "v${finalAttrs.version}";
    hash = "sha256-XQDbP+LO/brpl7viSxuV3H4ALN0yIkj9lwr5eS1txNs=";
    # solarxr
    fetchSubmodules = true;
  };

  mitmCache = gradle.fetchDeps {
    inherit (finalAttrs) pname;
    data = ./deps.json;
  };

  patches = [
    # Upstream code uses Git to find the program version
    (replaceVars ./no-grgit.patch {
      inherit (finalAttrs) version;
    })
  ];

  postPatch = ''
    # Disable Android, so its files don't have to be patched.
    substituteInPlace settings.gradle.kts \
      --replace-fail 'include(":server:android")' ""
  '';

  nativeBuildInputs = [
    gradle
    makeWrapper
  ];

  # this is required for using mitm-cache on Darwin
  __darwinAllowLocalNetworking = true;

  gradleFlags = [ "-Dorg.gradle.java.home=${java}" ];

  gradleBuildTask = "shadowJar";

  doCheck = true;

  installPhase = ''
    runHook preInstall

    install -Dm644 server/desktop/build/libs/slimevr.jar $out/share/slimevr/slimevr.jar
    makeWrapper ${java}/bin/java $out/bin/slimevr-server \
        --add-flags "${javaOptions}" \
        --add-flags "-jar $out/share/slimevr/slimevr.jar"

    runHook postInstall
  '';

  passthru = {
    inherit java javaOptions;
  };

  meta = {
    homepage = "https://docs.slimevr.dev/";
    description = "App for facilitating full-body tracking in virtual reality";
    license = with lib.licenses; [
      mit
      asl20
    ];
    maintainers = with lib.maintainers; [
      gale-username
      imurx
    ];
    platforms = with lib.platforms; darwin ++ linux;
    mainProgram = "slimevr-server";
  };
})