args@{ lib, config, pkgs, flake, ... }: with lib; let psCfg = config.pub-solar; cfg = config.pub-solar.terminal-life; in { options.pub-solar.terminal-life = { full = mkOption { description = '' Enable a full version, which includes more nvim plugins and lsps. ''; default = false; type = types.bool; }; }; config = { programs.command-not-found.enable = true; users.users."${psCfg.user.name}".packages = with pkgs; [ tealdeer asciinema blesh eza fd ripgrep (nnn.overrideAttrs (o: { patches = (o.patches or []) ++ [ ./nnn/0001-feat-use-wasd-keybindings-for-jkli.patch ]; })) p powerline screen watson jump bat ] ++ ( if cfg.full then [ # Nix specific utilities alejandra manix nix-index nix-tree nix-inspect nvd ] else [] ); home-manager.users."${psCfg.user.name}" = { programs.less = { enable = true; keys = '' k forw-line i back-line K forw-scroll I back-scroll ''; }; # Starship is a fast and featureful shell prompt # starship.toml has sane defaults that can be changed there programs.starship = { enable = true; settings = import ./starship.toml.nix flake.self.theme.withHashtag; }; programs.bash = import ./bash args; programs.fzf = import ./fzf args; programs.neovim = import ./nvim args; # Ensure nvim backup directory gets created # Workaround for E510: Can't make backup file (add ! to override) xdg.dataFile."nvim/backup/.keep".text = ""; xdg.dataFile."nvim/json-schemas/.keep".text = ""; xdg.dataFile."nvim/templates/.keep".text = ""; programs.git = import ./git args; xdg.configFile."git/config".text = import ./.config/git/config.nix args; xdg.configFile."git/gitmessage".text = import ./.config/git/gitmessage.nix args; xdg.configFile."git/global_gitignore".text = import ./.config/git/global_gitignore.nix args; programs.direnv = import ./direnv args; }; }; }