├── .github ├── dependabot.yml └── workflows │ ├── notes.md │ └── release.yml └── README.md /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | commit-message: 8 | prefix: "ci" 9 | -------------------------------------------------------------------------------- /.github/workflows/notes.md: -------------------------------------------------------------------------------- 1 | ``` 2 | ${NVIM_VERSION} 3 | ``` 4 | 5 | ## Install 6 | 7 | ### Linux (x86_64) 8 | #### AppImage 9 | 1. Download **nvim-linux-x86_64.appimage** 10 | 2. Run `chmod u+x nvim-linux-x86_64.appimage && ./nvim-linux-x86_64.appimage` 11 | - If your system does not have FUSE you can [extract the appimage](https://github.com/AppImage/AppImageKit/wiki/FUSE#type-2-appimage): 12 | ``` 13 | ./nvim-linux-x86_64.appimage --appimage-extract 14 | ./squashfs-root/usr/bin/nvim 15 | ``` 16 | 17 | #### Tarball 18 | 19 | 1. Download **nvim-linux-x86_64.tar.gz** 20 | 2. Extract: `tar xzvf nvim-linux-x86_64.tar.gz` 21 | 3. Run `./nvim-linux-x86_64/bin/nvim` 22 | 23 | #### Debian Package 24 | 25 | 1. Download **nvim-linux-x86_64.deb** 26 | 2. Install the package using `sudo apt install ./nvim-linux-x86_64.deb` 27 | 3. Run `nvim` 28 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: release 2 | on: 3 | schedule: 4 | - cron: '5 5 * * *' 5 | workflow_dispatch: 6 | inputs: 7 | tag_name: 8 | description: 'Tag name for release' 9 | required: false 10 | default: nightly 11 | push: 12 | tags: 13 | - v[0-9]+.[0-9]+.[0-9]+ 14 | 15 | env: 16 | ZIG_VERSION: 0.13.0 17 | GLIBC_VERSION: 2.17 18 | BIN_DIR: ${{ github.workspace }}/bin 19 | 20 | # Build with zig cc so we can target glibc 2.17, so we have broader compatibility 21 | jobs: 22 | linux: 23 | runs-on: ubuntu-latest 24 | outputs: 25 | version: ${{ steps.build.outputs.version }} 26 | env: 27 | LDAI_NO_APPSTREAM: 1 # skip checking (broken) AppStream metadata for issues 28 | steps: 29 | - if: github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly' 30 | uses: actions/checkout@v4 31 | with: 32 | repository: 'neovim/neovim' 33 | ref: ${{ github.event.inputs.tag_name }} 34 | fetch-depth: 0 35 | 36 | - if: github.event_name == 'schedule' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly') 37 | uses: actions/checkout@v4 38 | with: 39 | repository: 'neovim/neovim' 40 | fetch-depth: 0 41 | 42 | - uses: ./.github/actions/setup 43 | 44 | - run: sudo apt-get install -y fuse libfuse2 # For linuxdeploy. 45 | 46 | - name: Add "$BIN_DIR" to path 47 | run: | 48 | mkdir -p "$BIN_DIR" 49 | echo "$BIN_DIR" >> $GITHUB_PATH 50 | 51 | - name: Install Zig 52 | run: | 53 | curl -O https://ziglang.org/download/$ZIG_VERSION/zig-linux-$(arch)-$ZIG_VERSION.tar.xz 54 | tar -xf zig-linux-$(arch)-$ZIG_VERSION.tar.xz 55 | rm -rf zig-linux-$(arch)-$ZIG_VERSION.tar.xz 56 | ln -s $(pwd)/zig-linux-$(arch)-$ZIG_VERSION/zig $BIN_DIR/zig 57 | 58 | # Include -lunwind so luajit can be linked 59 | # Include -g0 to strip debug info by default. 60 | # Note: Cmake should override this for debug builds by appending -g 61 | echo 'exec zig cc -target $(arch)-linux-gnu.${GLIBC_VERSION} -lunwind -g0 "$@"' > $BIN_DIR/zigcc 62 | chmod +x $BIN_DIR/zigcc 63 | 64 | - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly') 65 | run: | 66 | echo 'CMAKE_BUILD_TYPE=Release' >> $GITHUB_ENV 67 | echo 'APPIMAGE_TAG=latest' >> $GITHUB_ENV 68 | 69 | - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly') 70 | run: | 71 | echo 'CMAKE_BUILD_TYPE=RelWithDebInfo' >> $GITHUB_ENV 72 | echo 'APPIMAGE_TAG=nightly' >> $GITHUB_ENV 73 | 74 | - name: appimage 75 | env: 76 | CC: zigcc 77 | run: ./scripts/genappimage.sh ${APPIMAGE_TAG} 78 | - run: cpack --config build/CPackConfig.cmake 79 | 80 | - uses: actions/upload-artifact@v4 81 | with: 82 | name: appimage 83 | path: | 84 | build/bin/nvim-linux-x86_64.appimage 85 | build/bin/nvim-linux-x86_64.appimage.zsync 86 | retention-days: 1 87 | 88 | - uses: actions/upload-artifact@v4 89 | with: 90 | name: nvim-linux64 91 | path: | 92 | build/nvim-linux-x86_64.tar.gz 93 | build/nvim-linux-x86_64.deb 94 | retention-days: 1 95 | 96 | - name: Export version 97 | id: build 98 | run: | 99 | printf 'version<> $GITHUB_OUTPUT 100 | ./build/bin/nvim --version | head -n 3 >> $GITHUB_OUTPUT 101 | printf 'END\n' >> $GITHUB_OUTPUT 102 | 103 | publish: 104 | needs: [linux] 105 | runs-on: ubuntu-latest 106 | env: 107 | GH_REPO: ${{ github.repository }} 108 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 109 | permissions: 110 | contents: write 111 | steps: 112 | # Must perform checkout first, since it deletes the target directory 113 | # before running, and would therefore delete the downloaded artifacts 114 | - uses: actions/checkout@v4 115 | 116 | - uses: actions/download-artifact@v4 117 | 118 | - name: Install dependencies 119 | run: sudo apt-get update && sudo apt-get install -y gettext-base 120 | 121 | - if: github.event_name == 'workflow_dispatch' 122 | run: echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV 123 | 124 | - if: github.event_name == 'schedule' 125 | run: echo 'TAG_NAME=nightly' >> $GITHUB_ENV 126 | 127 | - if: github.event_name == 'push' 128 | run: | 129 | TAG_NAME=${{ github.ref }} 130 | echo "TAG_NAME=${TAG_NAME#refs/tags/}" >> $GITHUB_ENV 131 | 132 | - name: Publish release 133 | env: 134 | NVIM_VERSION: ${{ needs.linux.outputs.version }} 135 | DEBUG: api 136 | run: | 137 | if [ "$TAG_NAME" == "nightly" ]; then 138 | SUBJECT='Nvim development (prerelease) build' 139 | PRERELEASE='--prerelease' 140 | else 141 | SUBJECT='Nvim release build' 142 | PRERELEASE= 143 | fi 144 | envsubst < "$GITHUB_WORKSPACE/.github/workflows/notes.md" > "$RUNNER_TEMP/notes.md" 145 | 146 | if [ "$TAG_NAME" == "nightly" ]; then 147 | git push origin :nightly || true 148 | else 149 | gh release delete stable --yes || true 150 | git push origin :stable || true 151 | gh release create stable \ 152 | --notes-file "$RUNNER_TEMP/notes.md" \ 153 | --title "$SUBJECT" \ 154 | --target $GITHUB_SHA \ 155 | nvim-linux64/* appimage/* 156 | fi 157 | 158 | gh release delete $TAG_NAME --yes || true 159 | gh release create $TAG_NAME $PRERELEASE \ 160 | --notes-file "$RUNNER_TEMP/notes.md" \ 161 | --title "$SUBJECT" \ 162 | --target $GITHUB_SHA \ 163 | nvim-linux64/* appimage/* 164 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unsupported Nvim releases 2 | 3 | [![Release](https://github.com/neovim/neovim-releases/actions/workflows/release.yml/badge.svg)](https://github.com/neovim/neovim-releases/actions/workflows/release.yml) 4 | 5 | This repo provides best-effort, [unsupported builds](https://github.com/neovim/neovim-releases/releases) 6 | (as opposed to the [supported builds](https://github.com/neovim/neovim/releases)) of Nvim for some legacy 7 | systems or other quirky scenarios: 8 | 9 | - Linux (built with glibc 2.17, unlike the [supported builds](https://github.com/neovim/neovim/releases) 10 | which use a newer glibc) 11 | - Appimage 12 | - tar.gz 13 | - deb 14 | --------------------------------------------------------------------------------