71 lines
1.7 KiB
Nix
71 lines
1.7 KiB
Nix
{ config, lib, pkgs, user, ... }:
|
|
let
|
|
inherit (lib.attrsets) attrValues;
|
|
inherit (lib.modules) mkIf mkMerge;
|
|
inherit (lib.options) mkOption mkEnableOption;
|
|
inherit (lib.types) nullOr enum;
|
|
|
|
cfg = config.modules.${user}.shell;
|
|
in
|
|
{
|
|
options.modules.${user}.shell = {
|
|
default = mkOption {
|
|
type = nullOr (enum ["fish" "zsh" "bash"]);
|
|
default = null;
|
|
description = "Default system shell";
|
|
};
|
|
|
|
corePkgs.enable = mkEnableOption "core shell packages";
|
|
};
|
|
|
|
config = mkMerge [
|
|
(mkIf (cfg.default != null) {
|
|
users.defaultUserShell = pkgs."${cfg.default}";
|
|
|
|
# modules.${user}.shell.toolset.gnupg.enable = true;
|
|
})
|
|
|
|
(mkIf cfg.corePkgs.enable {
|
|
modules.${user}.shell.toolset = {
|
|
bat.enable = true;
|
|
btop.enable = true;
|
|
eza.enable = true;
|
|
fzf.enable = true;
|
|
git.enable = true;
|
|
starship.enable = true;
|
|
tmux.enable = true;
|
|
yazi.enable = true;
|
|
zoxide.enable = true;
|
|
};
|
|
|
|
home-manager.users.${user} = {
|
|
home.packages = attrValues {
|
|
inherit (pkgs) any-nix-shell pwgen yt-dlp ripdrag;
|
|
inherit (pkgs) fd;
|
|
|
|
rgFull = pkgs.ripgrep.override {withPCRE2 = true;};
|
|
};
|
|
|
|
home.shellAliases = {
|
|
# ls = "eza -a";
|
|
# cat = "bat -pp";
|
|
# y = "yazi";
|
|
# zed = "zeditor .";
|
|
};
|
|
|
|
programs = {
|
|
direnv = {
|
|
enable = true;
|
|
config.global = {
|
|
load_dotenv = true;
|
|
strict_env = true;
|
|
hide_env_diff = true;
|
|
};
|
|
nix-direnv.enable = true;
|
|
config.whitelist.prefix = ["/home"];
|
|
};
|
|
};
|
|
};
|
|
})
|
|
];
|
|
}
|