name: Build Flake

on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 1 * *" # At midnight on the first day of the month (Monday)

jobs:
  build:
    runs-on: ubuntu-latest
    container: git.alexdelcamp.fr/alexandre_1a/flake-actions:latest
    permissions:
      contents: read
      id-token: write
    steps:
      - name: Get current time
        uses: josStorer/get-current-time@v2
        id: start-time
        with:
          utcOffset: "+02:00" # Summer time in France

      #- name: Install nix
      #  uses: DeterminateSystems/nix-installer-action@main
      #  with:
      #    extra-conf: |
      #      trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc= nix-citizen.cachix.org-1:lPMkWc2X8XD4/7YPEEwXKKBg+SVbYTVrAaLA2wQTKCo=
      #      trusted-substituters = https://cache.nixos.org https://nix-community.cachix.org https://hyprland.cachix.org https://nix-citizen.cachix.org

      - name: Checkout
        uses: actions/checkout@v4

      - name: Build bumped flake (only one host)
        continue-on-error: true
        run: |
          nix build .#nixosConfigurations.FW16.config.system.build.toplevel

      - name: Cache Nix store
        uses: actions/cache@v3
        with:
          path: /nix/store
          key: nix-store-${{ hashFiles('**/*.nix') }}
          restore-keys: |
            nix-store-

      - name: Get Build time
        uses: josStorer/get-current-time@v2
        id: end-time
        with:
          utcOffset: "+02:00" # Summer time in France

      - name: Calculate build time
        id: duration
        run: |
          duration=$((${{ steps.start-time.outputs.time }} - ${{ steps.end-time.outputs.time }}))
          echo "duration=${duration}" >> "$GITHUB_OUTPUT"

      - name: Notify Failure
        if: failure()
        run: |
          curl \
          -H "Title: Failed to build flake !"\
          -d "Build started on ${{ steps.start-time.outputs.readableTime }} and failed.\nLasted ${{ steps.duration.outputs.duration }}" \
          https://ntfy.alexdelcamp.fr/FlakeBuild

      - name: Notify Success
        run: |
          curl \
          -H "Title: Successfully builded flake!" \
          -d "Build started on ${{ steps.start-time.outputs.readableTime }} and succeeded.\nLasted ${{ steps.duration.outputs.duration }}" \
          https://ntfy.alexdelcamp.fr/FlakeBuild
