{ description = "Flake providing Veloren, a multiplayer voxel RPG written in Rust."; inputs.nci.url = "github:yusdacra/nix-cargo-integration"; outputs = inputs: let lib = inputs.nci.inputs.nixpkgs.lib; ncl = inputs.nci.lib.nci-lib; git = let sourceInfo = inputs.self.sourceInfo; dateTimeFormat = import ./nix/dateTimeFormat.nix; dateTime = dateTimeFormat sourceInfo.lastModified; shortRev = sourceInfo.shortRev or "dirty"; in { prettyRev = shortRev + "/" + dateTime; tag = ""; }; filteredSource = let pathsToIgnore = [ "flake.nix" "flake.lock" "nix" "assets" "README.md" "CONTRIBUTING.md" "CHANGELOG.md" "CODE_OF_CONDUCT.md" "clippy.toml" ".cargo" ]; ignorePaths = path: type: let split = lib.splitString "/" path; actual = lib.drop 4 split; _path = lib.concatStringsSep "/" actual; in lib.all (n: ! (lib.hasPrefix n _path)) pathsToIgnore; in builtins.path { name = "veloren-source"; path = toString ./.; # filter out unnecessary paths filter = ignorePaths; }; wrapWithAssets = common: _: old: let pkgs = common.pkgs; runtimeLibs = with pkgs; [ xorg.libX11 xorg.libXi xorg.libxcb xorg.libXcursor xorg.libXrandr libxkbcommon shaderc.lib udev alsa-lib vulkan-loader ]; assets = pkgs.runCommand "veloren-assets" {} '' mkdir $out ln -sf ${./assets} $out/assets # check if LFS was setup properly checkFile="$out/assets/voxygen/background/bg_main.jpg" result="$(${pkgs.file}/bin/file --mime-type $checkFile)" if [ "$result" = "$checkFile: image/jpeg" ]; then echo "Git LFS seems to be setup properly." else echo " Git Large File Storage (git-lfs) has not been set up correctly. Most common reasons: - git-lfs was not installed before cloning this repository. - This repository was not cloned from the primary GitLab mirror. - The GitHub mirror does not support LFS. See the book at https://book.veloren.net/ for details. Run 'nix-shell -p git git-lfs --run \"git lfs install --local && git lfs fetch && git lfs checkout\"' or 'nix shell nixpkgs#git-lfs nixpkgs#git -c sh -c \"git lfs install --local && git lfs fetch && git lfs checkout\"'. " false fi ''; wrapped = common.internal.nci-pkgs.utils.wrapDerivation old {nativeBuildInputs = [pkgs.makeWrapper];} '' rm -rf $out/bin mkdir $out/bin ln -sf ${old}/bin/* $out/bin/ wrapProgram $out/bin/* \ ${lib.optionalString (old.pname == "veloren-voxygen") "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath runtimeLibs}"} \ --set VELOREN_ASSETS ${assets} \ --set VELOREN_GIT_VERSION "${git.prettyRev}" \ --set VELOREN_GIT_TAG "${git.tag}" ''; in wrapped; in inputs.nci.lib.makeOutputs { root = ./.; defaultOutputs = { package = "veloren-voxygen"; app = "veloren-voxygen"; }; perCrateOverrides = { veloren-voxygen = { packageMetadata = _: { features = rec { release = ["default-publish"]; debug = release; test = release; }; }; wrapper = wrapWithAssets; }; veloren-server-cli.wrapper = wrapWithAssets; }; disableVendoredCrateOverrides = true; overrides = { cCompiler = common: common.pkgs.clang; crates = common: prev: let pkgs = common.pkgs; configMoldLinker = '' touch $CARGO_HOME/config.toml cat >>$CARGO_HOME/config.toml <