diff --git a/flake.nix b/flake.nix index a58f455..ef16b31 100644 --- a/flake.nix +++ b/flake.nix @@ -108,6 +108,13 @@ dotfilesRepo = "git@github.com:nmasur/dotfiles"; }; + # Common overlays to always use + overlays = [ + inputs.nur.overlay + inputs.nix2vim.overlay + (import ./modules/neovim/plugins-overlay.nix inputs) + ]; + # System types to support. supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; @@ -118,13 +125,13 @@ in rec { nixosConfigurations = { - desktop = import ./hosts/desktop { inherit inputs globals; }; - wsl = import ./hosts/wsl { inherit inputs globals; }; - oracle = import ./hosts/oracle { inherit inputs globals; }; + desktop = import ./hosts/desktop { inherit inputs globals overlays; }; + wsl = import ./hosts/wsl { inherit inputs globals overlays; }; + oracle = import ./hosts/oracle { inherit inputs globals overlays; }; }; darwinConfigurations = { - macbook = import ./hosts/macbook { inherit inputs globals; }; + macbook = import ./hosts/macbook { inherit inputs globals overlays; }; }; # For quickly applying local settings with: @@ -140,42 +147,26 @@ packages = forAllSystems (system: { aws = { - "${system}" = import ./hosts/aws { inherit inputs globals system; }; + "${system}" = + import ./hosts/aws { inherit inputs globals system overlays; }; }; - neovim = let - pkgs = import nixpkgs { - inherit system; - overlays = [ - (import ./modules/neovim/plugins-overlay.nix inputs) - inputs.nix2vim.overlay - ]; + neovim = let pkgs = import nixpkgs { inherit system overlays; }; + in import ./modules/neovim/package { + inherit pkgs; + colors = import ./modules/colorscheme/gruvbox/neovim-gruvbox.nix { + inherit pkgs; }; - in pkgs.neovimBuilder { - package = pkgs.neovim-unwrapped; - imports = [ - ./modules/neovim/plugins/gitsigns.nix - ./modules/neovim/plugins/misc.nix - ./modules/neovim/plugins/syntax.nix - ./modules/neovim/plugins/statusline.nix - ./modules/neovim/plugins/bufferline.nix - ./modules/neovim/plugins/telescope.nix - ./modules/neovim/plugins/lsp.nix - ./modules/neovim/plugins/completion.nix - ./modules/neovim/plugins/toggleterm.nix - ./modules/neovim/plugins/tree.nix - ./modules/colorscheme/gruvbox/neovim-gruvbox.nix - ]; }; }); apps = forAllSystems (system: - let pkgs = import nixpkgs { inherit system; }; + let pkgs = import nixpkgs { inherit system overlays; }; in import ./apps { inherit pkgs; }); devShells = forAllSystems (system: - let pkgs = import nixpkgs { inherit system; }; + let pkgs = import nixpkgs { inherit system overlays; }; in { # Used to run commands and edit files in this repo diff --git a/hosts/macbook/default.nix b/hosts/macbook/default.nix index 74e2f90..d3101d9 100644 --- a/hosts/macbook/default.nix +++ b/hosts/macbook/default.nix @@ -22,7 +22,7 @@ darwin.lib.darwinSystem { }; mailUser = globals.user; networking.hostName = "noah-masur-mac"; - nixpkgs.overlays = [ nur.overlay firefox-darwin.overlay ]; + nixpkgs.overlays = [ firefox-darwin.overlay ]; # Set registry to flake packages, used for nix X commands nix.registry.nixpkgs.flake = nixpkgs; } diff --git a/modules/colorscheme/gruvbox/default.nix b/modules/colorscheme/gruvbox/default.nix index 07441ed..43bec39 100644 --- a/modules/colorscheme/gruvbox/default.nix +++ b/modules/colorscheme/gruvbox/default.nix @@ -19,7 +19,7 @@ base0D = "#83a598"; # blue base0E = "#d3869b"; # purple base0F = "#d65d0e"; # brown - neovimConfig = ./neovim.lua; + neovimConfig = ./neovim-gruvbox.nix; batTheme = "gruvbox-dark"; }; light = { @@ -39,7 +39,7 @@ base0D = "#076678"; # blue base0E = "#8f3f71"; # purple base0F = "#d65d0e"; # brown - neovimConfig = ./neovim.lua; + neovimConfig = ./neovim-gruvbox.nix; batTheme = "gruvbox-light"; }; } diff --git a/modules/neovim/plugins/bufferline.nix b/modules/neovim/config/bufferline.nix similarity index 100% rename from modules/neovim/plugins/bufferline.nix rename to modules/neovim/config/bufferline.nix diff --git a/modules/neovim/plugins/completion.nix b/modules/neovim/config/completion.nix similarity index 100% rename from modules/neovim/plugins/completion.nix rename to modules/neovim/config/completion.nix diff --git a/modules/neovim/plugins/gitsigns.lua b/modules/neovim/config/gitsigns.lua similarity index 100% rename from modules/neovim/plugins/gitsigns.lua rename to modules/neovim/config/gitsigns.lua diff --git a/modules/neovim/plugins/gitsigns.nix b/modules/neovim/config/gitsigns.nix similarity index 100% rename from modules/neovim/plugins/gitsigns.nix rename to modules/neovim/config/gitsigns.nix diff --git a/modules/neovim/plugins/lsp.lua b/modules/neovim/config/lsp.lua similarity index 100% rename from modules/neovim/plugins/lsp.lua rename to modules/neovim/config/lsp.lua diff --git a/modules/neovim/plugins/lsp.nix b/modules/neovim/config/lsp.nix similarity index 100% rename from modules/neovim/plugins/lsp.nix rename to modules/neovim/config/lsp.nix diff --git a/modules/neovim/plugins/misc.nix b/modules/neovim/config/misc.nix similarity index 100% rename from modules/neovim/plugins/misc.nix rename to modules/neovim/config/misc.nix diff --git a/modules/neovim/plugins/statusline.nix b/modules/neovim/config/statusline.nix similarity index 100% rename from modules/neovim/plugins/statusline.nix rename to modules/neovim/config/statusline.nix diff --git a/modules/neovim/plugins/syntax.nix b/modules/neovim/config/syntax.nix similarity index 100% rename from modules/neovim/plugins/syntax.nix rename to modules/neovim/config/syntax.nix diff --git a/modules/neovim/plugins/telescope.lua b/modules/neovim/config/telescope.lua similarity index 100% rename from modules/neovim/plugins/telescope.lua rename to modules/neovim/config/telescope.lua diff --git a/modules/neovim/plugins/telescope.nix b/modules/neovim/config/telescope.nix similarity index 100% rename from modules/neovim/plugins/telescope.nix rename to modules/neovim/config/telescope.nix diff --git a/modules/neovim/plugins/toggleterm.lua b/modules/neovim/config/toggleterm.lua similarity index 100% rename from modules/neovim/plugins/toggleterm.lua rename to modules/neovim/config/toggleterm.lua diff --git a/modules/neovim/plugins/toggleterm.nix b/modules/neovim/config/toggleterm.nix similarity index 100% rename from modules/neovim/plugins/toggleterm.nix rename to modules/neovim/config/toggleterm.nix diff --git a/modules/neovim/plugins/tree.nix b/modules/neovim/config/tree.nix similarity index 100% rename from modules/neovim/plugins/tree.nix rename to modules/neovim/config/tree.nix diff --git a/modules/neovim/default.nix b/modules/neovim/default.nix index a52b63e..50dffdf 100644 --- a/modules/neovim/default.nix +++ b/modules/neovim/default.nix @@ -2,29 +2,13 @@ home-manager.users.${config.user} = { - home.packages = with pkgs; [ - neovim - gcc # for tree-sitter - tree-sitter # for tree-sitter-gitignore parser - nodejs # for tree-sitter-gitignore parser - shfmt # used everywhere - shellcheck # used everywhere + home.packages = [ + (import ./package { + inherit pkgs; + colors = import config.theme.colors.neovimConfig { inherit pkgs; }; + }) ]; - xdg.configFile = { - "nvim/init.lua".source = ./init.lua; - "nvim/lua" = { - source = ./lua; - recursive = true; # Allows adding more files - }; - "nvim/lua/packer/colors.lua".source = config.theme.colors.neovimConfig; - "nvim/lua/background.lua".text = '' - vim.o.background = "${ - if config.theme.dark == true then "dark" else "light" - }" - ''; - }; - programs.git.extraConfig.core.editor = "nvim"; home.sessionVariables = { EDITOR = "nvim"; @@ -39,16 +23,9 @@ }; }; - # Always run packer.nvim sync - home.activation.nvimPackerSync = - config.home-manager.users.${config.user}.lib.dag.entryAfter - [ "writeBoundary" ] '' - $DRY_RUN_CMD ${pkgs.neovim}/bin/nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync' - ''; - }; - # Used for icons in Vim - fonts.fonts = with pkgs; [ nerdfonts ]; + # # Used for icons in Vim + # fonts.fonts = with pkgs; [ nerdfonts ]; } diff --git a/modules/neovim/package/default.nix b/modules/neovim/package/default.nix new file mode 100644 index 0000000..1e70496 --- /dev/null +++ b/modules/neovim/package/default.nix @@ -0,0 +1,46 @@ +# { inputs, globals, extraConfig ? [ ], ... }: +# +# let +# +# pkgs = import inputs.nixpkgs { +# system = inputs.system; +# overlays = [ +# (import ./modules/neovim/plugins-overlay.nix inputs) +# inputs.nix2vim.overlay +# ]; +# }; +# +# in pkgs.neovimBuilder { +# package = pkgs.neovim-unwrapped; +# imports = [ +# ./modules/neovim/plugins/bufferline.nix +# ./modules/neovim/plugins/completion.nix +# ./modules/neovim/plugins/gitsigns.nix +# ./modules/neovim/plugins/lsp.nix +# ./modules/neovim/plugins/misc.nix +# ./modules/neovim/plugins/statusline.nix +# ./modules/neovim/plugins/syntax.nix +# ./modules/neovim/plugins/telescope.nix +# ./modules/neovim/plugins/toggleterm.nix +# ./modules/neovim/plugins/tree.nix +# ] ++ extraConfig; +# } + +{ pkgs, colors ? { }, ... }: + +pkgs.neovimBuilder { + package = pkgs.neovim-unwrapped; + imports = [ + ../config/bufferline.nix + ../config/completion.nix + ../config/gitsigns.nix + ../config/lsp.nix + ../config/misc.nix + ../config/statusline.nix + ../config/syntax.nix + ../config/telescope.nix + ../config/toggleterm.nix + ../config/tree.nix + colors + ]; +}