{ lib, config, ... }: let inherit (lib) optionalString nvim; cfg = config.vim; in { imports = [./options.nix]; config = { vim = { configRC.basic = nvim.dag.entryAfter ["globalsScript"] '' " Settings that are set for everything set encoding=utf-8 set mouse=${cfg.mouseSupport} set tabstop=${toString cfg.tabWidth} set shiftwidth=${toString cfg.tabWidth} set softtabstop=${toString cfg.tabWidth} set expandtab set cmdheight=${toString cfg.cmdHeight} set updatetime=${toString cfg.updateTime} set shortmess+=c set tm=${toString cfg.mapTimeout} set hidden set cursorlineopt=${toString cfg.cursorlineOpt} set scrolloff=${toString cfg.scrollOffset} ${optionalString cfg.debugMode.enable '' " Debug mode settings set verbose=${toString cfg.debugMode.level} set verbosefile=${cfg.debugMode.logFile} ''} ${optionalString cfg.splitBelow '' set splitbelow ''} ${optionalString cfg.splitRight '' set splitright ''} ${optionalString cfg.showSignColumn '' set signcolumn=yes ''} ${optionalString cfg.autoIndent '' set autoindent ''} ${optionalString cfg.preventJunkFiles '' set noswapfile set nobackup set nowritebackup ''} ${optionalString (cfg.bell == "none") '' set noerrorbells set novisualbell ''} ${optionalString (cfg.bell == "on") '' set novisualbell ''} ${optionalString (cfg.bell == "visual") '' set noerrorbells ''} ${optionalString (cfg.lineNumberMode == "relative") '' set relativenumber ''} ${optionalString (cfg.lineNumberMode == "number") '' set number ''} ${optionalString (cfg.lineNumberMode == "relNumber") '' set number relativenumber ''} ${optionalString cfg.useSystemClipboard '' set clipboard+=unnamedplus ''} ${optionalString cfg.mapLeaderSpace '' let mapleader=" " let maplocalleader=" " ''} ${optionalString cfg.syntaxHighlighting '' syntax on ''} ${optionalString (!cfg.wordWrap) '' set nowrap ''} ${optionalString cfg.hideSearchHighlight '' set nohlsearch set incsearch ''} ${optionalString cfg.colourTerm '' set termguicolors set t_Co=256 ''} ${optionalString (!cfg.enableEditorconfig) '' let g:editorconfig = v:false ''} ${optionalString (cfg.leaderKey != null) '' let mapleader = "${toString cfg.leaderKey}" ''} ${optionalString (cfg.searchCase == "ignore") '' set nosmartcase set ignorecase ''} ${optionalString (cfg.searchCase == "smart") '' set smartcase set ignorecase ''} ${optionalString (cfg.searchCase == "sensitive") '' set nosmartcase set noignorecase ''} ''; }; }; }