voidconf/modules/vim.nix
2024-02-17 18:49:37 +01:00

65 lines
1.5 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let cfg = config.voidconf.vim;
in {
options.voidconf.vim = {
enable = mkEnableOption "Enables opinionated vim configuration";
enableNvim = mkEnableOption "Enables neovim and alias";
setEnvVar = mkOption {
type = types.bool;
default = true;
description = ''
Set 'vim' as $EDITOR
'';
};
};
config = mkIf cfg.enable {
programs.nano.enable = false;
environment = {
variables = mkIf cfg.setEnvVar { EDITOR = "vim"; };
systemPackages = with pkgs; [
(mkIf cfg.enableNvim (neovim.override { vimAlias = true; }))
((vim_configurable.override { }).customize {
name = "vim";
vimrcConfig = {
packages.myplugs = with pkgs.vimPlugins; {
start = [ vim-nix ];
opt = [];
};
customRC = ''
syntax on
set nocompatible
set ignorecase
set hlsearch
set incsearch
set autoindent
set smartindent
set wildmenu
set expandtab
set shiftwidth=4
set tabstop=4
set number
set relativenumber
set mouse=
set listchars=tab:\ ,trail:·
set list
set scrolloff=3
set notimeout
set backspace=2
au FileType nix setlocal shiftwidth=2 tabstop=2 expandtab
au FileType haskell,tex setlocal shiftwidth=4 tabstop=4 expandtab
'';
};
})
];
};
};
}