Add FreeBSD support: update treesitter config, disable Mason auto-install, add install script

This commit is contained in:
berkenar1 2026-01-01 18:27:51 +03:00
parent 3338d39206
commit fe7ed05f0d
3 changed files with 142 additions and 196 deletions

219
README.md
View File

@ -1,14 +1,23 @@
# kickstart.nvim
# kickstart.nvim-FreeBSD
## Introduction
A starting point for Neovim that is:
A FreeBSD-optimized fork of [kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) that is:
* Small
* Single-file
* Completely Documented
* **FreeBSD-Native**: Configured to use system packages instead of Mason auto-install
**NOT** a Neovim distribution, but instead a starting point for your configuration.
**NOT** a Neovim distribution, but instead a starting point for your configuration tailored for FreeBSD.
## What's Different from Original Kickstart
This fork includes FreeBSD-specific modifications:
- **No Mason auto-compilation**: Uses system `pkg` packages instead
- **Tree-sitter support**: Configured to use system tree-sitter libraries
- **Tested on FreeBSD**: All plugins verified to work on FreeBSD systems
- **Pre-install script**: Automated dependency installation via `install-freebsd.sh`
## Installation
@ -21,104 +30,79 @@ If you are experiencing issues, please make sure you have the latest versions.
### Install External Dependencies
External Requirements:
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
#### FreeBSD (Recommended for FreeBSD users)
Use the provided installation script to automatically install all dependencies:
```sh
sudo sh install-freebsd.sh
```
Or manually install dependencies:
```sh
sudo pkg update -f
sudo pkg install -y git gmake unzip llvm ripgrep fd-find tree-sitter stylua base64-by-elvis
```
**Note:** `lua-language-server` is not available in FreeBSD pkg repositories, so LSP support for Lua is disabled in this config.
#### Other External Requirements
- Basic utils: `git`, `gmake` (FreeBSD uses gmake instead of make), `unzip`, C Compiler (clang via `llvm`)
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation),
[fd-find](https://github.com/sharkdp/fd#installation)
- Clipboard tool (xclip/xsel/win32yank or other depending on the platform)
- Clipboard tool (xclip/xsel or xclip-freebsd)
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons
- if you have it set `vim.g.have_nerd_font` in `init.lua` to true
- Emoji fonts (Ubuntu only, and only if you want emoji!) `sudo apt install fonts-noto-color-emoji`
- Language Setup:
- If you want to write Typescript, you need `npm`
- If you want to write Golang, you will need `go`
- etc.
> [!NOTE]
> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes
> and quick install snippets
### Install Kickstart
### Install Kickstart.nvim-FreeBSD
> [!NOTE]
> [Backup](#FAQ) your previous configuration (if any exists)
Neovim's configurations are located under the following paths, depending on your OS:
Neovim's configuration location on FreeBSD:
| OS | PATH |
| :- | :--- |
| Linux, MacOS | `$XDG_CONFIG_HOME/nvim`, `~/.config/nvim` |
| Windows (cmd)| `%localappdata%\nvim\` |
| Windows (powershell)| `$env:LOCALAPPDATA\nvim\` |
```
~/.config/nvim
```
#### Recommended Step
[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo
so that you have your own copy that you can modify, then install by cloning the
fork to your machine using one of the commands below, depending on your OS.
> [!NOTE]
> Your fork's URL will be something like this:
> `https://github.com/<your_github_username>/kickstart.nvim.git`
You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file
too - it's ignored in the kickstart repo to make maintenance easier, but it's
[recommended to track it in version control](https://lazy.folke.io/usage/lockfile).
#### Clone kickstart.nvim
> [!NOTE]
> If following the recommended step above (i.e., forking the repo), replace
> `nvim-lua` with `<your_github_username>` in the commands below
<details><summary> Linux and Mac </summary>
#### Clone the Repository
```sh
git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
git clone https://github.com/YOUR_USERNAME/kickstart.nvim-freebsd.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
cd ~/.config/nvim
```
</details>
#### Install Dependencies
<details><summary> Windows </summary>
Run the automated install script:
If you're using `cmd.exe`:
```
git clone https://github.com/nvim-lua/kickstart.nvim.git "%localappdata%\nvim"
```sh
sudo sh install-freebsd.sh
```
If you're using `powershell.exe`
```
git clone https://github.com/nvim-lua/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim"
```
</details>
### Post Installation
Start Neovim
#### Start Neovim and Sync Plugins
```sh
nvim
```
That's it! Lazy will install all the plugins you have. Use `:Lazy` to view
the current plugin status. Hit `q` to close the window.
Inside Neovim, run:
#### Read The Friendly Documentation
Read through the `init.lua` file in your configuration folder for more
information about extending and exploring Neovim. That also includes
examples of adding popularly requested plugins.
> [!NOTE]
> For more information about a particular plugin check its repository's documentation.
```vim
:Lazy sync
```
Wait for plugins to finish installing, then restart Neovim.
### Getting Started
[The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o)
Read through the `init.lua` file in your configuration folder for more information about extending and exploring Neovim.
### FAQ
@ -129,13 +113,13 @@ examples of adding popularly requested plugins.
* Can I keep my existing configuration in parallel to kickstart?
* Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME`
to maintain multiple configurations. For example, you can install the kickstart
configuration in `~/.config/nvim-kickstart` and create an alias:
configuration in `~/.config/nvim-freebsd` and create an alias:
```
alias nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim'
alias nvim-freebsd='NVIM_APPNAME="nvim-freebsd" nvim'
```
When you run Neovim using `nvim-kickstart` alias it will use the alternative
When you run Neovim using `nvim-freebsd` alias it will use the alternative
config directory and the matching local directory
`~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim
`~/.local/share/nvim-freebsd`. You can apply this approach to any Neovim
distribution that you would like to try out.
* What if I want to "uninstall" this configuration:
* See [lazy.nvim uninstall](https://lazy.folke.io/usage#-uninstalling) information
@ -146,96 +130,5 @@ examples of adding popularly requested plugins.
into smaller parts. A fork of kickstart that does this while maintaining the
same functionality is available here:
* [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim)
* Discussions on this topic can be found here:
* [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218)
* [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473)
### Install Recipes
Below you can find OS specific install instructions for Neovim and dependencies.
After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step.
#### Windows Installation
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
Installation may require installing build tools and updating the run command for `telescope-fzf-native`
See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
This requires:
- Install CMake and the Microsoft C++ Build Tools on Windows
```lua
{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
```
</details>
<details><summary>Windows with gcc/make using chocolatey</summary>
Alternatively, one can install gcc and make which don't require changing the config,
the easiest way is to use choco:
1. install [chocolatey](https://chocolatey.org/install)
either follow the instructions on the page or use winget,
run in cmd as **admin**:
```
winget install --accept-source-agreements chocolatey.chocolatey
```
2. install all requirements using choco, exit the previous cmd and
open a new one so that choco path is set, and run in cmd as **admin**:
```
choco install -y neovim git ripgrep wget fd unzip gzip mingw make
```
</details>
<details><summary>WSL (Windows Subsystem for Linux)</summary>
```
wsl --install
wsl
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim
```
</details>
#### Linux Install
<details><summary>Ubuntu Install Steps</summary>
```
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim
```
</details>
<details><summary>Debian Install Steps</summary>
```
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip curl
# Now we install nvim
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
sudo rm -rf /opt/nvim-linux-x86_64
sudo mkdir -p /opt/nvim-linux-x86_64
sudo chmod a+rX /opt/nvim-linux-x86_64
sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz
# make it available in /usr/local/bin, distro installs to /usr/bin
sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/
```
</details>
<details><summary>Fedora Install Steps</summary>
```
sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
```
</details>
<details><summary>Arch Install Steps</summary>
```
sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
```
</details>

View File

@ -379,7 +379,7 @@ require('lazy').setup({
{ 'nvim-telescope/telescope-ui-select.nvim' },
-- Useful for getting pretty icons, but requires a Nerd Font.
{ 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
{ 'nvim-tree/nvim-web-devicons' }, -- enabled on FreeBSD
},
config = function()
-- Telescope is a fuzzy finder that comes with a lot of different things that
@ -684,20 +684,21 @@ require('lazy').setup({
-- ts_ls = {},
--
lua_ls = {
-- cmd = { ... },
-- filetypes = { ... },
-- capabilities = {},
settings = {
Lua = {
completion = {
callSnippet = 'Replace',
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- diagnostics = { disable = { 'missing-fields' } },
},
},
},
-- lua_ls = {
-- -- On FreeBSD, install via: pkg install lua-language-server
-- -- cmd = { ... },
-- -- filetypes = { ... },
-- -- capabilities = {},
-- settings = {
-- Lua = {
-- completion = {
-- callSnippet = 'Replace',
-- },
-- -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- -- diagnostics = { disable = { 'missing-fields' } },
-- },
-- },
-- },
}
-- Ensure the servers and tools above are installed
@ -713,10 +714,11 @@ require('lazy').setup({
--
-- You can add other tools here that you want Mason to install
-- for you, so that they are available from within Neovim.
-- On FreeBSD, use system packages instead of Mason
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
'stylua', -- Used to format Lua code
})
-- vim.list_extend(ensure_installed, {
-- 'stylua', -- Install via: pkg install stylua
-- })
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
require('mason-lspconfig').setup {
@ -738,6 +740,7 @@ require('lazy').setup({
{ -- Autoformat
'stevearc/conform.nvim',
lazy = false, -- Force eager loading
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
@ -940,22 +943,29 @@ require('lazy').setup({
},
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
-- Disable build on FreeBSD - use system tree-sitter instead
build = false,
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = {
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
-- Autoinstall languages that are not installed
auto_install = true,
highlight = {
enable = true,
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
-- If you are experiencing weird indenting issues, add the language to
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
additional_vim_regex_highlighting = { 'ruby' },
},
indent = { enable = true, disable = { 'ruby' } },
},
config = function()
local ok, configs = pcall(require, 'nvim-treesitter.configs')
if not ok then
vim.notify('nvim-treesitter not properly installed. Run :Lazy sync', vim.log.levels.WARN)
return
end
configs.setup {
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
-- Disable autoinstall on FreeBSD - use system parsers
auto_install = false,
highlight = {
enable = true,
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
-- If you are experiencing weird indenting issues, add the language to
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
additional_vim_regex_highlighting = { 'ruby' },
},
indent = { enable = true, disable = { 'ruby' } },
}
end,
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--

43
install-freebsd.sh Normal file
View File

@ -0,0 +1,43 @@
#!/bin/sh
# FreeBSD Dependencies Installation Script for kickstart.nvim
# This script installs all required dependencies for kickstart.nvim on FreeBSD
set -e
echo "Installing dependencies for kickstart.nvim on FreeBSD..."
echo ""
# Check if running as root
if [ "$(id -u)" != "0" ]; then
echo "Error: This script must be run as root (use sudo)"
exit 1
fi
# Update package database
echo "[1/5] Updating package database..."
pkg update -f
# Core dependencies
echo "[2/5] Installing core dependencies (git, make, unzip, clang)..."
pkg install -y base64 git gmake unzip llvm
# Development tools
echo "[3/5] Installing development tools (ripgrep, fd)..."
pkg install -y ripgrep fd-find
# Tree-sitter for syntax highlighting
echo "[4/5] Installing tree-sitter..."
pkg install -y tree-sitter
# Code formatter
echo "[5/5] Installing code formatters (stylua)..."
pkg install -y stylua
echo ""
echo "✓ All dependencies installed successfully!"
echo ""
echo "Next steps:"
echo "1. Start Neovim: nvim"
echo "2. Install plugins: :Lazy sync"
echo "3. (Optional) Set a Nerd Font in your terminal and update vim.g.have_nerd_font = true in init.lua"
echo ""