This repository contains configuration files and Lua code for my programming environment on Linux. The centrepieces of this environment are kitty running one Neovim instance and any number of zsh shells per project.
If you are looking for my Neovim config, you can find it in nvim/.config/nvim
.
The following is required for installing and using these dotfiles:
- Linux
- git
- zsh
- make
- Stow
fzf will be used in zsh when installed (i.e. using a package manager).
Depending on which config packages are installed, these dependencies are also required:
git
kitty
nvim
- ripgrep
- Language servers depending on the desired languages
- In the repo, execute
git submodule update --init
. - Edit
~/.zshenv
to readexport ZDOTDIR="$HOME/repos/dotfiles/zsh"
(adapt directory). - Execute
make
in the repo to install all config packages.
The following (Stow based) config packages are available:
containers
dig
direnv
git
helix
kitty
nvim
ranger
ssh
Running make
installs all of them.
If you wish to only install specific packages, pass them as additional arguments to make, i.e.: make ssh git
.
Run nvim +PaqUpdate
to update all plugins.
Neovim's internal LSP client is used to provide code intelligence and completion using language servers.
Depending on the languages used, the following language server binaries need to be installed manually:
- Go (gopls):
go install golang.org/x/tools/gopls@latest
- Python (Basedpyright):
pip install basedpyright
- PHP (Intelephense):
npm i -g intelephense
- TypeScript and JavaScript (TypeScript Language Server):
npm i -g typescript typescript-language-server
- Lua (lua-language-server): see installation instructions. Create the wrapper script as
~/bin/lua-language-server
. - Markdown (Marksman): see installation instructions
- Tailwind CSS (tailwindcss/language-server):
npm i -g @tailwindcss/language-server
Some projects require or can benefit from some custom configuration for some of the tools used in this development set-up.
Project local configuration can be set in .nvim.lua
or .nvimrc
.
Neovim also reads EditorConfig files.
Given direnv is installed, specific environment variables can be exported in .envrc
files which are loaded automatically upon entering the (sub)directory.
A git/local.inc
file can be used to set custom git configuration values.
Here you can use conditional includes to set configuration per directory:
# vi: ft=gitconfig
[user]
email = [email protected]
[includeIf "gitdir:~/foo/bar/"]
path = ~/foo/bar/.gitconfig
Aside from common global configuration options set in nvim/.config/ctags/global.ctags
, additional project-level parameters can be defined within .ctags.d/*.ctags
files. This allows to exclude i.e. compiled or vendor source files using more --exclude=
options.
Lua files in this repository are linted using Luacheck and StyLua. You need to install these tools yourself.
To lint all Lua files, run make lint
or make lint-lua
.
Copyright 2021, Dietrich Moerman.
Released under the terms of the MIT License.