Skip to content

Commit

Permalink
steamvr: init
Browse files Browse the repository at this point in the history
  • Loading branch information
Pandapip1 committed Sep 16, 2024
1 parent d5ae935 commit ec926fd
Show file tree
Hide file tree
Showing 4 changed files with 222 additions and 0 deletions.
64 changes: 64 additions & 0 deletions pkgs/by-name/st/steamvr/PERMISSION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
From: John, Gavin N. (Gavin) <[email protected]>
To: [email protected]
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 <[email protected]>
To: John, Gavin N. (Gavin) <[email protected]>
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) <[email protected]>
To: Ben Jackson <[email protected]>
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 <[email protected]>
To: "'John, Gavin N. (Gavin)'" <[email protected]>
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.
3 changes: 3 additions & 0 deletions pkgs/by-name/st/steamvr/darwin.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{ lib }:

throw "Not yet implemented"
148 changes: 148 additions & 0 deletions pkgs/by-name/st/steamvr/linux.nix
Original file line number Diff line number Diff line change
@@ -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
'';
}
7 changes: 7 additions & 0 deletions pkgs/by-name/st/steamvr/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
lib,
stdenv,
callPackage,
}:

if stdenv.isDarwin then callPackage ./darwin.nix { } else callPackage ./linux.nix { }

0 comments on commit ec926fd

Please sign in to comment.