From b7f63f305d22cb53eacd0f0e7a94387a609a44a7 Mon Sep 17 00:00:00 2001 From: DannyDannyDanny Date: Mon, 8 Sep 2025 19:46:49 +0200 Subject: [PATCH] =?UTF-8?q?fix(neovim):=20guard=20NixOS=20module=20to=20Li?= =?UTF-8?q?nux=20for=20nix-darwin=20compatibility=20=F0=9F=94=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - wrap Neovim module in `lib.mkIf pkgs.stdenv.isLinux` (no-op on macOS) - add `lib` to module args - fix Lua message var: use `config_file` instead of undefined `file` - keep existing plugins and customRC on Linux unchanged --- nixos/hosts/macos.nix | 1 + nixos/neovim.nix | 141 +++++++++++++++++++++--------------------- 2 files changed, 73 insertions(+), 69 deletions(-) diff --git a/nixos/hosts/macos.nix b/nixos/hosts/macos.nix index 2a29fb6..f18411a 100644 --- a/nixos/hosts/macos.nix +++ b/nixos/hosts/macos.nix @@ -62,6 +62,7 @@ fzf cowsay lolcat + neovim ]; # Keep for darwin as well (tracks defaults across upgrades) diff --git a/nixos/neovim.nix b/nixos/neovim.nix index ed64a44..3d2b294 100644 --- a/nixos/neovim.nix +++ b/nixos/neovim.nix @@ -1,82 +1,85 @@ -{ config, pkgs, ... }: +{ lib, config, pkgs, ... }: { - programs.neovim = { - enable = true; - defaultEditor = true; - configure = { - customRC = '' - set title - set go=a - set mouse=a - set nohlsearch - set number - let mapleader="," + # Only apply the Neovim NixOS module options on Linux. + config = lib.mkIf pkgs.stdenv.isLinux { + programs.neovim = { + enable = true; + defaultEditor = true; - lua << EOF - local config_file = os.getenv("HOME")..'/.local/share/nvim_color_scheme' - local f=io.open(config_file, "r") - if f~=nil then - local system_theme = f:read() - -- f:close() - io.close(f) - if system_theme == 'dark' then - vim.cmd("set bg=dark") - elseif system_theme == 'light' then - vim.cmd("set bg=light") - else - print('warning: expected value "light" or "dark"') - print(' got:', system_theme) - print(' expected path:', file) - end - else - print('warning: nvim color scheme not found') - print(' expected path:', file) - end - EOF + configure = { + customRC = '' + set title + set go=a + set mouse=a + set nohlsearch + set number + let mapleader="," - colorscheme catppuccin " catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha + lua << EOF + local config_file = os.getenv("HOME")..'/.local/share/nvim_color_scheme' + local f = io.open(config_file, "r") + if f ~= nil then + local system_theme = f:read() + io.close(f) + if system_theme == 'dark' then + vim.cmd("set bg=dark") + elseif system_theme == 'light' then + vim.cmd("set bg=light") + else + print('warning: expected value "light" or "dark"') + print(' got:', system_theme) + print(' expected path:', config_file) + end + else + print('warning: nvim color scheme not found') + print(' expected path:', config_file) + end + EOF - " netrw (dir listing) settings - let g:netrw_liststyle = 3 - let g:netrw_banner = 0 - let g:netrw_browse_split = 3 - let g:netrw_winsize = 25 " % of page + colorscheme catppuccin " catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha - set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:» - set clipboard+=unnamedplus + " netrw (dir listing) settings + let g:netrw_liststyle = 3 + let g:netrw_banner = 0 + let g:netrw_browse_split = 3 + let g:netrw_winsize = 25 " % of page - " Replace-all is aliased to S. - nnoremap S :%s//g + set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:» + set clipboard+=unnamedplus - " save file with ,w - map w :w + " Replace-all is aliased to S. + nnoremap S :%s//g - " spellcheck - set spell spelllang=en_us - setlocal spell! spelllang=en_us - ''; - # vimPlugins inspired from Alexnortung - # https://discourse.nixos.org/t/neovim-no-longer-uses-config-or-plugins/13399/4 - packages.nix = with pkgs.vimPlugins; { - start = [ - vim-surround # shortcuts for setting () {} etc. - vim-gitgutter # git diff in sign column - # vim-airline # nice and light status bar # doesn't work nicely with tmux - # coc-nvim coc-git coc-highlight coc-python coc-rls coc-vetur coc-vimtex coc-yaml coc-html coc-json # auto completion - vim-nix # nix highlight - vimtex # latex stuff - fzf-vim # fuzzy finder through vim - nerdtree # file structure inside nvim - rainbow # color parenthesis - # gruvbox-nvim # theme - catppuccin-nvim # theme - goyo-vim # write prose - limelight-vim # prose paragraph highlighter - ]; - opt = []; + " save file with ,w + map w :w + + " spellcheck + set spell spelllang=en_us + setlocal spell! spelllang=en_us + ''; + + # vimPlugins inspired from Alexnortung + # https://discourse.nixos.org/t/neovim-no-longer-uses-config-or-plugins/13399/4 + packages.nix = with pkgs.vimPlugins; { + start = [ + vim-surround # shortcuts for setting () {} etc. + vim-gitgutter # git diff in sign column + # vim-airline # nice and light status bar (disabled for tmux) + # coc-nvim coc-* plugins (disabled for now) + vim-nix # nix highlight + vimtex # latex stuff + fzf-vim # fuzzy finder through vim + nerdtree # file structure inside nvim + rainbow # color parenthesis + # gruvbox-nvim # theme + catppuccin-nvim # theme + goyo-vim # write prose + limelight-vim # prose paragraph highlighter + ]; + opt = []; + }; }; }; }; } -