This commit is contained in:
Charlie Root 2024-10-04 14:00:58 +00:00 committed by GitHub
commit 8df179c93d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 152 additions and 12 deletions

8
.github/README.md vendored
View file

@ -124,10 +124,16 @@ The _recommended_ way of installing **nvf** is using either the NixOS or the
Home-Manager module, though it is completely possible and no less supported to Home-Manager module, though it is completely possible and no less supported to
install **nvf** as a standalone package, or a flake output. install **nvf** as a standalone package, or a flake output.
See the [**nvf** manual] for detailed and up-to-date installation guides, See the rendered [nvf manual] for detailed and up-to-date installation guides,
configurations, available options, release notes and more. Tips for installing configurations, available options, release notes and more. Tips for installing
userspace plugins is also contained in the documentation. userspace plugins is also contained in the documentation.
> [!TIP]
> While using NixOS or Home-Manager modules,
> `programs.nvf.enableManpages = true;` will allow you to view option
> documentation from the comfort of your terminal via `man 5 nvf`. The more you
> know.
Please create an issue on the [issue tracker] if you find the documentation Please create an issue on the [issue tracker] if you find the documentation
lacking or confusing. Any improvements to the documentation through pull lacking or confusing. Any improvements to the documentation through pull
requests are also welcome, and appreciated. requests are also welcome, and appreciated.

View file

