add nvim and config

This commit is contained in:
Joseph Hanson 2025-01-28 19:36:00 -06:00
parent ecb833b4f9
commit 0764864142
6 changed files with 3226 additions and 12 deletions

3028
flake.lock

File diff suppressed because it is too large Load diff

View file

@ -92,6 +92,9 @@
url = "github:hyprwm/hyprland-plugins"; url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland"; inputs.hyprland.follows = "hyprland";
}; };
# nvf - A highly modular, extensible and distro-agnostic Neovim configuration framework for Nix/NixOS.
nvf.url = "github:notashelf/nvf";
}; };
outputs = { outputs = {
@ -106,6 +109,7 @@
lix-module, lix-module,
vscode-server, vscode-server,
krewfile, krewfile,
nvf,
... ...
} @ inputs: let } @ inputs: let
forAllSystems = nixpkgs.lib.genAttrs [ forAllSystems = nixpkgs.lib.genAttrs [
@ -146,6 +150,7 @@
baseModules ? [ baseModules ? [
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
nvf.nixosModules.default
./nixos/profiles/global.nix # all machines get a global profile ./nixos/profiles/global.nix # all machines get a global profile
./nixos/modules/nixos # all machines get nixos modules ./nixos/modules/nixos # all machines get nixos modules
./nixos/hosts/${hostname} # load this host's config folder for machine-specific config ./nixos/hosts/${hostname} # load this host's config folder for machine-specific config

View file

@ -1,5 +1,6 @@
{ {
imports = [ imports = [
./nvim.nix
./vim.nix ./vim.nix
./vscode.nix ./vscode.nix
]; ];

View file

@ -0,0 +1,187 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.mySystem.editor.nvim;
in {
options.mySystem.editor.nvim.enable = mkEnableOption "nvim";
config = mkIf cfg.enable {
# Enable nvim and configure plugins/settings
programs.nvf = {
enable = true;
settings.vim = {
viAlias = false;
vimAlias = true;
lsp = {
enable = true;
formatOnSave = true;
lspsaga.enable = false;
trouble.enable = true;
lspSignature.enable = true;
otter-nvim.enable = true;
lsplines.enable = true;
nvim-docs-view.enable = true;
};
languages = {
enableLSP = true;
enableFormat = true;
enableTreesitter = true;
enableExtraDiagnostics = true;
nix.enable = true;
markdown.enable = true;
bash.enable = true;
css.enable = true;
html.enable = true;
sql.enable = true;
ts.enable = true;
go.enable = true;
lua.enable = true;
zig.enable = true;
python.enable = true;
rust = {
enable = true;
crates.enable = true;
};
astro.enable = true;
nu.enable = true;
csharp.enable = true;
tailwind.enable = true;
};
visuals = {
nvim-scrollbar.enable = true;
nvim-web-devicons.enable = true;
nvim-cursorline.enable = true;
cinnamon-nvim.enable = true;
fidget-nvim.enable = true;
highlight-undo.enable = true;
indent-blankline.enable = true;
cellular-automaton.enable = true;
};
statusline = {
lualine = {
enable = true;
theme = "catppuccin";
};
};
theme = {
enable = true;
name = "catppuccin";
style = "mocha";
transparent = false;
};
autopairs.nvim-autopairs.enable = true;
autocomplete.nvim-cmp.enable = true;
snippets.luasnip.enable = true;
filetree.neo-tree.enable = true;
tabline.nvimBufferline.enable = true;
treesitter.context.enable = true;
binds = {
whichKey.enable = true;
cheatsheet.enable = true;
};
telescope.enable = true;
git = {
enable = true;
gitsigns = {
enable = true;
codeActions.enable = false;
};
};
minimap = {
minimap-vim.enable = false;
codewindow.enable = true;
};
dashboard = {
dashboard-nvim.enable = false;
alpha.enable = true;
};
notify = {
nvim-notify.enable = true;
};
projects = {
project-nvim.enable = true;
};
utility = {
vim-wakatime.enable = true;
icon-picker.enable = true;
surround.enable = true;
diffview-nvim.enable = true;
yanky-nvim.enable = false;
motion = {
hop.enable = true;
leap.enable = true;
precognition.enable = true;
};
images = {
image-nvim.enable = false;
};
};
notes = {
mind-nvim.enable = true;
todo-comments.enable = true;
};
terminal = {
toggleterm = {
enable = true;
lazygit.enable = true;
};
};
ui = {
borders.enable = true;
noice.enable = true;
colorizer.enable = true;
modes-nvim.enable = false;
illuminate.enable = true;
breadcrumbs = {
enable = true;
navbuddy.enable = true;
};
smartcolumn = {
enable = true;
setupOpts.custom_colorcolumn = {
nix = "110";
ruby = "120";
java = "130";
go = ["90" "130"];
};
};
fastaction.enable = true;
};
assistant = {
copilot = {
enable = true;
cmp.enable = true;
};
};
session = {
nvim-session-manager.enable = false;
};
comments = {
comment-nvim.enable = true;
};
presence = {
neocord.enable = false;
};
};
};
};
}

View file

@ -2,12 +2,9 @@
config, config,
lib, lib,
pkgs, pkgs,
modulesPath,
... ...
}: }:
with lib; {
with lib;
{
# NOTE # NOTE
# Some 'global' areas have defaults set in their respective modules. # Some 'global' areas have defaults set in their respective modules.
# These will be applied when the modules are loaded # These will be applied when the modules are loaded
@ -22,7 +19,10 @@ with lib;
boot.tmp.cleanOnBoot = true; boot.tmp.cleanOnBoot = true;
mySystem = { mySystem = {
# basics for all devices # basics for all devices
editor.vim.enable = true; editor = {
nvim.enable = true;
vim.enable = true;
};
time.timeZone = "America/Chicago"; time.timeZone = "America/Chicago";
security.increaseWheelLoginLimits = true; security.increaseWheelLoginLimits = true;
system.packages = [pkgs.bat]; system.packages = [pkgs.bat];
@ -43,5 +43,4 @@ with lib;
networking.domain = config.mySystem.domain; networking.domain = config.mySystem.domain;
}; };
} }

View file

@ -4,8 +4,7 @@
... ...
}: }:
# Role for dev stations # Role for dev stations
# Could be a workstatio or a headless server. # Could be a workstation or a headless server.
{ {
config = { config = {
# git & vim are in global # git & vim are in global
@ -40,6 +39,7 @@
shfmt shfmt
statix statix
tmux tmux
#unstable.aider-chat
unstable.bottom unstable.bottom
unstable.cyme unstable.cyme
unstable.go-task unstable.go-task