diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d7fa42..c8e831c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,14 +21,13 @@ jobs: || matrix.system == 'aarch64-linux' && 'ubuntu-24.04-arm' || matrix.system == 'x86_64-darwin' && 'macos-latest' }} steps: - - name: Checkout the repository - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: setup nix uses: ./.github/actions/setup-nix with: system: ${{ matrix.system }} - + - name: Login to tailscale uses: tailscale/github-action@v3.2.3 with: @@ -39,15 +38,44 @@ jobs: || matrix.system == 'x86_64-darwin' && 'github-actions-x86-64-darwin' }} tags: tag:ci + # - name: Install and start Tailscale + # run: | + # # Start tailscaled daemon in background using nix shell + # nix profile add nixpkgs#tailscale + # sudo tailscaled --state=mem: & + + # # Wait for daemon to be ready + # sleep 10 + + # # Connect using OAuth + # HOSTNAME="${{ matrix.system == 'x86_64-linux' && 'github-actions-x86-64-linux' + # || matrix.system == 'aarch64-linux' && 'github-actions-aarch64-linux' + # || matrix.system == 'x86_64-darwin' && 'github-actions-x86-64-darwin' }}" + + # tailscale up \ + # --authkey="${{ secrets.TS_OAUTH_SECRET }}?preauthorized=true&ephemeral=true" \ + # --hostname="$HOSTNAME" \ + # --advertise-tags="tag:ci" \ + # --accept-routes + + - name: Tailscale status + run: tailscale status || true + - name: Check if Attic endpoint is reachable id: check_attic run: | - if curl --connect-timeout 5 --silent --head http://wallfacer.curl-boga.ts.net:7080 | grep "200 OK"; then + if curl --connect-timeout 20 --silent --head http://wallfacer.curl-boga.ts.net:7080 | grep "200 OK"; then + echo "Attic endpoint is reachable" echo "reachable=true" >> $GITHUB_OUTPUT else + echo "Attic endpoint is not reachable" echo "reachable=false" >> $GITHUB_OUTPUT fi + - name: Curl the cache + run: | + curl --connect-timeout 20 --silent http://wallfacer.curl-boga.ts.net:7080/main/nix-cache-info || echo "Cache endpoint not reachable" + - name: Setup Attic cache if: steps.check_attic.outputs.reachable == 'true' uses: ryanccn/attic-action@v0.3.1 @@ -60,24 +88,29 @@ jobs: run: nix flake check --accept-flake-config - - name: Pre-build the system configuration - run: nix build --accept-flake-config . + - name: Build the Neovim Configuration + run: nix build --accept-flake-config . -j3 + timeout-minutes: 300 + continue-on-error: true - name: Print out the size of /nix/store run: du -sh /nix/store - name: Get the init.lua path + if: matrix.system == 'x86_64-linux' run: | init_path=$(grep "init=" result/bin/nixvim-print-init | awk -F'=' '{print $2}') cp $init_path init.lua - name: Upload the artifact uses: actions/upload-artifact@v4 + if: matrix.system == 'x86_64-linux' with: name: neovim-configuration path: init.lua - name: Publish the init.lua to an orphan github branch + if: matrix.system == 'x86_64-linux' run: | git config --global user.name github-actions git config --global user.email github-actions@github.com @@ -86,6 +119,7 @@ jobs: git add init.lua git commit -m "Publish init.lua" git push --force origin init-lua + git checkout main # switch back to main branch for graceful job ending check-formatting: runs-on: ubuntu-24.04 diff --git a/flake.nix b/flake.nix index 47091ae..03dac0a 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,17 @@ { description = "My custom neovim configuration that has been mixed and matched from various sources"; + nixConfig = { + extra-substituters = [ + "https://nix-community.cachix.org" + "http://wallfacer.curl-boga.ts.net:7080/main" + ]; + extra-trusted-public-keys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "main:2AjPdIsbKyoTGuw+4x2ZXMUT/353CXosW9pdbTQtjqw=" + ]; + }; + inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # https://gerschtli.github.io/nix-formatter-pack/nix-formatter-pack-options.html