From 4b9f76b76418d91fdcb382d33822a795c74b909b Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Mon, 6 May 2024 02:18:36 +0300 Subject: [PATCH] profiles: add base profile --- flake.nix | 4 ++ modules/profiles/base.nix | 96 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 modules/profiles/base.nix diff --git a/flake.nix b/flake.nix index 1802a06..7947d99 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,9 @@ in { lib = { inherit mkNixeovim mkNixeovimPackage; }; + profiles = { + base = ./modules/profiles/base.nix; + }; } // flake-utils.lib.eachDefaultSystem ( system: @@ -27,6 +30,7 @@ { packages = { default = nixeovimPackage { }; + base = nixeovimPackage ./modules/profiles/base.nix; }; } ); diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix new file mode 100644 index 0000000..156ea66 --- /dev/null +++ b/modules/profiles/base.nix @@ -0,0 +1,96 @@ +{ config, lib, ... }: + +{ + vim.opt = { + # Better Unix support + viewoptions = lib.mkDefault [ "folds" "options" "cursor" "unix" "slash" ]; + encoding = lib.mkDefault "utf-8"; + + # Enable 24-bit color + termguicolors = lib.mkDefault true; + + # Other options + backspace = lib.mkDefault [ "indent" "eol" "start" ]; + laststatus = lib.mkDefault 2; + showmode = lib.mkDefault false; + + # Tabs as spaces + expandtab = lib.mkDefault true; + tabstop = lib.mkDefault 2; + softtabstop = lib.mkDefault 2; + shiftwidth = lib.mkDefault 2; + + # Fixes broken cursor on Linux + guicursor = lib.mkDefault ""; + + # Disable mouse / touchpad + mouse = lib.mkDefault ""; + + # Incremental substitutin + inccommand = lib.mkDefault "split"; + + # Hide files when leaving them. + hidden = lib.mkDefault true; + # Show line numbers. + number = lib.mkDefault true; + # Minimum line number column width. + numberwidth = lib.mkDefault 1; + # Number of screen lines to use for the commandline. + cmdheight = lib.mkDefault 2; + # Lines length limit (0 if no limit). + textwidth = lib.mkDefault 0; + # Don't cut lines in the middle of a work. + linebreak = lib.mkDefault true; + # Show matching parenthesis. + showmatch = lib.mkDefault true; + # Time during which the matching parenthesis is shown. + matchtime = lib.mkDefault 2; + # Sensible default line auto cutting and formatting. + formatoptions = lib.mkDefault "jtcrq"; + # Copy/Past to/from clipboard. + clipboard = lib.mkDefault "unnamedplus"; + # Highlight line cursor is currently on. + cursorline = lib.mkDefault true; + # Invisible characters representation when :set list + listchars = lib.mkDefault { + tab = "→ "; + trail = "~"; + nbsp = "␣"; + eol = "¬"; + }; + + # Search + # Incremental search. + incsearch = lib.mkDefault true; + # Case insensitive. + ignorecase = lib.mkDefault true; + # Case insensitive if no uppercase letter in pattern, case sensitive otherwise. + smartcase = lib.mkDefault true; + + # Fold level + foldlevel = lib.mkDefault 99; + foldlevelstart = lib.mkDefault 99; + foldminlines = lib.mkDefault 3; + foldnestmax = lib.mkDefault 5; + }; + + plugins.navigation.nvim-tree.enable = lib.mkDefault true; + + vim.keymap.set = with lib.nix2lua; [ + { mode = "n"; lhs = ""; rhs = lambda0 (set "vim.opt.hlsearch" false); desc = "Clear search highlighting"; } + ] + ++ lib.optionals config.plugins.navigation.nvim-tree.enable [ + { + mode = "n"; + lhs = "nt"; + rhs = "NvimTreeToggle"; + desc = "Open/Close file tree"; + } + { + mode = "n"; + lhs = "nf"; + rhs = "NvimTreeFindFile"; + desc = "Open file tree and find current file"; + } + ]; +}