name: "Building derivations"
on: [pull_request, push]
env:
  NIXPKGS_ALLOW_INSECURE: "1"
  NIXPKGS_ALLOW_BROKEN: "1"
jobs:
  check-outputs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: cachix/install-nix-action@v16
        with:
          nix_path: nixpkgs=channel:nixos-unstable
          extra_nix_config: |
            keep-going = true
      - name: Check flake outputs
        run: nix flake check --impure

  build-custom-packages:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: cachix/install-nix-action@v16
        with:
          nix_path: nixpkgs=channel:nixos-unstable
          extra_nix_config: |
            keep-going = true
      - name: Prepare push to binary cache
        uses: cachix/cachix-action@v10
        if: ${{ github.ref == 'refs/heads/master' }}
        with:
          name: foo-dogsquared
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
      - name: Build custom packages
        run: nix build -f ./pkgs --impure

  build-profiles:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: cachix/install-nix-action@v16
        with:
          nix_path: nixpkgs=channel:nixos-unstable
          extra_nix_config: |
            keep-going = true
      - name: Prepare push to binary cache
        uses: cachix/cachix-action@v10
        if: ${{ github.ref == 'refs/heads/master' }}
        with:
          name: foo-dogsquared
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
      - name: Build Nix profiles
        run: |
          for nixosHost in ni graphical-installer bootstrap; do
            nix build ".#nixosConfigurations.${nixosHost}.config.system.build.toplevel" --impure
          done

          for homeManagerConfig in foo-dogsquared; do
            nix build ".#homeManagerConfigurations.${homeManagerConfig}.activationPackage" --impure
          done