name: Build and deploy documentation on: push: # Runs on pushes targeting the release branches branches: - main - nixos-24.05 # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write # Allow one concurrent deployment concurrency: group: "pages" cancel-in-progress: true jobs: deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest timeout-minutes: 40 env: repo: ${{ github.repository }} repoName: ${{ github.event.repository.name }} out: docs-build steps: - name: Install nix uses: cachix/install-nix-action@v26 with: nix_path: nixpkgs=channel:nixos-unstable - name: Configure cachix uses: cachix/cachix-action@v15 with: name: nix-community authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Build docs run: | set -ex # 1: branch # 2: install dir (relative to /nixvim/) build() { flake="github:${repo}${1:+/$1}" dir="${2:+/$2}" baseHref="/${repoName}${dir}/" installDir="${out}${dir}" # Build docs for the given flake ref, overriding baseHref in the derivation args nix build --impure --expr '(builtins.getFlake "'"$flake"'").outputs.packages.${builtins.currentSystem}.docs.override { baseHref = "'"$baseHref"'"; }' # Copy the result to the install dir mkdir -p "$installDir" cp -r result/share/doc/* "$installDir" } # Install main-branch docs at the top-level build 'main' '' # Install 24.05 docs under 'stable' # TODO: consider having `` instead of `stable` build 'nixos-24.05' 'stable' - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: "docs-build" - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4