@ -218,6 +218,10 @@ everyone.
- Add [](#opt-vim.dashboard.dashboard-nvim.setupOpts) to allow user - Add [](#opt-vim.dashboard.dashboard-nvim.setupOpts) to allow user
configuration for [dashboard.nvim](https://github.com/nvimdev/dashboard-nvim) configuration for [dashboard.nvim](https://github.com/nvimdev/dashboard-nvim)
- Update `lualine.nvim` input and add missing themes:
- Adds `ayu`, `gruvbox_dark`, `iceberg`, `moonfly`, `onedark`,
`powerline_dark` and `solarized_light` themes.
[ppenguin](https://github.com/ppenguin): [ppenguin](https://github.com/ppenguin):
- Telescope: - Telescope:

23
flake.lock generated
View file

@ -172,6 +172,22 @@
"type": "github" "type": "github"
} }
}, },
"plugin-base16-nvim": {
"flake": false,
"locked": {
"lastModified": 1716483968,
"narHash": "sha256-GRF/6AobXHamw8TZ3FjL7SI6ulcpwpcohsIuZeCSh2A=",
"owner": "rrethy",
"repo": "base16-nvim",
"rev": "6ac181b5733518040a33017dde654059cd771b7c",
"type": "github"
},
"original": {
"owner": "rrethy",
"repo": "base16-nvim",
"type": "github"
}
},
"plugin-bufdelete-nvim": { "plugin-bufdelete-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -799,11 +815,11 @@
"plugin-lualine": { "plugin-lualine": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1712310396, "lastModified": 1723473562,
"narHash": "sha256-WcH2dWdRDgMkwBQhcgT+Z/ArMdm+VbRhmQftx4t2kNI=", "narHash": "sha256-gCm7m96PkZyrgjmt7Efc+NMZKStAq1zr7JRCYOgGDuE=",
"owner": "hoob3rt", "owner": "hoob3rt",
"repo": "lualine.nvim", "repo": "lualine.nvim",
"rev": "0a5a66803c7407767b799067986b4dc3036e1983", "rev": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1802,6 +1818,7 @@
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nmd": "nmd", "nmd": "nmd",
"plugin-alpha-nvim": "plugin-alpha-nvim", "plugin-alpha-nvim": "plugin-alpha-nvim",
"plugin-base16-nvim": "plugin-base16-nvim",
"plugin-bufdelete-nvim": "plugin-bufdelete-nvim", "plugin-bufdelete-nvim": "plugin-bufdelete-nvim",
"plugin-catppuccin": "plugin-catppuccin", "plugin-catppuccin": "plugin-catppuccin",
"plugin-ccc": "plugin-ccc", "plugin-ccc": "plugin-ccc",

View file

@ -349,6 +349,11 @@
}; };
# Themes # Themes
plugin-base16-nvim = {
url = "github:rrethy/base16-nvim";
flake = false;
};
plugin-tokyonight = { plugin-tokyonight = {
url = "github:folke/tokyonight.nvim"; url = "github:folke/tokyonight.nvim";
flake = false; flake = false;

View file

@ -7,9 +7,11 @@
typesPlugin = import ./plugins.nix {inherit inputs lib;}; typesPlugin = import ./plugins.nix {inherit inputs lib;};
typesLanguage = import ./languages.nix {inherit lib;}; typesLanguage = import ./languages.nix {inherit lib;};
typesCustom = import ./custom.nix {inherit lib;}; typesCustom = import ./custom.nix {inherit lib;};
typesTheme = import ./theme.nix {inherit lib;};
in { in {
inherit (typesDag) dagOf; inherit (typesDag) dagOf;
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType; inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
inherit (typesLanguage) diagnostics mkGrammarOption; inherit (typesLanguage) diagnostics mkGrammarOption;
inherit (typesCustom) anythingConcatLists char; inherit (typesCustom) anythingConcatLists char;
inherit (typesTheme) hexColorType;
} }

13
lib/types/theme.nix Normal file
View file

@ -0,0 +1,13 @@
{lib}: let
inherit (lib.strings) isString hasPrefix;
inherit (lib.types) mkOptionType;
inherit (builtins) stringLength;
# This was almost entirely taken from raf himself.
in {
hexColorType = mkOptionType {
name = "hex-color";
descriptionClass = "noun";
description = "RGB color in hex format";
check = x: isString x && hasPrefix "#" x && stringLength x == 7;
};
}

View file

@ -17,29 +17,36 @@
"ayu_dark" "ayu_dark"
"ayu_light" "ayu_light"
"ayu_mirage" "ayu_mirage"
"ayu"
"codedark" "codedark"
"dracula" "dracula"
"everforest" "everforest"
"gruvbox" "gruvbox"
"gruvbox_dark"
"gruvbox_light" "gruvbox_light"
"gruvbox_material" "gruvbox_material"
"horizon" "horizon"
"iceberg_dark" "iceberg_dark"
"iceberg_light" "iceberg_light"
"iceberg"
"jellybeans" "jellybeans"
"material" "material"
"modus_vivendi" "modus_vivendi"
"molokai" "molokai"
"moonfly"
"nightfly" "nightfly"
"nord" "nord"
"oceanicnext" "oceanicnext"
"onedark"
"onelight" "onelight"
"palenight" "palenight"
"papercolor_dark" "papercolor_dark"
"papercolor_light" "papercolor_light"
"powerline_dark"
"powerline" "powerline"
"seoul256" "seoul256"
"solarized_dark" "solarized_dark"
"solarized_light"
"tomorrow" "tomorrow"
"wombat" "wombat"
]; ];
@ -224,7 +231,7 @@ in {
local buf_ft = vim.api.nvim_get_option_value('filetype', {}) local buf_ft = vim.api.nvim_get_option_value('filetype', {})
-- List of buffer types to exclude -- List of buffer types to exclude
local excluded_buf_ft = {"toggleterm", "NvimTree", "TelescopePrompt"} local excluded_buf_ft = {"toggleterm", "NvimTree", "neo-tree", "TelescopePrompt"}
-- Check if the current buffer type is in the excluded list -- Check if the current buffer type is in the excluded list
for _, excluded_type in ipairs(excluded_buf_ft) do for _, excluded_type in ipairs(excluded_buf_ft) do

View file

@ -0,0 +1,72 @@
{
config,
lib,
}: let
inherit (lib.options) mkOption;
inherit (lib.nvim.types) hexColorType;
in {
base00 = mkOption {
type = hexColorType;
default = "#1e1e2e";
};
base01 = mkOption {
type = hexColorType;
default = "#181825";
};
base02 = mkOption {
type = hexColorType;
default = "#313244";
};
base03 = mkOption {
type = hexColorType;
default = "#45475a";
};
base04 = mkOption {
type = hexColorType;
default = "#585b70";
};
base05 = mkOption {
type = hexColorType;
default = "#cdd6f4";
};
base06 = mkOption {
type = hexColorType;
default = "#f5e0dc";
};
base07 = mkOption {
type = hexColorType;
default = "#b4befe";
};
base08 = mkOption {
type = hexColorType;
default = "#f38ba8";
};
base09 = mkOption {
type = hexColorType;
default = "#fab387";
};
base0A = mkOption {
type = hexColorType;
default = "#a6e3a1";
};
base0B = mkOption {
type = hexColorType;
default = "#94e2d5";
};
base0C = mkOption {
type = hexColorType;
default = "#a6e3a1";
};
base0D = mkOption {
type = hexColorType;
default = "#89b4fa";
};
base0E = mkOption {
type = hexColorType;
default = "#cba6f4";
};
base0F = mkOption {
type = hexColorType;
default = "#f2cdcd";
};
}

View file

@ -4,7 +4,15 @@
}: let }: let
inherit (lib.strings) optionalString; inherit (lib.strings) optionalString;
inherit (lib.trivial) boolToString warnIf; inherit (lib.trivial) boolToString warnIf;
inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.theme;
in { in {
base16-nvim = {
setup = {base16-colors, ...}: ''
-- Base-16 theme
require('base16-colorscheme').setup(${toLuaObject cfg.base16-colors})
'';
};
onedark = { onedark = {
setup = {style ? "dark", ...}: '' setup = {style ? "dark", ...}: ''
-- OneDark theme -- OneDark theme
@ -20,6 +28,7 @@ in {
setup = { setup = {
style ? "night", style ? "night",
transparent, transparent,
...
}: '' }: ''
require('tokyonight').setup { require('tokyonight').setup {
transparent = ${boolToString transparent}; transparent = ${boolToString transparent};
@ -42,6 +51,7 @@ in {
setup = { setup = {
style ? "mocha", style ? "mocha",
transparent ? false, transparent ? false,
...
}: '' }: ''
-- Catppuccin theme -- Catppuccin theme
require('catppuccin').setup { require('catppuccin').setup {
@ -69,7 +79,7 @@ in {
notify = true, -- nvim-notify notify = true, -- nvim-notify
which_key = true, which_key = true,
navic = { navic = {
enabled = false, enabled = true,
custom_bg = "NONE", -- "lualine" will set background to mantle custom_bg = "NONE", -- "lualine" will set background to mantle
}, },
}, },

View file

@ -13,13 +13,16 @@
supportedThemes = import ./supported-themes.nix { supportedThemes = import ./supported-themes.nix {
inherit lib config; inherit lib config;
}; };
base16-colors = import ./base16-colors.nix {
inherit lib config;
};
in { in {
options.vim.theme = { options.vim.theme = {
enable = mkOption { enable = mkOption {
type = bool; type = bool;
description = "Enable theming"; description = "Enable theming";
}; };
inherit base16-colors;
name = mkOption { name = mkOption {
type = enum (attrNames supportedThemes); type = enum (attrNames supportedThemes);
description = "Supported themes can be found in `supportedThemes.nix`"; description = "Supported themes can be found in `supportedThemes.nix`";
@ -29,7 +32,6 @@ in {
type = enum supportedThemes.${cfg.name}.styles; type = enum supportedThemes.${cfg.name}.styles;
description = "Specific style for theme if it supports it"; description = "Specific style for theme if it supports it";
}; };
transparent = mkOption { transparent = mkOption {
type = bool; type = bool;
default = false; default = false;
@ -45,10 +47,12 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
vim = { vim = {
startPlugins = [cfg.name]; startPlugins = [cfg.name];
luaConfigRC.theme = entryBefore ["pluginConfigs"] '' luaConfigRC = {
theme = entryBefore ["pluginConfigs"] ''
${cfg.extraConfig} ${cfg.extraConfig}
${supportedThemes.${cfg.name}.setup {inherit (cfg) style transparent;}} ${supportedThemes.${cfg.name}.setup {inherit (cfg) style transparent base16-colors;}}
''; '';
}; };
}; };
};
} }