1{
2 config,
3 lib,
4 pkgs,
5 ...
6}: {
7 options.myHome.profiles.shell.enable = lib.mkEnableOption "basic shell environment";
8
9 config = lib.mkIf config.myHome.profiles.shell.enable {
10 home = {
11 packages = with pkgs; [
12 (lib.hiPrio uutils-coreutils-noprefix)
13 curl
14 btop
15 nixos-rebuild
16 wget
17 ];
18
19 shellAliases = {
20 l = "eza -lah";
21 tree = "eza --tree";
22 top = "btop";
23 cat = "bat -p -P";
24 ytmusic = "yt-dlp -f 251 --remux-video opus --embed-metadata --embed-thumbnail -o \"%(album)s/%(disc_number>0)s%(disc_number)02d-%(track_number)02d %(title)s.%(ext)s\"";
25 };
26 };
27
28 programs = {
29 bat.enable = true;
30 btop.enable = true;
31
32 direnv = {
33 enable = true;
34 nix-direnv.enable = true;
35 silent = true;
36
37 stdlib = ''
38 : ''${XDG_CACHE_HOME:=$HOME/.cache}
39 declare -A direnv_layout_dirs
40
41 direnv_layout_dir() {
42 echo "''${direnv_layout_dirs[$PWD]:=$(
43 echo -n "$XDG_CACHE_HOME"/direnv/layouts/
44 echo -n "$PWD" | sha1sum | cut -d ' ' -f 1
45 )}"
46 }
47 '';
48 };
49
50 eza = {
51 enable = true;
52 enableFishIntegration = true;
53 extraOptions = [
54 "--group-directories-first"
55 "--header"
56 ];
57 git = true;
58 icons = "auto";
59 };
60
61 fish = {
62 enable = true;
63 interactiveShellInit = ''
64 set -gx PATH $PATH /home/$USER/.local/bin
65 '';
66 };
67
68 fzf.enable = true;
69
70 ripgrep = {
71 enable = true;
72 arguments = ["--pretty"];
73 };
74
75 ripgrep-all.enable = true;
76 joshuto.enable = true;
77
78 zellij = {
79 enable = true;
80 enableFishIntegration = false;
81 settings = {
82 theme = "onedark";
83 default_shell = "fish";
84 show_startup_tips = false;
85 };
86 };
87
88 zoxide = {
89 enable = true;
90 enableFishIntegration = true;
91 options = ["--cmd cd"];
92 };
93 };
94 };
95}