# Home-manager module { pkgs, lib, ... }: let # installs a vim plugin from git with a given tag / branch plugin = owner: repo: rev: hash: pkgs.vimUtils.buildVimPlugin { pname = "${lib.strings.sanitizeDerivationName repo}"; version = rev; src = pkgs.fetchFromGitHub { inherit rev owner repo hash; }; }; in { xdg.configFile = { "../.gradle/gradle.properties".source = pkgs.writeText "gradle.properties" '' org.gradle.java.home = ${pkgs.temurin-bin-17} ''; }; home.packages = with pkgs; [ gradle gradle-completion # FIXME: not working ]; programs = { java = { enable = true; package = pkgs.temurin-bin-17; }; neovim = { enable = true; package = pkgs.neovim-nightly; withNodeJs = true; withPython3 = true; withRuby = false; defaultEditor = true; viAlias = true; vimAlias = true; extraConfig = with lib.strings; '' ${fileContents ./config/base.vim} ''; extraLuaConfig = with lib.strings; '' ${fileContents ./config/config.lua} ''; extraPackages = with pkgs; [ nodejs_latest nodePackages.npm nodePackages.neovim gradle bat nil ]; extraPython3Packages = with pkgs.python311Packages; [ pylint ]; coc = { enable = true; settings = { # General "colors.enable" = true; "coc.preferences.formatOnType" = true; "diagnostic.checkCurrentLine" = true; "inlayHint.enable" = false; # Eslint "eslint.format.enable" = true; "eslint.autoFixOnSave" = true; # Stylelint FIXME: not working "stylelintplus.enable" = true; "stylelintplus.cssInJs" = true; "stylelintplus.autoFixOnSave" = true; "stylelintplus.autoFixOnFormat" = true; "css.validate" = false; "less.validate" = false; "scss.validate" = false; "wxss.validate" = false; # Lua lsp "Lua.misc.parameters" = [ "--metapath" "~/.cache/sumneko_lua/meta" "--logpath" "~/.cache/sumneko_lua/log" ]; "Lua.workspace.library" = [ "$\{3rd\}/luv/library" ]; sumneko-lua = { serverDir = "${pkgs.lua-language-server}/share/lua-language-server"; enableNvimLuaDev = true; }; # Nix languageserver = { nix = { command = "nil"; filetypes = [ "nix" ]; rootPatterns = [ "flake.nix" ]; }; }; # Misc "java.jdt.ls.java.home" = "${pkgs.temurin-bin-17}"; "bashIde.shellcheckPath" = "${pkgs.shellcheck}/bin/shellcheck"; }; }; plugins = with pkgs.vimPlugins; [ vim-which-key coc-java coc-css # Lua coc-sumneko-lua neodev-nvim coc-highlight coc-json coc-pyright coc-sh coc-snippets coc-vimlsp coc-yaml coc-toml coc-markdownlint coc-tsserver coc-eslint coc-stylelintplus coc-fzf fzfWrapper fzf-vim nvim-treesitter nvim-treesitter.withAllGrammars nvim-autopairs dracula-nvim (plugin "lukas-reineke" "indent-blankline.nvim" "046e2cf04e08ece927bacbfb87c5b35c0b636546" "sha256-bhoep8aTYje5K/dZ/XmpwBPn4PBEMPrmw33QJdfFe6M=") gitsigns-nvim lualine-nvim (plugin "echasnovski" "mini.map" "75b7ca9443e17c852b24055b32f74a880cf48053" "sha256-CoMc6yQXXAW1wzcD9eJGuM+kcOJghuwHjKrqEMxZBec=") neo-tree-nvim # to explore more fugitive todo-comments-nvim ]; }; }; }