This commit is contained in:
joygnu 2024-07-03 22:57:23 +02:00
parent 2bfd4389e8
commit 88bdcca926
5 changed files with 204 additions and 19 deletions

View file

@ -9,28 +9,12 @@
./gtk ./gtk
./git ./git
./ags ./ags
./neovim
inputs.nix-colors.homeManagerModules.default inputs.nix-colors.homeManagerModules.default
inputs.ags.homeManagerModules.default inputs.ags.homeManagerModules.default
]; ];
programs.neovim.enable = true;
xdg.configFile."nvim".source = pkgs.stdenv.mkDerivation {
name = "NvChad";
src = pkgs.fetchFromGitHub {
owner = "NvChad";
repo = "NvChad";
rev = "f17e83010f25784b58dea175c6480b3a8225a3e9";
hash = "sha256-P5TRjg603/7kOVNFC8nXfyciNRLsIeFvKsoRCIwFP3I=";
};
installPhase = ''
mkdir -p $out
cp -r ./* $out/
cd $out/
cp -r ${./my_nvchad_config} $out/lua/custom
'';
};
home.username = "joy"; home.username = "joy";
home.homeDirectory = "/home/joy"; home.homeDirectory = "/home/joy";
home.stateVersion = "23.11"; home.stateVersion = "23.11";

@ -1 +0,0 @@
Subproject commit 82c9711f62025c16d138c0bc6e8b7cf46ca6ccc5

114
home/neovim/default.nix Normal file
View file

@ -0,0 +1,114 @@
{ flake
, config
, pkgs
, lib
, ...
}:
let
inherit (lib) concatStringsSep optional;
inherit (config.lib.file) mkOutOfStoreSymlink;
cfg = config.programs.neovim;
home = config.home.homeDirectory;
populateEnv = ./populate-nvim-env.py;
populateEnvScript = openapi_path: ''
mkdir -p ${config.xdg.dataHome}/nvim/site/plugin
${pkgs.python39}/bin/python ${populateEnv} -o ${config.xdg.dataHome}/nvim/site/plugin --openapi_path "${openapi_path}"
'';
in
{
# Neovim
# https://rycee.gitlab.io/home-manager/options.html#opt-programs.neovim.enable
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
defaultEditor = true;
package = pkgs.neovim-nightly;
extraLuaPackages = ps: [ ps.magick ];
};
# xdg.configFile."nvim" = {
# source = config.lib.file.mkOutOfStoreSymlink "${home}/.config/nvim";
# recursive = true;
# };
home.packages = with pkgs.unstable; [
tree-sitter
lua-language-server
stylua
shfmt
# python
python311Packages.flake8
python311Packages.black
python311Packages.python-lsp-server
# web stuff
nodePackages_latest.prettier
nodePackages_latest.eslint_d
nodePackages_latest.vscode-langservers-extracted
nodePackages_latest.typescript-language-server
# rust
rust-analyzer
rustfmt
# config
taplo
# nix
nixpkgs-fmt
rnix-lsp
(pkgs.writeShellScriptBin "update-nvim-env" ''
#
# update-nvim-env
#
# Update neovim env such that it can be used in neovide or other GUIs.
${populateEnvScript config.sops.secrets.openapi-key.path}
'')
(pkgs.writeShellScriptBin "clean-nvim-all" ''
rm -rf ${config.xdg.dataHome}/nvim
rm -rf ${config.xdg.cacheHome}/nvim
rm -rf ${config.xdg.stateHome}/nvim
rm -rf ${config.xdg.configHome}/nvim
'')
(pkgs.writeShellScriptBin "clean-nvim" ''
rm -rf ${config.xdg.dataHome}/nvim
rm -rf ${config.xdg.stateHome}/nvim
rm -rf ${config.xdg.cacheHome}/nvim
'')
];
home.activation.neovim = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
echo "Populating neovim env..."
${populateEnvScript config.sops.secrets.openapi-key.path}
'';
programs.zsh.initExtra = lib.mkIf cfg.enable (lib.mkAfter ''
# alias n="${pkgs.neovim}/bin/nvim"
'');
sops = {
age.keyFile = "${home}/.config/sops/age/keys.txt";
age.generateKey = true;
secrets = {
openapi-key = {
# owner = "rayandrew";
mode = "0440";
sopsFile = ../../secrets.yaml;
# path = "%r/openapi-key.txt";
path = "${config.home.homeDirectory}/.openai_api_key";
# neededForUsers = true;
};
};
};
}

View file

@ -0,0 +1,87 @@
#!/bin/env python3
import os
from collections import OrderedDict
import argparse
from pathlib import Path
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(args):
env = os.environ.copy()
env = OrderedDict(sorted(env.items()))
dst_file = "{}/env.lua".format(args.output_path)
openapi_key = None
if args.openapi_path != "":
openapi_path = Path(args.openapi_path)
if openapi_path.exists():
with open(openapi_path, "r") as f:
openapi_key = f.readline().strip("\n")
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))
if openapi_key is not None:
f.write('vim.fn.setenv("OPENAI_API_KEY", "{}")\n'.format(openapi_key))
f.close()
if __name__ == "__main__":
home_directory = os.path.expanduser("~")
parser = argparse.ArgumentParser("Neovim Populate Env")
parser.add_argument("--openapi_path", required=False, type=str, default="")
parser.add_argument(
"-o",
"--output_path",
required=False,
help="Output Path",
type=str,
default="{}/.config/nvim/lua/rayandrew".format(home_directory),
)
args = parser.parse_args()
main(args)

View file

@ -55,6 +55,7 @@
boxbuddy boxbuddy
distrobox distrobox
neovim neovim
python3
cl cl
]; ];
} }