diff --git a/modules/neovide/hm.nix b/modules/neovide/hm.nix new file mode 100644 index 00000000..a69345bc --- /dev/null +++ b/modules/neovide/hm.nix @@ -0,0 +1,26 @@ +{ mkTarget, ... }: +mkTarget { + name = "neovide"; + humanName = "Neovide"; + configElements = [ + ( + { fonts }: + { + programs.neovide.settings.font = { + normal = [ fonts.monospace.name ]; + size = fonts.sizes.terminal; + }; + } + ) + ( + { opacity }: + { + programs.neovim.extraLuaConfig = '' + if vim.g.neovide then + vim.g.neovide_normal_opacity = ${toString opacity.terminal} + end + ''; + } + ) + ]; +} diff --git a/modules/neovide/meta.nix b/modules/neovide/meta.nix new file mode 100644 index 00000000..850f05e7 --- /dev/null +++ b/modules/neovide/meta.nix @@ -0,0 +1,6 @@ +{ lib, ... }: +{ + name = "Neovide"; + homepage = "https://neovide.dev/"; + maintainers = [ lib.maintainers.mightyiam ]; +} diff --git a/modules/neovide/nixvim.nix b/modules/neovide/nixvim.nix new file mode 100644 index 00000000..083be484 --- /dev/null +++ b/modules/neovide/nixvim.nix @@ -0,0 +1,8 @@ +# imported from `modules/nixvim/nixvim.nix` +stylix: { + extraConfigLua = '' + if vim.g.neovide then + vim.g.neovide_normal_opacity = ${toString stylix.opacity.terminal} + end + ''; +} diff --git a/modules/neovide/testbeds/neovide.nix b/modules/neovide/testbeds/neovide.nix new file mode 100644 index 00000000..aee8acfd --- /dev/null +++ b/modules/neovide/testbeds/neovide.nix @@ -0,0 +1,20 @@ +{ lib, pkgs, ... }: +let + package = pkgs.neovide; +in +{ + stylix.testbed.ui.application = { + name = "neovide"; + inherit package; + }; + + home-manager.sharedModules = lib.singleton { + programs = { + neovide = { + enable = true; + inherit package; + }; + neovim.enable = true; + }; + }; +} diff --git a/modules/nixvim/nixvim.nix b/modules/nixvim/nixvim.nix index e265efc4..c93bf317 100644 --- a/modules/nixvim/nixvim.nix +++ b/modules/nixvim/nixvim.nix @@ -135,7 +135,17 @@ in config = lib.mkMerge [ { - lib.stylix.nixvim.config = pluginConfigs.${cfg.plugin}; + lib.stylix.nixvim.config = { + imports = [ + (lib.modules.importApply ../neovide/nixvim.nix config.stylix) + ]; + config = lib.mkMerge [ + pluginConfigs.${cfg.plugin} + { + opts.guifont = "${config.stylix.fonts.monospace.name}:h${toString config.stylix.fonts.sizes.terminal}"; + } + ]; + }; } (lib.mkIf (config.stylix.enable && cfg.enable && options.programs ? nixvim) ( lib.optionalAttrs (options.programs ? nixvim) {