From ec926fd96f7ee6d1a0afc3ed98e03c3892a1907f Mon Sep 17 00:00:00 2001 From: Gavin John Date: Tue, 10 Sep 2024 13:24:44 -0700 Subject: [PATCH] steamvr: init --- pkgs/by-name/st/steamvr/PERMISSION.md | 64 +++++++++++ pkgs/by-name/st/steamvr/darwin.nix | 3 + pkgs/by-name/st/steamvr/linux.nix | 148 ++++++++++++++++++++++++++ pkgs/by-name/st/steamvr/package.nix | 7 ++ 4 files changed, 222 insertions(+) create mode 100644 pkgs/by-name/st/steamvr/PERMISSION.md create mode 100644 pkgs/by-name/st/steamvr/darwin.nix create mode 100644 pkgs/by-name/st/steamvr/linux.nix create mode 100644 pkgs/by-name/st/steamvr/package.nix diff --git a/pkgs/by-name/st/steamvr/PERMISSION.md b/pkgs/by-name/st/steamvr/PERMISSION.md new file mode 100644 index 000000000000000..7eb9208a389caa2 --- /dev/null +++ b/pkgs/by-name/st/steamvr/PERMISSION.md @@ -0,0 +1,64 @@ +From: John, Gavin N. (Gavin) +To: vrlicensing@valvesoftware.com +Subject: Permission to package SteamVR + + +Hi Valve VR folks, + +I'm Gavin, an incoming freshman at Caltech. In my free time, I like to package programs for [nixpkgs](https://github.com/NixOS/nixpkgs), the package repository for the [nix](https://nixos.org/) package manager and its NixOS linux distribution. + +I initially planned to package it by downloading it using depotdownloader, but discovered that SteamVR can't be downloaded in its entirety using anonymous accounts. This led me to discover the [SteamVR licensing page](https://partner.steamgames.com/doc/features/steamvr/enterprise), which had this email address. + +Would you be okay with me modifying and distributing my copy of SteamVR for the purpose of making it available to install through nixpkgs? Nixpkgs has a mechanism to keep track of licenses that users have agreed to, so installation of SteamVR can require agreement to the Steam Subscriber Agreement, the Steam PC Café Agreement, and/or the SteamVR Commercial Installation License. + +Thank you for your consideration! + +Sincerely, + +Gavin John + +--- + +From: Ben Jackson +To: John, Gavin N. (Gavin) +Subject: Re: Permission to package SteamVR + + + * I initially planned to package it by downloading it using depotdownloader, but discovered that SteamVR can't be downloaded in its entirety using anonymous accounts. + +Thanks for bringing this to our attention. I have fixed that issue. + + * Would you be okay with me modifying and distributing my copy of SteamVR for the purpose of making it available to install through nixpkgs? + +We would rather avoid that. I assume if depotdownloader works again, this would no longer be preferably anyway. + +--Ben + +--- + +From: John, Gavin N. (Gavin) +To: Ben Jackson +Subject: [External Mail] Re: Permission to package SteamVR + + +Hi Ben, + +Thank you for your response! Thanks for fixing the issue with depot downloader. That's going to help a lot. + +Some modifications to SteamVR will be necessary to make all functionality work with NixOS. Do I have permission to make a configuration file and script that makes the necessary modifications, and to have the config file and script distributed? + +Thank you! + +Sincerely, + +Gavin + +--- + +From: Ben Jackson +To: "'John, Gavin N. (Gavin)'" +Subject: RE: Permission to package SteamVR + +It's fine to distribute patches that apply after downloading the base content. + +If there are specific issues that you think are generic issues regarding portability you can also send them my way. diff --git a/pkgs/by-name/st/steamvr/darwin.nix b/pkgs/by-name/st/steamvr/darwin.nix new file mode 100644 index 000000000000000..c5933fe581fa73e --- /dev/null +++ b/pkgs/by-name/st/steamvr/darwin.nix @@ -0,0 +1,3 @@ +{ lib }: + +throw "Not yet implemented" diff --git a/pkgs/by-name/st/steamvr/linux.nix b/pkgs/by-name/st/steamvr/linux.nix new file mode 100644 index 000000000000000..bf4771f682b2e88 --- /dev/null +++ b/pkgs/by-name/st/steamvr/linux.nix @@ -0,0 +1,148 @@ +{ + lib, + stdenvNoCC, + fetchSteam, + autoPatchelfHook, + audit, + bzip2, + expat, + gtk2, + gdk-pixbuf, + glib, + glibc, + libdrm, + libgcc, + libpng12, + libGL, + libusb1, + nspr, + nss, + openal, + SDL2, + vulkan-loader, + xorg, + zlib, + readline63, + rsync, + config, + acceptLicense ? + config.steam.acceptSubscriberAgreement or config.steam.acceptPCCafeAgreement + or config.steamvr.acceptCommercialLicense or true, # TODO: Change true to false once debugged +}: + +stdenvNoCC.mkDerivation { + name = "steamvr-linux"; + + srcs = + assert + !acceptLicense + -> throw '' + Use of SteamVR requires the acceptance of at least one of the following license agreements: + + - Steam Subscriber Agreement [1] + - Steam PC Café Agreement [2] + - SteamVR Commercial License Agreement [3] + + You can express acceptance by setting one of the following options: + + configuration.nix: + nixpkgs.config.steam.acceptSubscriberAgreement = true; # for the Steam Subscriber Agreement + nixpkgs.config.steam.acceptPCCafeAgreement = true; # for the Steam PC Café Agreement + nixpkgs.config.steamvr.acceptCommercialLicense = true; # for the SteamVR Commercial License Agreement + + [1]: https://store.steampowered.com/subscriber_agreement/ + [2]: https://partner.steamgames.com/doc/sitelicense/licensees/signup + [3]: https://partner.steamgames.com/doc/features/steamvr/enterprise + ''; + [ + (fetchSteam { + name = "steamvr-linux-depot"; + app = 250820; + depot = 250823; + manifest = 5747149350848671194; + hash = "sha256-q3jasX/prYhs+Vs7Ofru2N3WVxf/0tGlqTd5SvKRm10="; + }) + (fetchSteam { + name = "openvr-content-1-depot"; + app = 250820; + depot = 250824; + manifest = 5862217504045387455; + hash = "sha256-X4vQdfrbkqkDk+zWeZ9uq0aqa3EDzrUAsMAzQGLhmo8="; + }) + (fetchSteam { + name = "openvr-content-2-depot"; + app = 250820; + depot = 250827; + manifest = 2950592113021695594; + hash = "sha256-5P8FRXAe2ZUsEQxtdVQLjvq8YHWqG1xY6paRDF8fHtc="; + }) + (fetchSteam { + name = "openvr-content-3-depot"; + app = 250820; + depot = 250828; + manifest = 7972087267127211047; + hash = "sha256-nsrYx+/pba38ucDaEXOhrQeTHERegHUSv3MjiOhUdjg="; + }) + (fetchSteam { + name = "openvr-content-4-depot"; + app = 250820; + depot = 250829; + manifest = 1180860512328011191; + hash = "sha256-yf6aSyQ0r1RoFEp5aK9yNPbMN5lZEkLG1Gmr1ffLEsA="; + }) + (fetchSteam { + name = "steamvr-environments-linux-depot"; + app = 250820; + depot = 250829; + manifest = 1180860512328011191; + hash = "sha256-yf6aSyQ0r1RoFEp5aK9yNPbMN5lZEkLG1Gmr1ffLEsA="; + }) + ]; + sourceRoot = "."; + + nativeBuildInputs = [ + autoPatchelfHook + rsync + ]; + buildInputs = + [ + audit + bzip2 + expat + gtk2 + gdk-pixbuf + glib + glibc + libdrm + libgcc.lib + libpng12 + libGL + libusb1 + nspr + nss + openal + readline63 + SDL2 + vulkan-loader + zlib + ] + ++ (with xorg; [ + libX11 + libXext + libXrender + libXi + libXtst + libXdamage + libSM + ]); + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + mkdir -p $out + for src in $srcs; do + rsync -a $src/ $out/ + done + ''; +} diff --git a/pkgs/by-name/st/steamvr/package.nix b/pkgs/by-name/st/steamvr/package.nix new file mode 100644 index 000000000000000..e7b82add6eb761d --- /dev/null +++ b/pkgs/by-name/st/steamvr/package.nix @@ -0,0 +1,7 @@ +{ + lib, + stdenv, + callPackage, +}: + +if stdenv.isDarwin then callPackage ./darwin.nix { } else callPackage ./linux.nix { }