summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorseth <[email protected]>2023-12-27 06:07:26 -0500
committerseth <[email protected]>2023-12-27 06:19:24 -0500
commit8f9d7de04f4da4abc8a097c2021c8e4723c25dc7 (patch)
tree6708c14f6a045edcb66ee7a03049006d2b3daceb
parent773d59f2606c924de218d8d5bdfadcc875084047 (diff)
Revert "actions: use nix2workflow again"
This reverts commit 0cc0ada5d44ade6cab2e9220f7993aaf77985e1b.
-rwxr-xr-x.github/eval-flake.sh85
-rw-r--r--.github/workflows/ci.yaml27
-rw-r--r--dev/ci.nix2
-rw-r--r--flake.lock21
-rw-r--r--flake.nix6
5 files changed, 95 insertions, 46 deletions
diff --git a/.github/eval-flake.sh b/.github/eval-flake.sh
new file mode 100755
index 0000000..5bc79c4
--- /dev/null
+++ b/.github/eval-flake.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+set -euo pipefail
+### this is inspired by the ci script in [nixpkgs-unfree](https://github.com/numtide/nixpkgs-unfree)
+### link: https://github.com/numtide/nixpkgs-unfree/blob/127b9b18583de04c6207c2a0e674abf64fc4a3b1/ci.sh
+#
+## MIT License
+##
+## Copyright (c) 2022 Jonas Chevalier
+##
+## Permission is hereby granted, free of charge, to any person obtaining a copy
+## of this software and associated documentation files (the "Software"), to deal
+## in the Software without restriction, including without limitation the rights
+## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+## copies of the Software, and to permit persons to whom the Software is
+## furnished to do so, subject to the following conditions:
+##
+## The above copyright notice and this permission notice shall be included in all
+## copies or substantial portions of the Software.
+##
+## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+## SOFTWARE.
+
+function get_os() {
+ case "$1" in
+ "x86_64-linux") echo "ubuntu-latest" ;;
+ "x86_64-darwin") echo "macos-latest" ;;
+ "aarch64-linux") echo "ubuntu-latst" ;;
+ esac
+}
+
+args=(
+ --check-cache-status
+ --force-recurse
+ --option allow-import-from-derivation true
+ --show-trace
+ --flake
+ '.#hydraJobs'
+)
+
+if [ "${GITHUB_STEP_SUMMARY-}" != "" ]; then
+ log() {
+ echo "$*" >> "$GITHUB_STEP_SUMMARY"
+ }
+else
+ log() {
+ echo "$*"
+ }
+fi
+
+jobs=$(nix-eval-jobs "${args[@]}" | jq -r '. | @base64')
+jq -n '{"include": []}' > matrix.json
+
+had_error=0
+echo "$jobs" | while read -r job; do
+ job=$(echo "$job" | base64 -d)
+ attr=$(echo "$job" | jq -r .attr)
+ echo "## $attr"
+
+ error=$(echo "$job" | jq -r '.error')
+ if [ "$error" == null ]; then
+ log "### ✅ $attr"
+
+ system=$(echo "$job" | jq -r .system)
+ isCached=$(echo "$job" | jq -r .isCached)
+
+ jq ".include += [{\"attr\": \"$attr\", \"os\": \"$(get_os "$system")\", \"isCached\": $isCached}]" < matrix.json > matrix.json.tmp
+ mv matrix.json.tmp matrix.json
+ else
+ log "### ❌ $attr"
+ log
+ log "<details><summary>Evaluation error:</summary><pre>"
+ log "$error"
+ log "</pre></details>"
+ had_error=1
+ fi
+done
+
+echo "matrix=$(jq -r 'tostring' matrix.json)" >> "$GITHUB_OUTPUT"
+rm matrix.json
+exit "$had_error"
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index b1a1b25..58d1966 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -5,7 +5,7 @@ on:
workflow_call:
secrets:
CACHIX_AUTH_TOKEN:
- description: "auth token for cachi"
+ description: "auth token for cachix"
workflow_dispatch:
jobs:
@@ -31,7 +31,9 @@ jobs:
- name: Evaluate jobs
id: eval
run: |
- echo "matrix=$(nix eval --show-trace --json .#workflowMatrix)" >> "$GITHUB_OUTPUT"
+ nix shell --inputs-from . \
+ nixpkgs#{bash,coreutils,jq,nix-eval-jobs} \
+ --command bash ./.github/eval-flake.sh
build:
needs: eval
@@ -43,9 +45,6 @@ jobs:
name: Build (${{ matrix.attr }})
runs-on: ${{ matrix.os }}
- env:
- JOBS: "hydraJobs"
-
steps:
- uses: actions/checkout@v4
@@ -59,22 +58,16 @@ jobs:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Run build
+ if: ${{ !matrix.isCached }}
run: |
- for url in "https://cache.nixos.org" "https://getchoo.cachix.org"; do
- if nix eval --raw .#"$JOBS".${{ matrix.attr }} \
- | cut -c12-43 \
- | xargs -I {} curl -f "$url"/{}.narinfo &> /dev/null; then
- echo ${{ matrix.attr }} is already cached at $url!
- exit 0
- fi
- done
-
- nix build --print-build-logs --fallback \
- .#"$JOBS".${{ matrix.attr }}
+ nix build \
+ --accept-flake-config \
+ --print-build-logs \
+ --fallback \
+ .#hydraJobs.${{ matrix.attr }}
check:
strategy:
- fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
diff --git a/dev/ci.nix b/dev/ci.nix
index 1eb78e3..94eac3e 100644
--- a/dev/ci.nix
+++ b/dev/ci.nix
@@ -3,8 +3,6 @@
self,
...
}: {
- nix2workflow.output = self.hydraJobs;
-
flake.hydraJobs = let
ciSystems = ["x86_64-linux" "x86_64-darwin"];
recursiveMerge = builtins.foldl' lib.recursiveUpdate {};
diff --git a/flake.lock b/flake.lock
index 3284b97..3763371 100644
--- a/flake.lock
+++ b/flake.lock
@@ -382,26 +382,6 @@
"type": "github"
}
},
- "nix2workflow": {
- "inputs": {
- "nixpkgs-lib": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1703496925,
- "narHash": "sha256-Ayz0FD8ptejT9Uq7Rm1h9iv2PaPQg8zCMGuMSA/ib3k=",
- "owner": "getchoo",
- "repo": "nix2workflow",
- "rev": "ee728efb75096431bb94f746d990f2dc786b0be2",
- "type": "github"
- },
- "original": {
- "owner": "getchoo",
- "repo": "nix2workflow",
- "type": "github"
- }
- },
"nixos-hardware": {
"locked": {
"lastModified": 1702453208,
@@ -595,7 +575,6 @@
"hm": "hm",
"lanzaboote": "lanzaboote",
"nix-index-database": "nix-index-database",
- "nix2workflow": "nix2workflow",
"nixos-hardware": "nixos-hardware",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs",
diff --git a/flake.nix b/flake.nix
index 09d59dc..6086bec 100644
--- a/flake.nix
+++ b/flake.nix
@@ -81,11 +81,6 @@
};
};
- nix2workflow = {
- url = "github:getchoo/nix2workflow";
- inputs.nixpkgs-lib.follows = "nixpkgs";
- };
-
nix-index-database = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
@@ -140,7 +135,6 @@
parts.lib.mkFlake {inherit inputs;} {
imports = [
inputs.pre-commit.flakeModule
- inputs.nix2workflow.flakeModule
./dev
./modules