diff --git a/flake.nix b/flake.nix index 67828a9..7599ef4 100644 --- a/flake.nix +++ b/flake.nix @@ -43,6 +43,7 @@ ./home-manager/modules/shell/zsh/default.nix ./home-manager/modules/shell/direnv.nix ./home-manager/modules/topgrade.nix + ./home-manager/modules/neovim.nix ]; # Optionally use extraSpecialArgs diff --git a/home-manager/home.nix b/home-manager/home.nix index ec1e1c3..0b0f374 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -13,6 +13,7 @@ direnv.enable = true; }; topgrade.enable = true; + neovim.enable = true; }; home.packages = with pkgs; [ @@ -39,58 +40,6 @@ # '') ]; - programs = { - neovim = let - toLua = str: '' - lua << EOF - ${str} - EOF - ''; - in { - # https://www.youtube.com/watch?v=YZAnJ0rwREA - enable = true; - viAlias = true; - vimAlias = true; - # vimdiffAlias = true; - - plugins = with pkgs.vimPlugins; [ - { - plugin = dracula-nvim; - config = "colorscheme dracula"; - } - { - plugin = comment-nvim; - config = toLua ''require("Comment").setup()''; - } - - # nix file support - vim-nix - - # Syntax highlighting - (nvim-treesitter.withPlugins (p: [ - p.tree-sitter-nix - p.tree-sitter-vim - p.tree-sitter-bash - p.tree-sitter-lua - p.tree-sitter-python - p.tree-sitter-json - p.tree-sitter-cpp - p.tree-sitter-rust - ])) - ]; - - extraConfig = '' - set clipboard=unnamedplus - ''; - - extraLuaConfig = '' - vim.o.termguicolors = true - ''; - - }; - - }; - home.file = { # # Building this configuration will create a copy of 'dotfiles/screenrc' in # # the Nix store. Activating the configuration will then make '~/.screenrc' a diff --git a/home-manager/modules/neovim.nix b/home-manager/modules/neovim.nix new file mode 100644 index 0000000..2839c25 --- /dev/null +++ b/home-manager/modules/neovim.nix @@ -0,0 +1,61 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.modules.neovim; +in { + options.modules.neovim = { enable = mkOption { default = false; }; }; + + config = mkIf cfg.enable { + programs = { + neovim = let + toLua = str: '' + lua << EOF + ${str} + EOF + ''; + in { + # https://www.youtube.com/watch?v=YZAnJ0rwREA + enable = true; + viAlias = true; + vimAlias = true; + # vimdiffAlias = true; + + plugins = with pkgs.vimPlugins; [ + { + plugin = dracula-nvim; + config = "colorscheme dracula"; + } + { + plugin = comment-nvim; + config = toLua ''require("Comment").setup()''; + } + + # nix file support + vim-nix + + # Syntax highlighting + (nvim-treesitter.withPlugins (p: [ + p.tree-sitter-nix + p.tree-sitter-vim + p.tree-sitter-bash + p.tree-sitter-lua + p.tree-sitter-python + p.tree-sitter-json + p.tree-sitter-cpp + p.tree-sitter-rust + ])) + ]; + + extraConfig = '' + set clipboard=unnamedplus + ''; + + extraLuaConfig = '' + vim.o.termguicolors = true + ''; + + }; + }; + }; +}