add: nvchad

This commit is contained in:
ooks-io 2023-08-21 12:44:33 +12:00
parent 0001c26dcd
commit 4430232787
11 changed files with 845 additions and 8 deletions

View file

@ -1,14 +1,62 @@
{ pkgs, ... }:
{ config, pkgs, lib, ... }:
# Let-In ----------------------------------------------------------------------------------------{{{
let
inherit (lib) concatStringsSep optional;
inherit (config.lib.file) mkOutOfStoreSymlink;
# customNvChad = ./nvchad-custom;
populateEnv = ./populate-nvim-env.py;
populateEnvScript = ''
mkdir -p ${config.xdg.dataHome}/nvim/site/plugin
${pkgs.python39}/bin/python ${populateEnv} -o ${config.xdg.dataHome}/nvim/site/plugin
'';
# }}}
in
{
# Neovim
# https://rycee.gitlab.io/home-manager/options.html#opt-programs.neovim.enable
programs.neovim.enable = true;
home.sessionVariables.EDITOR = "nvim";
programs.neovim.viAlias = true;
programs.neovim.vimAlias = true;
programs = {
neovim = {
enable = true;
viAlias = true;
};
# Config and plugins ------------------------------------------------------------------------- {{{
xdg.configFile."nvim" = {
source = "${pkgs.nvchad}";
};
home.packages = with pkgs; [
nvchad
(pkgs.writeShellScriptBin "update-nvim-env" ''
#
# update-nvim-env
#
# Update neovim env such that it can be used in neovide or other GUIs.
${populateEnvScript}
'')
];
home.activation.neovim = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
echo "Populating neovim env..."
${populateEnvScript}
'';
programs.bash.initExtra = lib.mkAfter ''
export EDITOR="${config.programs.neovim.package}/bin/nvim"
'';
programs.zsh.initExtra = lib.mkAfter ''
export EDITOR="${config.programs.neovim.package}/bin/nvim"
'';
# Required packages -------------------------------------------------------------------------- {{{
programs.neovim.extraPackages = with pkgs; [
nodejs_20
gcc
];
# }}}
}
# vim: foldmethod=marker

View file

@ -0,0 +1,72 @@
#!/bin/env python3
import os
from collections import OrderedDict
import argparse
KEYS = [
# PATH
"PATH",
"CS154_ADMIN",
"BREW_PREFIX",
"CONDA_PYTHON_EXE",
"SPACESHIP_ROOT",
"COLORFGBG",
"XPC_SERVICE_NAME",
"_CE_M",
"XPC_FLAGS",
"LANG",
# terminal
"VISUAL",
"LESS",
"LOGNAME",
"COLORTERM",
"HISTFILE",
"LC_TERMINAL",
"LC_TERMINAL_VERSION",
"ITERM_SESSION_ID",
"ITERM_PROFILE",
"TERM_SESSION_ID",
"TERM_PROGRAM",
"STARSHIP_SESSION_KEY",
"STARSHIP_CONFIG",
"VI_MODE_SET_CURSOR",
"_",
"LSCOLORS",
"ZSH",
"EDITOR",
# XDG
"XDG_DATA_HOME",
"XDG_STATE_HOME",
"XDG_CACHE_HOME",
"XDG_CONFIG_HOME",
]
def main(output_path):
env = os.environ.copy()
env = OrderedDict(sorted(env.items()))
dst_file = "{}/env.lua".format(output_path)
with open(dst_file, "w") as f:
for key, value in env.items():
if key in KEYS:
if key == "PATH":
f.write('vim.env.PATH = vim.env.PATH .. ":{}"\n'.format(value))
continue
f.write('vim.fn.setenv("{}", "{}")\n'.format(key, value))
f.close()
if __name__ == "__main__":
home_directory = os.path.expanduser("~")
parser = argparse.ArgumentParser("Neovim Populate Env")
parser.add_argument(
"-o",
"--output",
required=False,
help="Output Path",
type=str,
default="{}/.config/nvim/lua/toutaboc".format(home_directory),
)
args = parser.parse_args()
main(args.output)

View file

@ -23,6 +23,7 @@
tldr # Community maintained help pages
tmux # Terminal multiplexer
tre-command # Better tree
unzip
];
programs = {