diff --git a/Cargo.toml b/Cargo.toml index 93a4dd6..3a25e80 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,7 @@ cgmath = "0.18.0" bytemuck = { version = "1.14.0", features = ["derive"] } texpresso = { version = "2.0.1", features = ["rayon"] } serde = "1.0.193" +ahash = "0.8.6" url = { version = "2.5.0", optional = true, features = ["serde"] } 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 } tower-http = { version = "0.5.0", optional = true, features = ["cors"] } http = { version = "1.0.0", optional = true } -ahash = { version = "0.8.6", optional = true } [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."*"] opt-level = 2 diff --git a/assets.nix b/assets.nix new file mode 100644 index 0000000..bbe2311 --- /dev/null +++ b/assets.nix @@ -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"]; +} diff --git a/flake.nix b/flake.nix index 29c860c..8df3ca6 100644 --- a/flake.nix +++ b/flake.nix @@ -11,7 +11,7 @@ cross-naersk.inputs.nixpkgs.follows = "nixpkgs"; cross-naersk.inputs.naersk.follows = "naersk"; steam-fetcher = { -# url = "github:nix-community/steam-fetcher"; + # url = "github:nix-community/steam-fetcher"; url = "github:icewind1991/steam-fetcher/filelist"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -30,6 +30,7 @@ overlays = [ steam-fetcher.overlays.default (import rust-overlay) + (import ./overlay.nix) ]; pkgs = (import nixpkgs) { inherit system overlays; @@ -99,26 +100,20 @@ }); server = naersk'.buildPackage (nearskOpt // { - pname = "vbsp-server"; - preConfigure = '' + pname = "vbsp-server"; + preConfigure = '' cargo_build_options="--features server $cargo_build_options" - ''; - GLTFPACK = "${pkgs.meshoptimizer}/bin/gltfpack"; + ''; + GLTFPACK = "${pkgs.meshoptimizer}/bin/gltfpack"; }); - assets = pkgs.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"]; - }; + assets = pkgs.vbsp-server-assets; server-with-assets = server.overrideAttrs (old: { - buildInputs = server.buildInputs ++ [ pkgs.makeWrapper ]; + buildInputs = server.buildInputs ++ [pkgs.makeWrapper]; postInstall = '' wrapProgram "$out/bin/vbsp-server" --set TF_DIR "${assets}" ''; }); + vbsp-server = pkgs.vbsp-server; default = vbsp-to-gltf; }; @@ -142,5 +137,8 @@ nativeBuildInputs = [msrvToolchain] ++ tools; }; }; - }); + }) + // { + overlays.default = import ./overlay.nix; + }; } diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..7add0db --- /dev/null +++ b/overlay.nix @@ -0,0 +1,4 @@ +prev: final: { + vbsp-server = final.callPackage ./package.nix {}; + vbsp-server-assets = final.callPackage ./assets.nix {}; +} diff --git a/package.nix b/package.nix new file mode 100644 index 0000000..12562d3 --- /dev/null +++ b/package.nix @@ -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" ]; + } diff --git a/src/server/server.rs b/src/server/server.rs index 523536f..ceedd55 100644 --- a/src/server/server.rs +++ b/src/server/server.rs @@ -44,7 +44,7 @@ fn default_port() -> u16 { } #[derive(Debug, Error)] -enum ServerError { +pub enum ServerError { #[error(transparent)] Convert(#[from] vbsp_to_gltf::Error), #[error(transparent)]