From fe7ed05f0d68c1206f94b4e9f3bb9b1632c90747 Mon Sep 17 00:00:00 2001 From: berkenar1 <73941606+berkenar1@users.noreply.github.com> Date: Thu, 1 Jan 2026 18:27:51 +0300 Subject: [PATCH] Add FreeBSD support: update treesitter config, disable Mason auto-install, add install script --- README.md | 219 ++++++++++++--------------------------------- init.lua | 76 +++++++++------- install-freebsd.sh | 43 +++++++++ 3 files changed, 142 insertions(+), 196 deletions(-) create mode 100644 install-freebsd.sh diff --git a/README.md b/README.md index 41139505..2409f3ae 100644 --- a/README.md +++ b/README.md @@ -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//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 `` in the commands below - -
Linux and Mac +#### 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 ``` -
+#### Install Dependencies -
Windows +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" -``` - -
- -### 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 - -
Windows with Microsoft C++ Build Tools and CMake -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' } -``` -
-
Windows with gcc/make using chocolatey -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 -``` -
-
WSL (Windows Subsystem for Linux) - -``` -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 -``` -
- -#### Linux Install -
Ubuntu Install Steps - -``` -sudo add-apt-repository ppa:neovim-ppa/unstable -y -sudo apt update -sudo apt install make gcc ripgrep unzip git xclip neovim -``` -
-
Debian Install Steps - -``` -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/ -``` -
-
Fedora Install Steps - -``` -sudo dnf install -y gcc make git ripgrep fd-find unzip neovim -``` -
- -
Arch Install Steps - -``` -sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim -``` -
diff --git a/init.lua b/init.lua index b98ffc61..99da6f9f 100644 --- a/init.lua +++ b/init.lua @@ -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: -- diff --git a/install-freebsd.sh b/install-freebsd.sh new file mode 100644 index 00000000..d4bfcab3 --- /dev/null +++ b/install-freebsd.sh @@ -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 ""