nix-eval.yml 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. name: nix-eval
  2. on:
  3. push:
  4. branches: [dev]
  5. pull_request:
  6. branches: [dev]
  7. workflow_dispatch:
  8. concurrency:
  9. group: ${{ github.workflow }}-${{ github.ref }}
  10. cancel-in-progress: true
  11. permissions:
  12. contents: read
  13. jobs:
  14. nix-eval:
  15. runs-on: blacksmith-4vcpu-ubuntu-2404
  16. timeout-minutes: 15
  17. steps:
  18. - name: Checkout repository
  19. uses: actions/checkout@v6
  20. - name: Setup Nix
  21. uses: nixbuild/nix-quick-install-action@v34
  22. - name: Evaluate flake outputs (all systems)
  23. run: |
  24. set -euo pipefail
  25. nix --version
  26. echo "=== Flake metadata ==="
  27. nix flake metadata
  28. echo ""
  29. echo "=== Flake structure ==="
  30. nix flake show --all-systems
  31. SYSTEMS="x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin"
  32. PACKAGES="opencode"
  33. # TODO: move 'desktop' to PACKAGES when #11755 is fixed
  34. OPTIONAL_PACKAGES="desktop"
  35. echo ""
  36. echo "=== Evaluating packages for all systems ==="
  37. for system in $SYSTEMS; do
  38. echo ""
  39. echo "--- $system ---"
  40. for pkg in $PACKAGES; do
  41. printf " %s: " "$pkg"
  42. if output=$(nix eval ".#packages.$system.$pkg.drvPath" --raw 2>&1); then
  43. echo "✓"
  44. else
  45. echo "✗"
  46. echo "::error::Evaluation failed for packages.$system.$pkg"
  47. echo "$output"
  48. exit 1
  49. fi
  50. done
  51. done
  52. echo ""
  53. echo "=== Evaluating optional packages ==="
  54. for system in $SYSTEMS; do
  55. echo ""
  56. echo "--- $system ---"
  57. for pkg in $OPTIONAL_PACKAGES; do
  58. printf " %s: " "$pkg"
  59. if output=$(nix eval ".#packages.$system.$pkg.drvPath" --raw 2>&1); then
  60. echo "✓"
  61. else
  62. echo "✗"
  63. echo "::warning::Evaluation failed for packages.$system.$pkg"
  64. echo "$output"
  65. fi
  66. done
  67. done
  68. echo ""
  69. echo "=== Evaluating devShells for all systems ==="
  70. for system in $SYSTEMS; do
  71. printf "%s: " "$system"
  72. if output=$(nix eval ".#devShells.$system.default.drvPath" --raw 2>&1); then
  73. echo "✓"
  74. else
  75. echo "✗"
  76. echo "::error::Evaluation failed for devShells.$system.default"
  77. echo "$output"
  78. exit 1
  79. fi
  80. done
  81. echo ""
  82. echo "=== All evaluations passed ==="