summaryrefslogtreecommitdiff
path: root/shared/nixos-and-darwin/common-shell-settings/default.nix
blob: 1fcb05ed84ff6d94a0ae4e57c67f7c18c201ebf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# This module sets options to ensure a consistent Baseline Shell Experince™
# across the entire fleet. This includes e.g. common utilities and aliases.
#
# NOTE: This lives under `shared/nixos-and-darwin`. The configuration in here
# should be compatible with both nixos and nix-darwin!!

{pkgs, lib, ...}:

lib.mkMerge [
  {
    # Set ZSH as the shell.
    # https://nixos.wiki/wiki/Command_Shell#Changing_default_shelltrue
    programs.zsh.enable = true;
    environment.shells = [pkgs.zsh];

    # Very basic system administration tools.
    environment.systemPackages = with pkgs; [
      curl
      jq
      moreutils
      neovim
      tree
    ];

    # Aliases that are burned into my muscle memory.
    environment.shellAliases = {
      "mv" = "mv -i";
      "rm" = "rm -i";
      "cp" = "cp -i";
      "ls" = "ls -F -G -A --color=auto";
      "grep" = "grep --color=auto";
      "file" = "file --no-dereference";
      "tree" = "tree --dirsfirst --gitignore";

      # See: https://github.com/NixOS/nix/issues/5858
      "nix" = "nix --print-build-logs";

      ".." = "cd ../";
      "..." = "cd ../../";
      "...." = "cd ../../../";
      "....." = "cd ../../../../";
      "......" = "cd ../../../../../";
      "......." = "cd ../../../../../../";
      "........" = "cd ../../../../../../../";
      "........." = "cd ../../../../../../../../";
      ".........." = "cd ../../../../../../../../../";
    };
  }
  (lib.mkIf pkgs.stdenv.isLinux {
    # There is not nix-darwin equivalent to this NixOS option.
    # The default shell on MacOS is already ZSH.
    users.defaultUserShell = pkgs.zsh;
  })
]