Skip to content

Instantly share code, notes, and snippets.

@jochumdev
Last active November 25, 2025 16:02
Show Gist options
  • Select an option

  • Save jochumdev/6783c5b44e571a703aeb508941df6fe6 to your computer and use it in GitHub Desktop.

Select an option

Save jochumdev/6783c5b44e571a703aeb508941df6fe6 to your computer and use it in GitHub Desktop.
My helix setup

My helix + mise-en-place setup

I've been a user of VS Code (the OSS code edition) and tried hard to switch to Neovim, tried various distributions but had no success.

Also found mise-en-place 1 a while ago and I'm very happy with this POWERFUL tool.


Files in this gist

Now I wanna share the combination of these both tools with the community.

I'm using:

  • mise.toml as ~/.config/mise/config.toml
  • helix-config.toml as ~/.config/helix/config.toml
  • helix-languages.toml as ~/.config/helix/languages.toml

To install other LSP's use:

mise use -g 'tool'
# if that fails:
mise use -g '(npm|pipx|go|cargo):tool-org/tool'
# if that also fails
mise use -g ubi:hyprland-community/hyprls 
# debug ubi:
ubi -p hyprland-community/hyprls -m "hyprls" --extract-all -d

If you have a shared config.toml for mise you can use a config.local.toml like that:

mise use -e local -g 'pipx:black'

Use mise use -f to reinstall a package.

My special mise setup

I don't like to run mise activate in each shell, this is why I have this line in my .zshenv:

path=(
  # My personal scripts
	$HOME/.local/bin(N-/)
  # This uses mise shims instead of system one tools.
	$HOME/.local/share/mise/shims
  $path
)
export PATH

Other Helix related resources

Awesome

https://github.com/npupko/awesome-helix

Language support related

Info

I try to keep this up to date or point this to another link when I change the location.

License

MIT

Footnotes

  1. https://mise.jdx.dev

