85 lines
3.6 KiB
Nix
85 lines
3.6 KiB
Nix
{
|
|
nixConfig = {
|
|
extra-substituters = [ "https://stardustxr.cachix.org" ];
|
|
extra-trusted-public-keys = [ "stardustxr.cachix.org-1:mWSn8Ap2RLsIWT/8gsj+VfbJB6xoOkPaZpbjO+r9HBo=" ];
|
|
};
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
|
|
|
|
# Since we do not have a monorepo, we have to fetch Flatland in order to use
|
|
# it to create VM Tests
|
|
flatland.url = "github:StardustXR/flatland";
|
|
};
|
|
outputs = inputs@{ self, flake-parts, nixpkgs, hercules-ci-effects, flatland, ... }:
|
|
let
|
|
name = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).package.name;
|
|
src = builtins.path {
|
|
name = "${name}-source";
|
|
path = toString ./.;
|
|
filter = path: type:
|
|
nixpkgs.lib.all
|
|
(n: builtins.baseNameOf path != n)
|
|
[
|
|
"flake.nix"
|
|
"flake.lock"
|
|
"nix"
|
|
"README.md"
|
|
];
|
|
};
|
|
in
|
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
|
imports = [
|
|
flake-parts.flakeModules.easyOverlay
|
|
];
|
|
systems = [ "aarch64-linux" "x86_64-linux" "riscv64-linux" ];
|
|
perSystem = { config, self', inputs', pkgs, system, ... }: {
|
|
_module.args.pkgs = import inputs.nixpkgs { inherit system; overlays = [ inputs.self.overlays.default ]; };
|
|
overlayAttrs = config.packages;
|
|
packages = {
|
|
default = self'.packages.${name};
|
|
gnome-graphical-test = self'.checks.gnome-graphical-test;
|
|
"${name}" = pkgs.callPackage ./nix/stardust-xr-server.nix { inherit name src; };
|
|
};
|
|
apps.default = {
|
|
type = "app";
|
|
program = self'.packages.${name} + "/bin/stardust-xr-server";
|
|
};
|
|
checks.gnome-graphical-test = pkgs.nixosTest (import ./nix/gnome-graphical-test.nix { inherit pkgs self; });
|
|
devShells.default = pkgs.mkShell {
|
|
inputsFrom = [ self'.packages.default ];
|
|
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
|
|
};
|
|
};
|
|
flake = {
|
|
herculesCI.ciSystems = [ "x86_64-linux" ];
|
|
effects = let
|
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
hci-effects = hercules-ci-effects.lib.withPkgs pkgs;
|
|
in { ref, 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 "Ref;${ref}" \
|
|
--field "Commit ID;${rev}" \
|
|
--field "Flatland Revision;${flatland.rev}" \
|
|
--field "Reproducer;\`nix build github:stardustxr/server/${rev}#gnome-graphical-test\`" \
|
|
--image "$ADDRESS"
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|