A Neovim port of the Houston VSCode theme by Astro.
Pure Lua, no dependencies, faithful translation of the original TextMate scope mappings, treesitter + LSP semantic tokens, and a bundled lualine theme. 1138 highlight groups covering treesitter, LSP, and 25+ popular plugins out of the box.
![]() |
![]() |
![]() |
![]() |
| Role | Hex |
|---|---|
bg |
#17191e |
bg_panel |
#23262d |
bg_float |
#343841 |
fg |
#eef0f9 |
fg_dim |
#bfc1c9 |
fg_muted |
#858b98 |
fg_subtle |
#545864 |
blue |
#54b9ff |
cyan |
#00daef |
mint |
#4bf3c8 |
peach |
#ffd493 |
magenta |
#cc75f4 |
lavender |
#acafff |
red |
#f44747 |
pink |
#f4587e |
- Neovim ≥ 0.9 (treesitter highlight groups assume the modern
@-prefixed capture names introduced in 0.8/0.9) - A terminal with true-color support (
termguicolors)
{
"devbydaniel/houston.nvim",
lazy = false,
priority = 1000,
config = function()
require("houston").setup({
transparent = false,
italic_comments = true,
})
vim.cmd.colorscheme("houston")
end,
}setup() is optional — :colorscheme houston works on its own with default
options.
use({
"devbydaniel/houston.nvim",
config = function()
vim.cmd.colorscheme("houston")
end,
})Plug 'devbydaniel/houston.nvim'
" later, after plug#end():
colorscheme houstonDefaults:
require("houston").setup({
transparent = false, -- transparent background
italic_comments = true, -- italic comments
terminal_colors = true, -- set vim.g.terminal_color_*
styles = {
keywords = {},
functions = {},
variables = {},
booleans = {},
types = {},
},
-- Mutate the palette before highlights are built
on_colors = function(colors) end,
-- Mutate highlight groups before they're applied
on_highlights = function(highlights, colors) end,
})Override a color globally:
require("houston").setup({
on_colors = function(c)
c.bg = "#000000"
end,
})Override a single highlight group:
require("houston").setup({
on_highlights = function(hl, c)
hl.Comment = { fg = c.fg_muted, italic = true }
end,
})A lualine theme is bundled:
require("lualine").setup({
options = { theme = "houston" },
})Foundation:
- Treesitter (
@-prefixed capture groups) - LSP diagnostics, references, inlay hints, and semantic tokens
(including the
readonlymodifier so JS/TSconstreferences render in lavender)
Editor & navigation:
- snacks.nvim — picker, notifier, input, indent, dim, scratch, zen, dashboard, statuscolumn, winbar, diff
- telescope.nvim
- nvim-tree.lua
- neo-tree.nvim
- bufferline.nvim
- which-key.nvim
- indent-blankline.nvim
- leap.nvim
- flash.nvim
- mason.nvim
- outline.nvim
- aerial.nvim
- yazi.nvim
- mini.nvim — statusline, indentscope, cursorword, files, pick, notify, hipatterns, jump2d, diff
Completion:
LSP & diagnostics:
Git:
Markdown:
AI:
Debug:
UI & misc:
- lualine.nvim (bundled theme)
- noice.nvim
- nvim-notify
- toggleterm.nvim
- lazy.nvim
Missing one you use? Open an issue or send a PR — see CONTRIBUTING.md.
houston.nvim/
├── colors/houston.lua # entry point (`:colorscheme houston`)
├── lua/
│ ├── houston/
│ │ ├── init.lua # load() + setup()
│ │ ├── config.lua # defaults + HoustonConfig type
│ │ ├── palette.lua # raw hex values
│ │ └── groups/
│ │ ├── editor.lua # core editor groups
│ │ ├── syntax.lua # legacy vim syntax
│ │ ├── treesitter.lua # @ capture groups
│ │ ├── lsp.lua # diagnostics + semantic tokens
│ │ └── plugins.lua # plugin highlights
│ └── lualine/themes/houston.lua
└── extras/houston-vscode.json # source theme JSON for reference
Issues and PRs welcome. See CONTRIBUTING.md for the project layout, local dev loop, and the Conventional Commits cheat sheet (used by release-please to automate the CHANGELOG and version bumps).
- Astro and The Astro Technology Company for the original Houston VSCode theme. See NOTICE for the full attribution.
- Structure inspired by tokyonight.nvim and catppuccin/nvim.
MIT. The original Houston VSCode theme is also MIT-licensed by The Astro Technology Company; see NOTICE for details.