# Parts from: https://tqwewe.com/blog/enhanced-helix-config/
theme = "bogster"
[editor]
cursorline = true
mouse = false
# Resolve true color detection problems (e.g. on Linux in Windows WSL2)
# such as the error, "theme: theme requires true color support".
true-color = true
undercurl = true
# Use relative line numbers
line-number = "relative"
bufferline = "multiple"
color-modes = true
# Show a ruler at column 80
# https://medium.com/@carlo.michaelis/the-80-120-column-soft-margin-rule-979526742197
rulers = [80]
# Minimum severity to show a diagnostic after the end of a line
end-of-line-diagnostics = "hint"
[editor.inline-diagnostics]
cursor-line = "error" # Show inline diagnostics when the cursor is on the line
other-lines = "disable" # Don't expand diagnostics unless the cursor is on the line
[editor.indent-guides]
character = "╎"
render = true
[editor.statusline]
left = ["mode", "spinner", "version-control", "file-name"]
right = [
"diagnostics",
"selections",
"register",
"position",
"total-line-numbers",
"file-encoding"
]
[editor.lsp]
# Disable automatically popups of signature parameter help
auto-signature-help = false
# Show LSP messages in the status line
display-messages = true
# display-inlay-hints = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
# [editor.whitespace.render]
# space = "all"
# tab = "all"
# nbsp = "all"
# nnbsp = "all"
# newline = "none"
[keys.insert]
up = "no_op"
down = "no_op"
left = "no_op"
right = "no_op"
pageup = "no_op"
pagedown = "no_op"
home = "no_op"
end = "no_op"
[language-server.harper-ls]
command = "harper-ls"
args = ["--stdio"]
# config = { harper-ls = { diagnosticSeverity = "error", linters = { long_sentences = false } } }
# Source: https://github.com/helix-editor/helix/discussions/8567#discussioncomment-8447553
[language-server.pylsp.config.pylsp]
pylsp.plugins.black.enabled = true
pylsp.plugins.pylint.enabled = true
pylsp.plugins.pyflakes.enabled = false
pylsp.plugins.pyls_mypy.enabled = false
pylsp.plugins.pyls_mypy.live_mode = false
pylsp.plugins.isort.enabled = true
pylsp.plugins.rope_autoimport.enabled = true
pylsp.plugins.ruff.enbaled = true
# pylsp.plugins.pycodestyle.maxLineLength = 100
# pylsp.plugins.flake8.maxLineLength = 100
[language-server.ruff]
command = "ruff"
args = ["server"]
[language-server.pylyzer]
command = "pylyzer"
args = ["--server"]
[language-server.gopls.config]
gofumpt = true
[language-server.vscode-json-language-server.config]
json = { validate = { enable = true }, format = { enable = false } }
jsonc = { validate = { enable = true }, format = { enable = false } }
provideFormatter = false
[language-server.phpactor]
command = "phpactor"
args = ["language-server"]
[[language]]
name = "python"
language-servers = ["ty", "ruff", "jedi", "pylsp", "harper-ls"]
[[language]]
name = "git-commit"
language-servers = ["harper-ls"]
[[language]]
name = "rust"
language-servers = ["rust-analyzer", "harper-ls"]
[[language]]
name = "json"
formatter = { command = "deno", args = ["fmt", "-", "--ext", "json"] }
[[language]]
name = "jsonc"
formatter = { command = "deno", args = ["fmt", "-", "--ext", "jsonc"] }
[[language]]
name = "javascript"
language-servers = ["typescript-language-server", "harper-ls"]
formatter = { command = "deno", args = ["fmt", "-", "--ext", "js"] }
[[language]]
name = "typescript"
formatter = { command = "deno", args = ["fmt", "-", "--ext", "ts"] }
language-servers = ["typescript-language-server", "harper-ls"]
[[language]]
name = "jsx"
formatter = { command = "deno", args = ["fmt", "-", "--ext", "jsx"] }
language-servers = ["typescript-language-server", "harper-ls"]
[[language]]
name = "tsx"
formatter = { command = "deno", args = ["fmt", "-", "--ext", "tsx"] }
language-servers = ["typescript-language-server", "harper-ls"]
[[language]]
name = "markdown"
formatter = { command = "deno", args = ["fmt", "-", "--ext", "md"] }
language-servers = ["marksman", "harper-ls"]
[[language]]
name = "html"
language-servers = ["vscode-html-language-server", "harper-ls"]
formatter = { command = "deno", args = ["fmt", "-", "--ext", "html"] }
[[language]]
name = "css"
language-servers = ["vscode-css-language-server", "harper-ls"]
formatter = { command = "deno", args = ["fmt", "-", "--ext", "css"] }
[[language]]
name = "yaml"
formatter = { command = "deno", args = ["fmt", "-", "--ext", "yaml"] }
[[language]]
name = "toml"
formatter = { command = "tombi", args = ["format", "-"] }
[[language]]
name = "lua"
formatter = { command = "stylua", args = ["-"] }
language-servers = ["lua-language-server", "harper-ls"]
[[language]]
name = "php"
formatter = { command = "pretty-php", args = ["-"] }
language-servers = ["phpactor", "harper-ls"]
[settings.npm]
bun = true
[tools]
bun = "latest"
go = "latest"
python = "latest"
ubi = "latest"
rust = "latest"
# Spell checker
"cargo:harper-ls" = "latest"
# Markdown for helix
"ubi:Feel-ix-343/markdown-oxide" = "latest"
marksman = "latest"
# Yaml for helix
"npm:yaml-language-server" = "latest"
"npm:@ansible/ansible-language-server" = "latest"
# Go for helix
golangci-lint-langserver = "latest"
"go:golang.org/x/tools/gopls" = "latest"
"go:github.com/go-delve/delve/cmd/dlv" = "latest"
# Json for helix
"npm:vscode-json-languageserver" = "latest"
biome = "latest"
# Bash for helix
"npm:bash-language-server" = "latest"
"go:mvdan.cc/sh/v3/cmd/shfmt" = "latest"
# Python for helix
# TODO: Check if all are needed
ruff = "latest"
"pipx:python-lsp/python-lsp-server" = "latest"
"pipx:astral-sh/ty" = "latest"
"pipx:pappasam/jedi-language-server" = "latest"
# Typescript and Javascript
"npm:typescript-language-server" = "latest"
# Hyprlang for helix
# NOTE: this is linux only atm!
"ubi:hyprland-community/hyprls" = { version = "latest", exe = "hyprls", extract_all = "true" }
prettier = "latest"
deno = "latest"
stylua = "latest"
taplo = "latest"
tombi = "latest"
superhtml = "latest"
"npm:vscode-langservers-extracted" = "latest"
#!/usr/bin/env zsh
set -euo pipefail
cp -f ~/.config/mise/config.toml mise.toml
cp -f ~/.config/helix/config.toml helix-config.toml
cp -f ~/.config/helix/languages.toml helix-languages.toml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment