This commit is contained in:
Robin Appelman 2024-01-03 21:50:41 +01:00
commit 78abe9bb27
6 changed files with 48 additions and 18 deletions

View file

@ -36,6 +36,7 @@ cgmath = "0.18.0"
bytemuck = { version = "1.14.0", features = ["derive"] } bytemuck = { version = "1.14.0", features = ["derive"] }
texpresso = { version = "2.0.1", features = ["rayon"] } texpresso = { version = "2.0.1", features = ["rayon"] }
serde = "1.0.193" serde = "1.0.193"
ahash = "0.8.6"
url = { version = "2.5.0", optional = true, features = ["serde"] } url = { version = "2.5.0", optional = true, features = ["serde"] }
toml = { version = "0.8.8", optional = true } toml = { version = "0.8.8", optional = true }
@ -45,10 +46,9 @@ reqwest = { version = "0.11.23", optional = true, default-features = false, feat
async-tempfile = { version = "0.5.0", optional = true } async-tempfile = { version = "0.5.0", optional = true }
tower-http = { version = "0.5.0", optional = true, features = ["cors"] } tower-http = { version = "0.5.0", optional = true, features = ["cors"] }
http = { version = "1.0.0", optional = true } http = { version = "1.0.0", optional = true }
ahash = { version = "0.8.6", optional = true }
[features] [features]
server = ["url", "toml", "axum", "tokio", "reqwest", "async-tempfile", "tower-http", "http", "ahash"] server = ["url", "toml", "axum", "tokio", "reqwest", "async-tempfile", "tower-http", "http"]
[profile.dev.package."*"] [profile.dev.package."*"]
opt-level = 2 opt-level = 2

9
assets.nix Normal file
View file

@ -0,0 +1,9 @@
{fetchSteam}:
fetchSteam {
name = "tf2-vpks";
appId = "440";
depotId = "441";
manifestId = "5382461088476630278"; # 22 December 2023 00:13:59 UTC
hash = "sha256-p8waSdyFTKSo7CKQAjAGhL4hGiacjU0M59z47VH1NwM=";
fileList = ["regex:(tf2|hl2)_(misc|textures)_.*\.vpk"];
}

View file

@ -11,7 +11,7 @@
cross-naersk.inputs.nixpkgs.follows = "nixpkgs"; cross-naersk.inputs.nixpkgs.follows = "nixpkgs";
cross-naersk.inputs.naersk.follows = "naersk"; cross-naersk.inputs.naersk.follows = "naersk";
steam-fetcher = { steam-fetcher = {
# url = "github:nix-community/steam-fetcher"; # url = "github:nix-community/steam-fetcher";
url = "github:icewind1991/steam-fetcher/filelist"; url = "github:icewind1991/steam-fetcher/filelist";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@ -30,6 +30,7 @@
overlays = [ overlays = [
steam-fetcher.overlays.default steam-fetcher.overlays.default
(import rust-overlay) (import rust-overlay)
(import ./overlay.nix)
]; ];
pkgs = (import nixpkgs) { pkgs = (import nixpkgs) {
inherit system overlays; inherit system overlays;
@ -99,26 +100,20 @@
}); });
server = naersk'.buildPackage (nearskOpt server = naersk'.buildPackage (nearskOpt
// { // {
pname = "vbsp-server"; pname = "vbsp-server";
preConfigure = '' preConfigure = ''
cargo_build_options="--features server $cargo_build_options" cargo_build_options="--features server $cargo_build_options"
''; '';
GLTFPACK = "${pkgs.meshoptimizer}/bin/gltfpack"; GLTFPACK = "${pkgs.meshoptimizer}/bin/gltfpack";
}); });
assets = pkgs.fetchSteam { assets = pkgs.vbsp-server-assets;
name = "tf2-vpks";
appId = "440";
depotId = "441";
manifestId = "5382461088476630278"; # 22 December 2023 00:13:59 UTC
hash = "sha256-p8waSdyFTKSo7CKQAjAGhL4hGiacjU0M59z47VH1NwM=";
fileList = ["regex:(tf2|hl2)_(misc|textures)_.*\.vpk"];
};
server-with-assets = server.overrideAttrs (old: { server-with-assets = server.overrideAttrs (old: {
buildInputs = server.buildInputs ++ [ pkgs.makeWrapper ]; buildInputs = server.buildInputs ++ [pkgs.makeWrapper];
postInstall = '' postInstall = ''
wrapProgram "$out/bin/vbsp-server" --set TF_DIR "${assets}" wrapProgram "$out/bin/vbsp-server" --set TF_DIR "${assets}"
''; '';
}); });
vbsp-server = pkgs.vbsp-server;
default = vbsp-to-gltf; default = vbsp-to-gltf;
}; };
@ -142,5 +137,8 @@
nativeBuildInputs = [msrvToolchain] ++ tools; nativeBuildInputs = [msrvToolchain] ++ tools;
}; };
}; };
}); })
// {
overlays.default = import ./overlay.nix;
};
} }

4
overlay.nix Normal file
View file

@ -0,0 +1,4 @@
prev: final: {
vbsp-server = final.callPackage ./package.nix {};
vbsp-server-assets = final.callPackage ./assets.nix {};
}

19
package.nix Normal file
View file

@ -0,0 +1,19 @@
{
stdenv,
rustPlatform,
lib,
}: let
inherit (lib.sources) sourceByRegex;
src = sourceByRegex ./. ["Cargo.*" "(src|derive|benches|tests|examples.*)(/.*)?"];
in
rustPlatform.buildRustPackage rec {
name = "vbsp-server";
version = "0.1.0";
inherit src;
cargoLock = {
lockFile = ./Cargo.lock;
};
buildFeatures = [ "server" ];
}

View file

@ -44,7 +44,7 @@ fn default_port() -> u16 {
} }
#[derive(Debug, Error)] #[derive(Debug, Error)]
enum ServerError { pub enum ServerError {
#[error(transparent)] #[error(transparent)]
Convert(#[from] vbsp_to_gltf::Error), Convert(#[from] vbsp_to_gltf::Error),
#[error(transparent)] #[error(transparent)]