diff --git a/flake.nix b/flake.nix index 2b8c95f70..c29111ed2 100644 --- a/flake.nix +++ b/flake.nix @@ -329,6 +329,25 @@ pkgs = nixpkgsFor.x86_64-linux.native; }; + releaseTests = lib.foldl lib.recursiveUpdate { } [ + (lib.genAttrs (linux64BitSystems ++ darwinSystems) (system: { + nativeBuild = self.packages.${system}.nix; + })) + (lib.genAttrs (linux64BitSystems) (system: { + staticBuild = self.packages.${system}.nix-static; + })) + { + x86_64-linux = { + # TODO add more cross/static release targets? + crossBuild.aarch64-linux = self.packages.x86_64-linux.nix-aarch64-linux; + + # TODO wire up a nixos installer test with that lix and + # run it, once nixpkgs can actually do that (again). :/ + # # nix build .#nixosTests.installer.{btrfsSimple,luksroot,lvm,simple,switchToFlake} + }; + } + ]; + # NOTE *do not* add fresh derivations to checks, always add them to # hydraJobs first (so CI will pick them up) and only link them here checks = forAvailableSystems ( diff --git a/releng/release-tests.sh b/releng/release-tests.sh new file mode 100755 index 000000000..c0a9b2e33 --- /dev/null +++ b/releng/release-tests.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -euo pipefail +shopt -s inherit_errexit failglob + +nixpkgss=( + "$(nix eval --impure --raw --expr '(import ./flake.nix).inputs.nixpkgs.url')" + "github:NixOS/nixpkgs/nixos-unstable-small" +) +jobs=( + $(nix eval \ + --json --apply ' + let f = n: t: + if builtins.isAttrs t + then (if t.type or "" == "derivation" + then [ n ] + else builtins.concatMap (m: f "${n}.${m}" t.${m}) (builtins.attrNames t)) + else []; + in f ".#.releaseTests" + ' \ + '.#.releaseTests' \ + | jq -r '.[]' + ) +) + +for override in "${nixpkgss}" +do + ( + set -x + nix build \ + --log-format multiline \ + --no-link \ + --override-input nixpkgs "$override" \ + "${jobs[@]}" + ) +done