diff --git a/.gitignore b/.gitignore index 6a55e53..05fd815 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,9 @@ target #.idea/ # Devenv -/.devenv +/.devState /assets/external /node_modules + +# Nix stuff +result* diff --git a/build.rs b/build.rs index 27807ff..77f7a44 100644 --- a/build.rs +++ b/build.rs @@ -24,7 +24,8 @@ fn main() { fs::create_dir_all(dst_dir).expect("create target directory"); }); if s.is_dir() { - fs::remove_dir_all(d); + // Try removal + let _ = fs::remove_dir_all(d); ::fs_utils::copy::copy_directory(s, d).expect("copy directory"); } else { fs::copy(s, d).expect("copy file"); @@ -61,8 +62,8 @@ pub fn copy_recursively(source: impl AsRef, destination: impl AsRef) let entry = entry?; let filetype = entry.file_type()?; if filetype.is_dir() { - fs::create_dir_all(&entry.path())?; - copy_recursively(entry.path(), destination.as_ref().join(entry.file_name()))?; + fs::create_dir_all(destination.as_ref().join(entry.file_name()))?; + copy_recursively(entry.path(), destination.as_ref())?; } else { fs::copy(entry.path(), destination.as_ref().join(entry.file_name())).map_err(|e| { eprintln!("{entry:?}"); diff --git a/flake.nix b/flake.nix index 56161e5..938027d 100644 --- a/flake.nix +++ b/flake.nix @@ -141,6 +141,11 @@ }; }; }).wrapper; + + rustPlatform = pkgs.makeRustPlatform { + cargo = self'.packages.rust-overte; + rustc = self'.packages.rust-overte; + }; in { _module.args.pkgs = import inputs.nixpkgs { @@ -155,23 +160,42 @@ config = { }; }; packages = { - /* - overte-metaverse = pkgs.callPackage ./nix/overte.nix { - inherit (self'.packages) - glad - scribe - gif_creator - artery-font-format - cgltf - etc2comp - draco - glm - ; - libv8 = pkgs.nodejs_22.libv8; - }; - default = self'.packages.overte-metaverse; - */ + overte-directory = + pkgs.callPackage + ( + { + version, + rustPlatform, + pnpm, + pnpmConfigHook, + fetchPnpmDeps, + }: + rustPlatform.buildRustPackage (finalAttrs: { + pname = "overte-directory"; + inherit version; + nativeBuildInputs = [ + pnpm + pnpmConfigHook + ]; + + src = ./.; + cargoLock = { + lockFile = ./Cargo.lock; + }; + pnpmDeps = fetchPnpmDeps { + inherit (finalAttrs) pname version src; + fetcherVersion = 4; + hash = "sha256-Bgz0kprmiv05201qcu/q/TrCcKGaGUAqWh/MyCicAJE="; + }; + }) + ) + { + version = inputs.self.shortRev or "dirty"; + inherit rustPlatform; + }; + default = self'.packages.overte-directory; inherit pcWrapped; + inherit (pkgs) rust-overte; }; treefmt = { programs.sql-formatter.enable = true; @@ -181,10 +205,9 @@ devShells.default = pkgs.mkShell { packages = [ pcWrapped - pkgs.rust-overte pkgs.sqlx-cli - pkgs.pnpm ]; + inputsFrom = [ self'.packages.overte-directory ]; shellHook = '' export PGHOST="${devState}/postgres/socket"