name: "(Optional) Nix dev env, Linux, main" # When to trigger builds on: # On Git changes in PR pull_request: # On Git changes of the master push: branches: - master schedule: # Every day at 03:45 - cron: "45 03 * * *" env: ### ### NOTE: Table example of the provided build configuration keys ### Infrastructure uses `build.sh` API, which uses `default.nix` API, which exposes the almost literal Nixpkgs Haskell Lib API wich was abstracted for use outside of Nix language. ### ### Documentation of this settings is mosly in `default.nix`, since most settings it Nixpkgs related ### and the other part of keys explained in `build.sh`, since those address external procedures aound the builds. ### Additional documentation is in Nixpkgs Haskell.lib: https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/lib.nix ### # rev: "nixos-unstable" # 2020-09-29: NOTE: HNix default.nix currently pins the rev cachixAccount: "hnix" CACHIX_SIGNING_KEY: ${{ secrets.CACHIX_SIGNING_KEY }} allowInconsistentDependencies: "false" doJailbreak: "false" doCheck: "true" sdistTarball: "false" buildFromSdist: "false" buildStrictly: "false" failOnAllWarnings: "false" enableDeadCodeElimination: "false" disableOptimization: "true" linkWithGold: "true" enableLibraryProfiling: "false" enableExecutableProfiling: "false" doTracing: "false" enableDWARFDebugging: "false" doStrip: "false" enableSharedLibraries: "true" enableStaticLibraries: "false" enableSharedExecutables: "false" justStaticExecutables: "false" enableSeparateBinOutput: "false" checkUnusedPackages: "false" doHaddock: "false" doHyperlinkSource: "false" doCoverage: "false" doBenchmark: "false" generateOptparseApplicativeCompletions: "false" executableNamesToShellComplete: '[ "hnix" ]' jobs: build10: name: "Default Nixpkgs GHC (8.8), strict build" runs-on: ubuntu-latest # 2020-08-01: NOTE: Due to Nixpkgs brittleness to not block project development Nixpkgs made optional, see commit message for more info continue-on-error: true steps: - name: "Git checkout" uses: actions/checkout@v2 with: submodules: recursive - name: "Install Nix" uses: cachix/install-nix-action@v12 with: nix_path: nixpkgs=channel:nixos-unstable - name: "Install Cachix" uses: cachix/cachix-action@v7 with: name: ${{ env.cachixAccount }} signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' - name: "Determined Nix-build" env: compiler: "default" buildStrictly: "true" run: ./build.sh build20: name: "GHC 8.10.1, quality build, SDist, Optimizations, Benchmark, Haddock, Completions" runs-on: ubuntu-latest continue-on-error: true steps: - name: "Git checkout" uses: actions/checkout@v2 with: submodules: recursive - name: "Install Nix" uses: cachix/install-nix-action@v12 with: nix_path: nixpkgs=channel:nixos-unstable - name: "Install Cachix" uses: cachix/cachix-action@v7 with: name: ${{ env.cachixAccount }} signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' - name: "Determined Nix-build" env: compiler: "ghc8101" buildFromSdist: "true" linkWithGold: "true" doHaddock: "true" doHyperlinkSource: "true" disableOptimization: "false" enableDeadCodeElimination: "true" doBenchmark: "true" generateOptparseApplicativeCompletions: "true" run: ./build.sh build40: name: "Nix-shell & supplied locall project Hoogle DB" runs-on: ubuntu-latest continue-on-error: true steps: - name: "Git checkout" uses: actions/checkout@v2 with: submodules: recursive - name: "Install Nix" uses: cachix/install-nix-action@v12 with: nix_path: nixpkgs=channel:nixos-unstable - name: "Install Cachix" uses: cachix/cachix-action@v7 with: name: ${{ env.cachixAccount }} signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' - name: "Nix-shell" run: nix-shell --pure --command 'echo "Evaluated, loaded and entered $IN_NIX_SHELL Nix shell env."' - name: "Local Hoogle DB for the project development and tooling" run: nix-shell --pure --command 'hoogle True'