{ self, inputs, ... }: let username = "john"; in { flake.modules = { nixos.zsh = { pkgs, ... }: { users.users."${username}".shell = pkgs.zsh; programs.zsh.enable = true; # Already being imported by the john.nix module # home-manager.sharedModules = [ # inputs.self.modules.homeManager.zsh # ]; }; homeManager.zsh = { pkgs, config, ... }: { programs.zsh = { enable = true; package = pkgs.zsh; enableCompletion = true; autosuggestion.enable = true; # syntaxHighlighting.enable = true; initContent = "HOST=$(hostname -s)"; dotDir = "${config.xdg.configHome}/zsh"; history = { append = true; ignoreAllDups = true; ignorePatterns = [ "history" "ls" "eza" "clear" ]; save = 1000; size = 1000; share = true; }; oh-my-zsh = { enable = true; # theme = "risto"; theme = "agnoster"; plugins = [ "sudo" "dotenv" "git" "ssh" "ssh-agent" ]; }; }; }; }; perSystem = { system, pkgs, ... }: { packages.jsl-zsh = inputs.wrapper-modules.wrappers.zsh.wrap { inherit pkgs; extraPackages = with pkgs; [ inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.neovim-min btop coreutils curl wget yazi zsh ]; }; packages.neovim-min = ((inputs.nvf.lib.neovimConfiguration { inherit pkgs; modules = [ { # https://nvf.notashelf.dev/search.html config.vim = { options = { number = true; relativenumber = true; expandtab = true; shiftwidth = 4; tabstop = 4; softtabstop = 4; wrap = true; linebreak = true; }; syntaxHighlighting = true; # Enable custom theming options theme.enable = true; theme.name = "catppuccin"; theme.style = "mocha"; git.enable = true; # git.neogit.enable = true; extraPlugins = with pkgs.vimPlugins; { icons = { package = nvim-web-devicons; }; octo = { package = octo-nvim; setup = "require('octo').setup {}"; after = ["telescope" "icons"]; }; }; # https://github.com/akinsho/toggleterm.nvim terminal.toggleterm.enable = true; terminal.toggleterm.lazygit.enable = true; terminal.toggleterm.lazygit.direction = "float"; terminal.toggleterm.lazygit.mappings.open = ""; utility.nix-develop.enable = true; filetree.neo-tree.enable = true; telescope = { enable = true; extensions = [ { name = "fzf"; packages = [pkgs.vimPlugins.telescope-fzf-native-nvim]; setup = {fzf = {fuzzy = true;};}; } ]; }; languages = { enableTreesitter = true; enableFormat = true; markdown = { enable = true; extensions = { markview-nvim.enable = true; }; }; bash.enable = true; yaml.enable = true; toml.enable = true; nix.enable = true; }; keymaps = [ { desc = "Edit key mappings"; key = "ekm"; mode = [ "n" ]; silent = false; action = ":edit +/keymaps /home/john/.config/home-manager/jsl-dendritic/modules/programs/neovim.nix"; } { desc = "Home Manager Switch"; key = "nhms"; mode = [ "n" ]; silent = false; action = ":TermExec cmd='clear && nhms && exit' name='Nix Home Manager Switch' direction=float"; } { desc = "Key Maps [Telescope]"; key = "fkm"; mode = "n"; silent = false; action = ":Telescope keymaps"; } { desc = "Toggle Filesystem Tree [NeoTree]"; key = ""; mode = [ "n" "v" "t" ]; silent = false; action = ":Neotree toggle filesystem left action=show"; } { key = ""; mode = ["n" "v" "t"]; silent = false; action = ":ToggleTerm"; } ]; }; } ]; }).neovim).overrideAttrs (old: { pname = "neovim-min"; version = "custom"; }); }; }