aboutsummaryrefslogtreecommitdiffstats
path: root/modules/darwin/default.nix
blob: b4b81a88c2b8df1cd4395e5344156aaf089f6c31 (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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
{ pkgs, lib, ... }:

{
  imports = [
    ./homebrew.nix
    ./macos.nix
    ./herdr-caffeinate.nix
  ];

  # Nix is managed by Determinate installer
  nix.enable = false;

  # Allow unfree packages
  nixpkgs.config.allowUnfree = true;

  # System state version – do not change after first installation
  system.stateVersion = 5;

  # Primary user for system defaults and homebrew
  system.primaryUser = "cobraz";

  # Enable Touch ID for sudo
  security.pam.services.sudo_local.touchIdAuth = true;

  # Remap Caps Lock to Escape
  system.keyboard = {
    enableKeyMapping = true;
    remapCapsLockToEscape = true;
  };

  # Core system packages available to all users
  environment.systemPackages = with pkgs; [
    # GUI apps
    # Pin a newer release; the version in nixpkgs has a dead download URL.
    (whatsapp-for-mac.overrideAttrs (old: {
      version = "2.26.23.21";
      src = old.src.overrideAttrs (_: {
        outputHash = "sha256-1nVO9KaDC6aVnDc3T4CNVghVQcNuzPajMjD2GjNB0mA=";
      });
    }))

    # Editors and terminal multiplexers
    neovim
    tmux
    herdr

    # Shells and shell utilities
    zsh
    bash
    ghq
    moreutils

    # GNU tools
    findutils
    gnused
    gnugrep

    # Networking tools
    curl
    nmap
    wget
    cloudflared

    # Compression libraries and tools
    lz4
    zlib
    zstd
    libffi
    p7zip
    pigz

    # Programming languages and runtimes
    golangci-lint
    zig
    typst
    rustup

    # JavaScript runtimes and package managers
    pnpm
    deno

    # Version control
    git
    git-lfs
    delta
    lazygit

    # Search tools
    ripgrep
    fzf

    # JSON/YAML processing tools
    jq
    yq-go

    # Protobuf and gRPC
    protobuf
    protoc-gen-go
    protoc-gen-go-grpc

    # Cloud and IaC tools
    # pulumi-bin over pulumi: the source-built package lags upstream by months
    pulumi-bin
    pulumictl
    kubectl
    kubernetes-helm
    cilium-cli
    doctl
    flyctl
    talosctl
    tektoncd-cli

    # Task runners and automation
    act

    # Databases and database tools
    turso
    libpq
    sqlc

    # Terminal tools
    pv
    rename
    tree
    tldr
    starship
    gh
    htop

    # HTTP and web servers
    caddy
    goreleaser

    # Document and media tools
    pandoc
    ffmpeg
    tesseract
    ghostscript
    graphviz

    # Python tools
    pipx

    # Specific toolsets
    rclone
  ];
}