From d058da71982b39545e12c516712da922aad0fe47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Sat, 27 Dec 2025 06:35:20 +0100 Subject: [PATCH] vim-typewriter --- configs/neovim.nix | 2 +- flake.nix | 3 +- packages/vim-kmein/default.nix | 6 +--- packages/vim-typewriter.nix | 53 ++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 packages/vim-typewriter.nix diff --git a/configs/neovim.nix b/configs/neovim.nix index 3d90f71..e848de2 100644 --- a/configs/neovim.nix +++ b/configs/neovim.nix @@ -34,7 +34,7 @@ }; environment.systemPackages = [ - (pkgs.writers.writeDashBin "vim" ''neovim "$@"'') + pkgs.vim-typewriter (pkgs.vim-kmein.override { # stylixColors = config.lib.stylix.colors; colorscheme = "base16-gruvbox-dark-medium"; diff --git a/flake.nix b/flake.nix index d7d1960..5c0dc19 100644 --- a/flake.nix +++ b/flake.nix @@ -264,6 +264,7 @@ noise-waves = prev.callPackage packages/noise-waves.nix { }; notemenu = prev.callPackage packages/notemenu.nix { }; obsidian-vim = prev.callPackage packages/obsidian-vim.nix { }; + vim-typewriter = prev.callPackage packages/vim-typewriter.nix { }; polyglot = prev.callPackage packages/polyglot.nix { }; q = prev.callPackage packages/q.nix { }; qrpaste = prev.callPackage packages/qrpaste.nix { }; @@ -460,7 +461,7 @@ }; in { - inherit (pkgs) auc swallow cheat-sh hc kpaste noise-waves trans stag qrpaste new-mac scanned default-gateway kirciuoklis tocharian-font image-convert-favicon image-convert-tolino heuretes mpv-tv mpv-iptv devanagari literature-quote booksplit manual-sort wttr emailmenu closest mpv-radio mpv-tuner cro nix-git text2pdf betacode brassica ipa polyglot jsesh gfs-fonts vim-kmein vimv brainmelter cyberlocker-tools pls untilport radio-news vg ttspaste depp fkill fzfmenu unicodmenu dmenu-randr notemenu man-pdf mansplain opustags q timer rfc gimp obsidian-vim devour go-webring random-zeno stardict-tools weechat-declarative klem radioStreams; + inherit (pkgs) auc swallow cheat-sh hc kpaste noise-waves trans stag qrpaste new-mac scanned default-gateway kirciuoklis tocharian-font image-convert-favicon image-convert-tolino heuretes mpv-tv mpv-iptv devanagari literature-quote booksplit manual-sort wttr emailmenu closest mpv-radio mpv-tuner cro nix-git text2pdf betacode brassica ipa polyglot jsesh gfs-fonts vim-kmein vimv brainmelter cyberlocker-tools pls untilport radio-news vg ttspaste depp fkill fzfmenu unicodmenu dmenu-randr notemenu man-pdf mansplain opustags q timer rfc gimp obsidian-vim devour go-webring random-zeno stardict-tools weechat-declarative klem radioStreams vim-typewriter ; } ); }; diff --git a/packages/vim-kmein/default.nix b/packages/vim-kmein/default.nix index 2aca1f7..6d10e95 100644 --- a/packages/vim-kmein/default.nix +++ b/packages/vim-kmein/default.nix @@ -10,6 +10,7 @@ ... }: (neovim.override { configure = { + vimAliases = true; customRC = '' source ${./shared.vim} source ${./init.vim} @@ -41,11 +42,6 @@ copilot-vim - goyo - limelight-vim - vimPlugins.mdwa-nvim - vimPlugins.vim-ernest - fzf-vim fzfWrapper supertab diff --git a/packages/vim-typewriter.nix b/packages/vim-typewriter.nix new file mode 100644 index 0000000..ec0c5e1 --- /dev/null +++ b/packages/vim-typewriter.nix @@ -0,0 +1,53 @@ +{ + neovim, + vimPlugins, + writers, + ... +}: +let + vim-typewriter = neovim.override { + configure = { + customRC = '' + source ${./vim-kmein/shared.vim} + + function! s:goyo_enter() + let b:quitting = 0 + let b:quitting_bang = 0 + autocmd QuitPre let b:quitting = 1 + cabbrev q! let b:quitting_bang = 1 q! + Limelight + endfunction + + function! s:goyo_leave() + Limelight! + " Quit Vim if this is the only remaining buffer + if b:quitting && len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1 + if b:quitting_bang + qa! + else + qa + endif + endif + endfunction + + + let g:limelight_conceal_ctermfg = 'gray' + let g:limelight_conceal_guifg = 'DarkGray' + let g:limelight_default_coefficient = 0.5 + let g:limelight_paragraph_span = 0 + + + autocmd! User GoyoEnter call goyo_enter() + autocmd! User GoyoLeave call goyo_leave() + autocmd VimEnter * Goyo + ''; + packages.nvim.start = [ + vimPlugins.goyo + vimPlugins.limelight-vim + vimPlugins.mdwa-nvim + vimPlugins.vim-ernest + ]; + }; + }; +in +writers.writeDashBin "vim-typewriter" ''${vim-typewriter}/bin/nvim "$@"''