{ nixConfig = { extra-substituters = [ "https://stardustxr.cachix.org" ]; extra-trusted-public-keys = [ "stardustxr.cachix.org-1:mWSn8Ap2RLsIWT/8gsj+VfbJB6xoOkPaZpbjO+r9HBo=" ]; }; # 22.11 does not include PR #218472, hence we use the unstable version inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; # Since we do not have a monorepo, we have to fetch Flatland in order to use # it to create VM Tests inputs.flatland.url = "github:StardustXR/flatland"; inputs.fenix.url = github:nix-community/fenix; inputs.fenix.inputs.nixpkgs.follows = "nixpkgs"; inputs.hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects"; outputs = { self, nixpkgs, fenix, hercules-ci-effects, flatland, ... }: let name = "server"; pkgs = system: import nixpkgs { inherit system; }; shell = pkgs: pkgs.mkShell { inputsFrom = [ self.packages.${pkgs.system}.default ]; # ---- START package specific dev settings ---- LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; # ---- END package specific dev settings ---- }; package = pkgs: let toolchain = fenix.packages.${pkgs.system}.minimal.toolchain; in (pkgs.makeRustPlatform { cargo = toolchain; rustc = toolchain; }).buildRustPackage rec { pname = "stardust-xr-${name}"; src = builtins.path { name = "stardust-xr-source"; path = toString ./.; filter = path: type: nixpkgs.lib.all (n: builtins.baseNameOf path != n) [ "flake.nix" "flake.lock" "nix" "README.md" ]; }; # ---- START package specific settings ---- version = "0.10.2"; cargoLock = { lockFile = ./Cargo.lock; allowBuiltinFetchGit = true; }; postPatch = '' sk=$(echo $cargoDepsCopy/stereokit-sys-*/StereoKit) mkdir -p $sk/build/cpm cp ${pkgs.fetchurl { url = "https://github.com/cpm-cmake/CPM.cmake/releases/download/v0.32.2/CPM.cmake"; hash = "sha256-yDHlpqmpAE8CWiwJRoWyaqbuBAg0090G8WJIC2KLHp8="; }} $sk/build/cpm/CPM_0.32.2.cmake ''; postFixup = '' wrapProgram $out/bin/${pname} \ --prefix PATH : ${pkgs.lib.makeBinPath (with pkgs; [ xwayland bash ])} ''; CPM_SOURCE_CACHE = "./build"; nativeBuildInputs = with pkgs; [ cmake pkg-config llvmPackages.libcxxClang makeWrapper ]; buildInputs = with pkgs; [ openxr-loader libGL mesa xorg.libX11 fontconfig libxkbcommon ]; LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; # ---- END package specific settings ---- }; in { overlays.default = final: prev: { stardust-xr = (prev.stardust-xr or {}) // { ${name} = package final; }; }; packages."x86_64-linux".default = package (pkgs "x86_64-linux"); packages."aarch64-linux".default = package (pkgs "aarch64-linux"); packages."x86_64-linux".gnome-graphical-test = self.checks.x86_64-linux.gnome-graphical-test; packages."aarch64-linux".gnome-graphical-test = self.checks.aarch64-linux.gnome-graphical-test; checks."x86_64-linux".gnome-graphical-test = (pkgs "x86_64-linux").nixosTest (import ./nix/gnome-graphical-test.nix { pkgs = (pkgs "x86_64-linux"); inherit self; }); checks."aarch64-linux".gnome-graphical-test = (pkgs "aarch64-linux").nixosTest (import ./nix/gnome-graphical-test.nix { pkgs = (pkgs "aarch64-linux"); inherit self; }); devShells."x86_64-linux".default = shell (pkgs "x86_64-linux"); devShells."aarch64-linux".default = shell (pkgs "aarch64-linux"); herculesCI.ciSystems = [ "x86_64-linux" ]; effects = let pkgs = nixpkgs.legacyPackages.x86_64-linux; hci-effects = hercules-ci-effects.lib.withPkgs pkgs; in { branch, rev, ... }: { gnome-graphical-test = hci-effects.mkEffect { secretsMap."stardustxrDiscord" = "stardustxrDiscord"; secretsMap."stardustxrIpfs" = "stardustxrIpfs"; effectScript = '' readSecretString stardustxrDiscord .webhook > .webhook readSecretString stardustxrIpfs .basicauth > .basicauth set -x export RESPONSE=$(curl -H @.basicauth -F file=@${self.packages."x86_64-linux".gnome-graphical-test}/screen.png https://ipfs-api.stardustxr.org/api/v0/add) export CID=$(echo "$RESPONSE" | ${pkgs.jq}/bin/jq -r .Hash) set +x export ADDRESS="https://ipfs.stardustxr.org/ipfs/$CID" ${pkgs.discord-sh}/bin/discord.sh \ --description "\`stardustxr/server\` has been modified, here's how it renders \`weston-cliptest\` on \`flatland\` via \`monado-service\` inside of the \`gnome-graphical-test\`" \ --field "Branch;${branch}" \ --field "Commit ID;${rev}" \ --field "Flatland Revision;${flatland.rev}" \ --field "Reproducer;\`nix build github:stardustxr/server/${rev}#gnome-graphical-test\`" \ --image "$ADDRESS" ''; }; }; }; }