A high-contrast, futuristic & vibrant theme for neovim
|
|
|
|
|
|
- Transparency-first design - all design decisions are made with transparency in mind.
- High contrast - Colours have been carefully chosen to be cohesive and easy on the eyes while still being easy to distinguish.
- Terminal Support - Several included terminal themes to enhance your cyberdream experience.
- Extensions - Support for a variety of popular plugins out of the box. Can be toggled on or off to maximise performance.
Supported Plugins/Extensions
Lazy1:
{
"scottmckendry/cyberdream.nvim",
lazy = false,
priority = 1000,
}Packer:
use { "scottmckendry/cyberdream.nvim" }Lualine (optional):
{
require("lualine").setup({
-- ... other config
options = {
theme = "auto", -- "auto" will set the theme dynamically based on the colorscheme
},
-- ... other config
})
}See my personal lualine config here for an example.
vim.cmd("colorscheme cyberdream")Calling setup is optional, but allows you to configure the theme to your liking.
Below is an example of all the available configuration options with their default values:
require("cyberdream").setup({
-- Set light or dark variant
variant = "default", -- use "light" for the light variant. Also accepts "auto" to set dark or light colors based on the current value of `vim.o.background`
-- Enable transparent background
transparent = false,
-- Reduce the overall saturation of colours for a more muted look
saturation = 1, -- accepts a value between 0 and 1. 0 will be fully desaturated (greyscale) and 1 will be the full color (default)
-- Enable italics comments
italic_comments = false,
-- Replace all fillchars with ' ' for the ultimate clean look
hide_fillchars = false,
-- Apply a modern borderless look to pickers like Telescope, Snacks Picker & Fzf-Lua
borderless_pickers = false,
-- Set terminal colors used in `:terminal`
terminal_colors = true,
-- Improve start up time by caching highlights. Generate cache with :CyberdreamBuildCache and clear with :CyberdreamClearCache
cache = false,
-- Override highlight groups with your own colour values
highlights = {
-- Highlight groups to override, adding new groups is also possible
-- See `:h highlight-groups` for a list of highlight groups or run `:hi` to see all groups and their current values
-- Example:
Comment = { fg = "#696969", bg = "NONE", italic = true },
-- More examples can be found in `lua/cyberdream/extensions/*.lua`
},
-- Override a highlight group entirely using the built-in colour palette
overrides = function(colors) -- NOTE: This function nullifies the `highlights` option
-- Example:
return {
Comment = { fg = colors.green, bg = "NONE", italic = true },
["@property"] = { fg = colors.magenta, bold = true },
}
end,
-- Override colors
colors = {
-- For a list of colors see `lua/cyberdream/colours.lua`
-- Override colors for both light and dark variants
bg = "#000000",
green = "#00ff00",
-- If you want to override colors for light or dark variants only, use the following format:
dark = {
magenta = "#ff00ff",
fg = "#eeeeee",
},
light = {
red = "#ff5c57",
cyan = "#5ef1ff",
},
},
-- Disable or enable colorscheme extensions
extensions = {
telescope = true,
notify = true,
mini = true,
...
},
-- Alternatively, you can use 'default' to set all extensions at once
-- cache = true, -- Use cache for fastest loads
-- extensions = {
-- default = false, -- Disable all by default
-- base = true, -- Enable all built-in hl groups (you probably want this)
--
-- -- Now enable only what you want to use
-- telescope = true,
-- cmp = true,
-- gitsigns = true,
-- },
})Note
For a complete list of extensions, see the table in config.lua.
We've cooked up some wonderful extras to enhance your cyberdream experience. Mostly terminal themes and a few other goodies!
- Alacritty
- Base16/Stylix
- Fish
- Foot
- Ghostty
- GitUI
- Helix
- K9s
- Kitty
- Lazydocker
- Lazygit
- lsd
- OpenCode
- Posting
- Pywal
- Rio
- Superfile
- Textmate/Bat/Sublime/Delta
- Tilix
- Tmux
- Vicinae
- Vivid
- Warp
- Wezterm
- Windows Terminal
- Yazi
- Zed
- Zellij
Using the Nix Flake
For Nix users, this repository includes a flake.nix that exposes all extra themes through the extras output. This makes it easy to integrate cyberdream themes into your NixOS or home-manager configuration.
The flake automatically discovers all directories in the extras/ folder and makes them available as outputs. You can reference any extra theme directly in your Nix configuration.
Add cyberdream to your flake inputs:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
cyberdream.url = "github:scottmckendry/cyberdream.nvim";
};
}There are several approaches you can use depending on the program:
{ inputs, ... }:
{
# Alacritty - parse TOML and merge with settings
programs.alacritty = {
enable = true;
settings = builtins.fromTOML (builtins.readFile "${inputs.cyberdream.extras.alacritty}/alacritty.toml");
};
# Kitty - append theme config
programs.kitty = {
enable = true;
extraConfig = builtins.readFile "${inputs.cyberdream.extras.kitty}/kitty.conf";
};
# Tmux - append theme config
programs.tmux = {
enable = true;
extraConfig = builtins.readFile "${inputs.cyberdream.extras.tmux}/tmux.conf";
};
}{ inputs, ... }:
{
# Yazi - link theme file directly
xdg.configFile."yazi/theme.toml".source = "${inputs.cyberdream.extras.yazi}/cyberdream.toml";
# Zellij - link theme file directly
xdg.configFile."zellij/themes/cyberdream.kdl".source = "${inputs.cyberdream.extras.zellij}/cyberdream.kdl";
}{ inputs, ... }:
{
# Bat - register as a custom theme
programs.bat = {
enable = true;
config = {
theme = "cyberdream";
};
themes = {
cyberdream = {
src = inputs.cyberdream;
file = "extras/textmate/cyberdream.tmTheme";
};
};
};
}All directories in the extras/ folder are available through inputs.cyberdream.extras.<name>. See the list above for all available themes.
Include these alongside the setup function to add additional functionality to the theme.
-- Add a custom keybinding to toggle the colorscheme
vim.api.nvim_set_keymap("n", "<leader>tt", ":CyberdreamToggleMode<CR>", { noremap = true, silent = true })-- The event data property will contain a string with either "default" or "light" respectively
vim.api.nvim_create_autocmd("User", {
pattern = "CyberdreamToggleMode",
callback = function(event)
-- Your custom code here!
-- For example, notify the user that the colorscheme has been toggled
print("Switched to " .. event.data .. " mode!")
end,
})Dark
Light
Contributions are welcome! Please read the contributing guidelines to get started.
1. For Lazyvim users, refer to the LazyVim docs for specific instructions.







