68 lines
2.2 KiB
Nix
Raw Normal View History

2022-11-29 20:40:15 -07:00
{ config, pkgs, lib, ... }:
2022-04-28 19:11:33 -04:00
2022-11-29 20:40:15 -07:00
let
2022-04-28 19:11:33 -04:00
2022-11-29 20:40:15 -07:00
neovim = import ./package {
inherit pkgs;
colors = config.theme.colors;
2023-11-05 20:40:18 -05:00
terraform = config.terraform.enable;
github = true;
kubernetes = config.kubernetes.enable;
2022-11-29 20:40:15 -07:00
};
2022-04-28 19:11:33 -04:00
2022-11-29 20:40:15 -07:00
in {
2022-12-21 14:18:03 -07:00
options.neovim.enable = lib.mkEnableOption "Neovim.";
2022-11-29 20:40:15 -07:00
2022-12-21 14:18:03 -07:00
config = lib.mkIf config.neovim.enable {
home-manager.users.${config.user} =
2022-11-29 20:40:15 -07:00
2022-12-21 14:18:03 -07:00
{
2022-11-29 20:40:15 -07:00
2022-12-21 14:18:03 -07:00
home.packages = [ neovim ];
2023-07-30 20:26:23 -04:00
# Use Neovim as the editor for git commit messages
2022-12-21 14:18:03 -07:00
programs.git.extraConfig.core.editor = "nvim";
2023-08-06 16:37:53 -04:00
programs.jujutsu.settings.ui.editor = "nvim";
2023-07-30 20:26:23 -04:00
# Set Neovim as the default app for text editing and manual pages
2022-12-21 14:18:03 -07:00
home.sessionVariables = {
EDITOR = "nvim";
MANPAGER = "nvim +Man!";
};
2023-07-30 20:26:23 -04:00
# Create quick aliases for launching Neovim
2022-12-21 14:18:03 -07:00
programs.fish = {
shellAliases = { vim = "nvim"; };
shellAbbrs = {
v = lib.mkForce "nvim";
vl = lib.mkForce "nvim -c 'normal! `0' -c 'bdelete 1'";
vll = "nvim -c 'Telescope oldfiles'";
};
2022-11-29 20:40:15 -07:00
};
2023-07-30 20:26:23 -04:00
# Set Neovim as the kitty terminal "scrollback" (vi mode) option.
# Requires removing some of the ANSI escape codes that are sent to the
# scrollback using sed and baleia, as well as removing several
# unnecessary features.
programs.kitty.settings.scrollback_pager = ''
$SHELL -c 'sed -r "s/[[:cntrl:]]\]133;[AC]..//g" | ${neovim}/bin/nvim -c "setlocal nonumber norelativenumber nolist laststatus=0" -c "lua baleia = require(\"baleia\").setup({}); baleia.once(0)" -c "map <silent> q :qa!<CR>" -c "autocmd VimEnter * normal G"' '';
2022-12-21 14:18:03 -07:00
2023-07-30 20:26:23 -04:00
# Create a desktop option for launching Neovim from a file manager
# (Requires launching the terminal and then executing Neovim)
xdg.desktopEntries.nvim = lib.mkIf pkgs.stdenv.isLinux {
2023-03-08 22:55:34 -05:00
name = "Neovim wrapper";
exec = "kitty nvim %F";
2023-07-30 20:26:23 -04:00
mimeType = [ "text/plain" "text/markdown" ];
2023-03-08 22:55:34 -05:00
};
xdg.mimeApps.defaultApplications = lib.mkIf pkgs.stdenv.isLinux {
"text/plain" = [ "nvim.desktop" ];
"text/markdown" = [ "nvim.desktop" ];
2023-03-08 22:55:34 -05:00
};
2022-11-29 20:40:15 -07:00
};
2022-12-21 14:18:03 -07:00
};
2022-04-28 21:56:21 -04:00
2022-04-28 19:11:33 -04:00
}