{ pkgs, inputs, ... }: { imports = [inputs.nixvim.homeModules.nixvim]; home.sessionVariables = { EDITOR = "nvim"; VISUAL = "nvim"; }; home.packages = with pkgs; [ git gnumake gcc ripgrep fd stylua black nixfmt-rfc-style # nixfmt ]; programs.nixvim = { enable = true; viAlias = true; vimAlias = true; colorschemes.catppuccin = { enable = true; settings.flavour = "mocha"; }; globals.mapleader = " "; opts = { number = false; relativenumber = false; ignorecase = true; smartcase = true; }; clipboard.register = "unnamedplus"; # Use system clipboard keymaps = [ { action = "Telescope live_grep"; key = "/"; } { action = "Telescope find_files"; key = ""; } { action = "Telescope file_browser path=%:p:h"; key = "."; } { action = "Neogit"; key = "gg"; } { key = ""; action = "lua require('conform').format()write"; mode = [ "i" "x" "n" "s" ]; } ]; plugins = { lualine.enable = true; commentary.enable = true; which-key.enable = true; treesitter.enable = true; # enables all grammar packages neogit.enable = true; # like magit trouble.enable = true; web-devicons.enable = true; orgmode.enable = true; # org-mode support # Shows file trees oil = { enable = true; settings = { view_options.show_hidden = true; }; }; # Code formatting conform-nvim = { enable = true; settings.formatters_by_ft = { lua = ["stylua"]; python = ["black"]; nix = ["nixfmt"]; }; # extraOptions = { # default_format_opts.lsp_format = "fallback"; # }; }; # autocomplete cmp = { enable = true; autoEnableSources = true; settings.sources = [ {name = "nvim_lsp";} {name = "path";} {name = "buffer";} ]; settings.mapping = { "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; "" = "cmp.mapping.select_next_item()"; "" = "cmp.mapping.select_prev_item()"; "" = "cmp.mapping.abort()"; "" = "cmp.mapping.confirm({ select = true })"; }; }; # Fuzzy finder telescope = { enable = true; settings.defaults.mappings = { i = { "".__raw = "require('telescope.actions').move_selection_next"; "".__raw = "require('telescope.actions').move_selection_previous"; "".__raw = "require('telescope.actions').select_default"; }; }; extensions = { fzf-native.enable = true; file-browser = { enable = true; settings = { hidden = true; # show hidden files follow_symlinks = true; no_ignore = true; }; }; }; }; lsp = { enable = true; # includes lsp-config, default settings for the lsps servers = { rust_analyzer = { enable = true; installCargo = true; installRustc = true; }; nixd.enable = true; # nix pyright.enable = true; # python dockerls.enable = true; # docker lua_ls.enable = true; # lua clangd.enable = true; # c, c++ dartls.enable = true; # dart, flutter digestif.enable = true; # latex tinymist.enable = true; # typst }; }; }; }; }