add: nvchad
This commit is contained in:
		
							parent
							
								
									0001c26dcd
								
							
						
					
					
						commit
						4430232787
					
				
					 11 changed files with 845 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										72
									
								
								home/ooks/opt/nvim/populate-nvim-env.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								home/ooks/opt/nvim/populate-nvim-env.py
									
										
									
									
									
										Normal 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)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue