add: nixvim
This commit is contained in:
		
							parent
							
								
									e5fba5a6fd
								
							
						
					
					
						commit
						546ece2d97
					
				
					 10 changed files with 421 additions and 149 deletions
				
			
		|  | @ -3,7 +3,7 @@ | |||
| 
 | ||||
|   imports = [ | ||||
|     ./helix | ||||
|     # ./nvim | ||||
|     ./nvim | ||||
|   ]; | ||||
| 
 | ||||
|   options.homeModules.console.editor = { | ||||
|  |  | |||
|  | @ -5,23 +5,33 @@ let | |||
| in | ||||
| { | ||||
| 
 | ||||
|   # imports = [ | ||||
|   #   ./languages.nix | ||||
|   # ]; | ||||
|   imports = [ | ||||
|     ./languages.nix | ||||
|   ]; | ||||
|    | ||||
|   config = lib.mkIf cfg.enable { | ||||
|     home.packages = with pkgs; [ | ||||
|       marksman | ||||
|       clang-tools | ||||
|       nil | ||||
|       nodePackages.bash-language-server | ||||
|       nodePackages.vscode-css-languageserver-bin | ||||
|       nodePackages.vscode-langservers-extracted | ||||
|       shellcheck | ||||
|     ]; | ||||
|     programs.helix = { | ||||
|       enable = true; | ||||
|       defaultEditor = lib.mkIf cfg.default true; | ||||
|       package = inputs.helix.packages.${pkgs.system}.default.overrideAttrs (old: { | ||||
|         makeWrapperArgs = with pkgs; | ||||
|           old.makeWrapperArgs | ||||
|           or [] | ||||
|           ++ [ | ||||
|             "--suffix" | ||||
|             "PATH" | ||||
|             ":" | ||||
|             (lib.makeBinPath [ | ||||
|               clang-tools | ||||
|               marksman | ||||
|               nil | ||||
|               nodePackages.bash-language-server | ||||
|               nodePackages.vscode-css-languageserver-bin | ||||
|               nodePackages.vscode-langservers-extracted | ||||
|               shellcheck | ||||
|             ]) | ||||
|           ]; | ||||
|       }); | ||||
|       settings = { | ||||
|         theme = colorscheme.slug; | ||||
|         editor = { | ||||
|  |  | |||
|  | @ -1,107 +1,106 @@ | |||
| { pkgs, lib, config, ... }:  | ||||
| 
 | ||||
| let | ||||
|   cfg = config.homeModules.console.editor.helix; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: { | ||||
|   programs.helix.languages = { | ||||
|     language = let | ||||
|       deno = lang: { | ||||
|         command = "${pkgs.deno}/bin/deno"; | ||||
|         args = ["fmt" "-" "--ext" lang]; | ||||
|       }; | ||||
|   config = lib.mkIf cfg.enable { | ||||
|     programs.helix.languages = { | ||||
|       language = let | ||||
|         deno = lang: { | ||||
|           command = "${pkgs.deno}/bin/deno"; | ||||
|           args = ["fmt" "-" "--ext" lang]; | ||||
|         }; | ||||
| 
 | ||||
|       prettier = lang: { | ||||
|         command = "${pkgs.nodePackages.prettier}/bin/prettier"; | ||||
|         args = ["--parser" lang]; | ||||
|       }; | ||||
|       prettierLangs = map (e: { | ||||
|         name = e; | ||||
|         formatter = prettier e; | ||||
|       }); | ||||
|       langs = ["css" "scss" "html"]; | ||||
|     in | ||||
|       [ | ||||
|         { | ||||
|           name = "bash"; | ||||
|           auto-format = true; | ||||
|           formatter = { | ||||
|             command = "${pkgs.shfmt}/bin/shfmt"; | ||||
|             args = ["-i" "2"]; | ||||
|           }; | ||||
|         } | ||||
|         { | ||||
|           name = "clojure"; | ||||
|           injection-regex = "(clojure|clj|edn|boot|yuck)"; | ||||
|           file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot" "yuck"]; | ||||
|         } | ||||
|         { | ||||
|           name = "javascript"; | ||||
|           auto-format = true; | ||||
|           language-servers = ["deno-lsp"]; | ||||
|         } | ||||
|         { | ||||
|           name = "json"; | ||||
|           formatter = deno "json"; | ||||
|         } | ||||
|         { | ||||
|           name = "markdown"; | ||||
|           auto-format = true; | ||||
|           formatter = deno "md"; | ||||
|         } | ||||
|         { | ||||
|           name = "typescript"; | ||||
|           auto-format = true; | ||||
|           language-servers = ["deno-lsp"]; | ||||
|         } | ||||
|       ] | ||||
|       ++ prettierLangs langs; | ||||
|         prettier = lang: { | ||||
|           command = "${pkgs.nodePackages.prettier}/bin/prettier"; | ||||
|           args = ["--parser" lang]; | ||||
|         }; | ||||
|         prettierLangs = map (e: { | ||||
|           name = e; | ||||
|           formatter = prettier e; | ||||
|         }); | ||||
|         langs = ["css" "scss" "html"]; | ||||
|       in | ||||
|         [ | ||||
|           { | ||||
|             name = "bash"; | ||||
|             auto-format = true; | ||||
|             formatter = { | ||||
|               command = "${pkgs.shfmt}/bin/shfmt"; | ||||
|               args = ["-i" "2"]; | ||||
|             }; | ||||
|           } | ||||
|           { | ||||
|             name = "clojure"; | ||||
|             injection-regex = "(clojure|clj|edn|boot|yuck)"; | ||||
|             file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot" "yuck"]; | ||||
|           } | ||||
|           { | ||||
|             name = "javascript"; | ||||
|             auto-format = true; | ||||
|             language-servers = ["deno-lsp"]; | ||||
|           } | ||||
|           { | ||||
|             name = "json"; | ||||
|             formatter = deno "json"; | ||||
|           } | ||||
|           { | ||||
|             name = "markdown"; | ||||
|             auto-format = true; | ||||
|             formatter = deno "md"; | ||||
|           } | ||||
|         ] | ||||
|         ++ prettierLangs langs; | ||||
| 
 | ||||
|     language-server = { | ||||
|       bash-language-server = { | ||||
|         command = "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server"; | ||||
|         args = ["start"]; | ||||
|       }; | ||||
|       language-server = { | ||||
|         bash-language-server = { | ||||
|           command = "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server"; | ||||
|           args = ["start"]; | ||||
|         }; | ||||
| 
 | ||||
|       clangd = { | ||||
|         command = "${pkgs.clang-tools}/bin/clangd"; | ||||
|         clangd.fallbackFlags = ["-std=c++2b"]; | ||||
|       }; | ||||
|         clangd = { | ||||
|           command = "${pkgs.clang-tools}/bin/clangd"; | ||||
|           clangd.fallbackFlags = ["-std=c++2b"]; | ||||
|         }; | ||||
| 
 | ||||
|       deno-lsp = { | ||||
|         command = "${pkgs.deno}/bin/deno"; | ||||
|         args = ["lsp"]; | ||||
|         environment.NO_COLOR = "1"; | ||||
|         config.deno = { | ||||
|           enable = true; | ||||
|           lint = true; | ||||
|           unstable = true; | ||||
|           suggest = { | ||||
|             completeFunctionCalls = false; | ||||
|             imports = {hosts."https://deno.land" = true;}; | ||||
|           }; | ||||
|           inlayHints = { | ||||
|             enumMemberValues.enabled = true; | ||||
|             functionLikeReturnTypes.enabled = true; | ||||
|             parameterNames.enabled = "all"; | ||||
|             parameterTypes.enabled = true; | ||||
|             propertyDeclarationTypes.enabled = true; | ||||
|             variableTypes.enabled = true; | ||||
|         deno-lsp = { | ||||
|           command = "${pkgs.deno}/bin/deno"; | ||||
|           args = ["lsp"]; | ||||
|           environment.NO_COLOR = "1"; | ||||
|           config.deno = { | ||||
|             enable = true; | ||||
|             lint = true; | ||||
|             unstable = true; | ||||
|             suggest = { | ||||
|               completeFunctionCalls = false; | ||||
|               imports = {hosts."https://deno.land" = true;}; | ||||
|             }; | ||||
|             inlayHints = { | ||||
|               enumMemberValues.enabled = true; | ||||
|               functionLikeReturnTypes.enabled = true; | ||||
|               parameterNames.enabled = "all"; | ||||
|               parameterTypes.enabled = true; | ||||
|               propertyDeclarationTypes.enabled = true; | ||||
|               variableTypes.enabled = true; | ||||
|             }; | ||||
|           }; | ||||
|         }; | ||||
|       }; | ||||
| 
 | ||||
|       nil = { | ||||
|         command = lib.getExe pkgs.nil; | ||||
|         config.nil.formatting.command = ["${lib.getExe pkgs.alejandra}" "-q"]; | ||||
|       }; | ||||
|         nil = { | ||||
|           command = lib.getExe pkgs.nil; | ||||
|           config.nil.formatting.command = ["${lib.getExe pkgs.alejandra}" "-q"]; | ||||
|         }; | ||||
| 
 | ||||
|       vscode-css-language-server = { | ||||
|         command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver"; | ||||
|         args = ["--stdio"]; | ||||
|         config = { | ||||
|           provideFormatter = true; | ||||
|           css.validate.enable = true; | ||||
|           scss.validate.enable = true; | ||||
|         vscode-css-language-server = { | ||||
|           command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver"; | ||||
|           args = ["--stdio"]; | ||||
|           config = { | ||||
|             provideFormatter = true; | ||||
|             css.validate.enable = true; | ||||
|             scss.validate.enable = true; | ||||
|           }; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|  |  | |||
|  | @ -0,0 +1,68 @@ | |||
| { config, lib, inputs, pkgs, ... }: | ||||
| 
 | ||||
| let | ||||
|   inherit (config.colorscheme) colors; | ||||
|   cfg = config.homeModules.console.editor.nvim; | ||||
| in | ||||
|    | ||||
| { | ||||
|   imports = [ | ||||
|     inputs.nixvim.homeManagerModules.nixvim | ||||
|   ]; | ||||
|    | ||||
|   config = lib.mkIf cfg.enable { | ||||
|     programs.neovim = { | ||||
|       viAlias = true; | ||||
|       vimAlias = true;   | ||||
|     }; | ||||
| 
 | ||||
|     programs.nixvim = { | ||||
|       enable = true; | ||||
| 
 | ||||
|       options = { | ||||
|         number = true; | ||||
|       }; | ||||
| 
 | ||||
|       globals = { | ||||
|         mapleader = " "; | ||||
|         updatetime = 200; | ||||
|         timeoutlen = 400; | ||||
|       }; | ||||
|        | ||||
|       plugins = { | ||||
|         lualine = { | ||||
|           enable = true; | ||||
|         }; | ||||
|         which-key = { | ||||
|           enable = true; | ||||
|         }; | ||||
|         indent-blankline = { | ||||
|           enable = true; | ||||
|         }; | ||||
|       };   | ||||
| 
 | ||||
|       colorschemes.base16 = { | ||||
|         enable = true; | ||||
|         colorscheme = config.colorscheme.slug; | ||||
|         customColorScheme = { | ||||
|           base00 = "#${colors.base00}"; | ||||
|           base01 = "#${colors.base01}"; | ||||
|           base02 = "#${colors.base02}"; | ||||
|           base03 = "#${colors.base03}"; | ||||
|           base04 = "#${colors.base04}"; | ||||
|           base05 = "#${colors.base05}"; | ||||
|           base06 = "#${colors.base06}"; | ||||
|           base07 = "#${colors.base07}"; | ||||
|           base08 = "#${colors.base08}"; | ||||
|           base09 = "#${colors.base09}"; | ||||
|           base0A = "#${colors.base0A}"; | ||||
|           base0B = "#${colors.base0B}"; | ||||
|           base0C = "#${colors.base0C}"; | ||||
|           base0D = "#${colors.base0D}"; | ||||
|           base0E = "#${colors.base0E}"; | ||||
|           base0F = "#${colors.base0F}"; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  | @ -18,6 +18,7 @@ | |||
|    | ||||
|     home.packages = with pkgs; [ | ||||
|       git-credential-1password | ||||
|       lazygit | ||||
|       ]; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -24,9 +24,11 @@ in | |||
|         enable = true; | ||||
|         default = true; | ||||
|       }; | ||||
|       terminal.foot = { | ||||
|         enable = true; | ||||
|         default = true; | ||||
|       terminal = { | ||||
|         foot = { | ||||
|           enable = true; | ||||
|           default = true; | ||||
|         }; | ||||
|       }; | ||||
|       themeSettings.enable = true; | ||||
|     }; | ||||
|  |  | |||
|  | @ -6,6 +6,8 @@ | |||
|   ]; | ||||
| 
 | ||||
|   activeProfiles = ["base" "hyprland"]; | ||||
| 
 | ||||
|   homeModules.console.editor.nvim.enable = true; | ||||
|    | ||||
|   monitors = [{ | ||||
|     name = "eDP-1"; | ||||
|  | @ -16,6 +18,6 @@ | |||
|     transform = 0; | ||||
|   }]; | ||||
| 
 | ||||
|   colorscheme = inputs.nix-colors.colorSchemes.catppuccin-mocha; | ||||
|   colorscheme = inputs.nix-colors.colorSchemes.everforest; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue