summaryrefslogtreecommitdiff
path: root/hosts/common.nix
blob: 551fa476a0f188faab0ae8c8b1491a51fa81ef82 (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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Shared configuraion regardless of hosts.
{
  pkgs,
  options,
  flakeInputs,
  flakeOutputs,
  ...
}: {
  # Enable de facto stable features.
  nix.settings.experimental-features = ["nix-command" "flakes"];

  nixpkgs.overlays = [
    # Use local overlays.
    flakeOutputs.overlays.additions
    flakeOutputs.overlays.modifications

    # Add unstable nixpkgs.
    (final: prev: {unstable = flakeInputs.nixpkgs-unstable.legacyPackages.${pkgs.system};})
  ];

  # I'm not *that* vegan.
  nixpkgs.config.allowUnfree = true;

  nix.nixPath = [
    # Use overlays from this repo for building system configuration as well as
    # system-wide.
    #
    # See: https://nixos.wiki/wiki/Overlays#Using_nixpkgs.overlays_from_configuration.nix_as_.3Cnixpkgs-overlays.3E_in_your_NIX_PATH
    "nixpkgs-overlays=${flakeInputs.self}/overlays/compat.nix"

    # For consistency, use the same version of nixpkgs everywhere. This DOES
    # however make the system closure depend on the nixpkgs sources which would
    # be undesirable if I didn't already use all my systems interactively for
    # Nix stuff.
    "nixpkgs=${flakeInputs.nixpkgs}"
    "nixpkgs-unstable=${flakeInputs.nixpkgs-unstable}"
  ];

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

  # Very basic system administration tools.
  environment.systemPackages = with pkgs; [
    tree
    gh
    vim
    flakeInputs.comma.packages.${system}.default
    nix-index
    curl
    moreutils
    flakeInputs.agenix.packages.${system}.default
    jq
  ];

  # 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";

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

    ".." = "cd ../";
    "..." = "cd ../../";
    "...." = "cd ../../../";
    "....." = "cd ../../../../";
    "......" = "cd ../../../../../";
    "......." = "cd ../../../../../../";
    "........" = "cd ../../../../../../../";
    "........." = "cd ../../../../../../../../";
    ".........." = "cd ../../../../../../../../../";
  };
}