This commit is contained in:
Harivansh Rathi 2026-03-12 18:38:43 -04:00
parent f74819de9d
commit 02c996d21a
11 changed files with 592 additions and 99 deletions

View file

@ -0,0 +1,231 @@
# Homebrew to nixpkgs Validation
Generated by `scripts/validate-homebrew-against-nixpkgs.py`.
Validation method:
- official source: `search.nixos.org` backend
- channel: `nixos-unstable`
- brew source: `inventory/current/brew-bundle.txt`
- cask source: `inventory/current/brew-casks.txt`
- exact verification: Elasticsearch `_count` on `package_attr_name` with `package_platforms = aarch64-darwin`
- search URLs are included for human follow-up, but the exact-count result is the real gate
- backend alias used: `latest-44-nixos-unstable`
- brews moved to Nix: `71`
- brews kept in Homebrew: `9`
- casks moved to Nix: `10`
- casks kept in Homebrew: `10`
## Brews
| Homebrew item | nixpkgs attr | Exact verified | In flake | Action | Reason |
|---|---|---|---|---|---|
| `python@3.13` | `-` | no | yes | `keep-homebrew` | exact standalone nixpkgs attr not confirmed via official search backend |
| `apache-arrow` | `arrow-cpp` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `binwalk` | `binwalk` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `cloc` | `cloc` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `cloudflared` | `cloudflared` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `cmake` | `cmakeCurses` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `coreutils` | `coreutils-prefixed` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `criterion` | `criterion` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `diff-so-fancy` | `diff-so-fancy` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `e2fsprogs` | `e2fsprogs` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `fd` | `fd` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `ffmpeg` | `ffmpeg_7` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `flyctl` | `flyctl` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `fzf` | `fzf` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `gh` | `gh` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `git-delta` | `delta` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `git-filter-repo` | `git-filter-repo` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `git-lfs` | `git-lfs` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `gitleaks` | `gitleaks` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `gnu-time` | `time` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `go` | `go_1_26` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `helm` | `kubernetes-helm-wrapped` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `imagemagick` | `imagemagickBig` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `jq` | `jq` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `k9s` | `k9s` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `kind` | `kind` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `lazygit` | `lazygit` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `libpq` | `libpq` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `librsvg` | `librsvg` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `livekit` | `livekit` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `livekit-cli` | `livekit-cli` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `llmfit` | `llmfit` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `mactop` | `mactop` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `minikube` | `minikube` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `mint` | `mint` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `mise` | `mise` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `neovim` | `neovim` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `node` | `nodejs_22` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `openjdk` | `javaPackages.compiler.openjdk25` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `pandoc` | `pandoc` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `pipx` | `pipx` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `poppler` | `poppler` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `portaudio` | `portaudio` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `postgresql@14` | `postgresql_14` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `postgresql@16` | `postgresql_16` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `postgresql@17` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `potrace` | `potrace` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `redis` | `redis` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `resvg` | `resvg` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `ripgrep` | `ripgrep` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `semgrep` | `semgrep` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `sevenzip` | `p7zip` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `sox` | `sox` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `stow` | `stow` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `swiftformat` | `swiftformat` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `swiftlint` | `swiftlint` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `tailscale` | `tailscale` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `tmux` | `tmux` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `tree` | `tree` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `trivy` | `trivy` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `universal-ctags` | `universal-ctags` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `websocat` | `websocat` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `wget` | `wget` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `worktrunk` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `yazi` | `yazi-unwrapped` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `yq` | `yq` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `yt-dlp` | `yt-dlp` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `zoxide` | `zoxide` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `zsh-autosuggestions` | `zsh-autosuggestions` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `zsh-syntax-highlighting` | `zsh-syntax-highlighting` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `daytonaio/tap/daytona` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `hashicorp/tap/terraform` | `terraform` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `jnsahaj/lumen/lumen` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `nicosuave/tap/memex` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `steipete/tap/bird` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `steipete/tap/gogcli` | `gogcli` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `steipete/tap/summarize` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `stripe/stripe-cli/stripe` | `stripe-cli` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `supabase/tap/supabase` | `supabase-cli` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `withgraphite/tap/graphite` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
## Casks
| Homebrew item | nixpkgs attr | Exact verified | In flake | Action | Reason |
|---|---|---|---|---|---|
| `aerospace` | `aerospace` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `anaconda` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `codelayer` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `codex` | `codex` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `codexbar` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `companion` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `emacs-app` | `emacs` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `font-jetbrains-mono` | `jetbrains-mono` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `font-symbols-only-nerd-font` | `nerd-fonts.symbols-only` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `gcloud-cli` | `google-cloud-sdk` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `ghostty@tip` | `ghostty-bin` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `ngrok` | `ngrok` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `opencode-desktop` | `opencode-desktop` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
| `osaurus` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `pants` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `riptide-beta` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `riptide-dev` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `riptide-experimental` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `virtualbox` | `-` | no | yes | `keep-homebrew` | no exact nixpkgs attr on aarch64-darwin |
| `warp` | `warp-terminal` | yes | yes | `move-to-nix` | validated exact attr on nixos-unstable |
## Human Search Links
- `python@3.13`: https://search.nixos.org/packages?channel=unstable&query=python%403.13
- `apache-arrow`: https://search.nixos.org/packages?channel=unstable&query=arrow-cpp
- `binwalk`: https://search.nixos.org/packages?channel=unstable&query=binwalk
- `cloc`: https://search.nixos.org/packages?channel=unstable&query=cloc
- `cloudflared`: https://search.nixos.org/packages?channel=unstable&query=cloudflared
- `cmake`: https://search.nixos.org/packages?channel=unstable&query=cmakeCurses
- `coreutils`: https://search.nixos.org/packages?channel=unstable&query=coreutils-prefixed
- `criterion`: https://search.nixos.org/packages?channel=unstable&query=criterion
- `diff-so-fancy`: https://search.nixos.org/packages?channel=unstable&query=diff-so-fancy
- `e2fsprogs`: https://search.nixos.org/packages?channel=unstable&query=e2fsprogs
- `fd`: https://search.nixos.org/packages?channel=unstable&query=fd
- `ffmpeg`: https://search.nixos.org/packages?channel=unstable&query=ffmpeg_7
- `flyctl`: https://search.nixos.org/packages?channel=unstable&query=flyctl
- `fzf`: https://search.nixos.org/packages?channel=unstable&query=fzf
- `gh`: https://search.nixos.org/packages?channel=unstable&query=gh
- `git-delta`: https://search.nixos.org/packages?channel=unstable&query=delta
- `git-filter-repo`: https://search.nixos.org/packages?channel=unstable&query=git-filter-repo
- `git-lfs`: https://search.nixos.org/packages?channel=unstable&query=git-lfs
- `gitleaks`: https://search.nixos.org/packages?channel=unstable&query=gitleaks
- `gnu-time`: https://search.nixos.org/packages?channel=unstable&query=time
- `go`: https://search.nixos.org/packages?channel=unstable&query=go_1_26
- `helm`: https://search.nixos.org/packages?channel=unstable&query=kubernetes-helm-wrapped
- `imagemagick`: https://search.nixos.org/packages?channel=unstable&query=imagemagickBig
- `jq`: https://search.nixos.org/packages?channel=unstable&query=jq
- `k9s`: https://search.nixos.org/packages?channel=unstable&query=k9s
- `kind`: https://search.nixos.org/packages?channel=unstable&query=kind
- `lazygit`: https://search.nixos.org/packages?channel=unstable&query=lazygit
- `libpq`: https://search.nixos.org/packages?channel=unstable&query=libpq
- `librsvg`: https://search.nixos.org/packages?channel=unstable&query=librsvg
- `livekit`: https://search.nixos.org/packages?channel=unstable&query=livekit
- `livekit-cli`: https://search.nixos.org/packages?channel=unstable&query=livekit-cli
- `llmfit`: https://search.nixos.org/packages?channel=unstable&query=llmfit
- `mactop`: https://search.nixos.org/packages?channel=unstable&query=mactop
- `minikube`: https://search.nixos.org/packages?channel=unstable&query=minikube
- `mint`: https://search.nixos.org/packages?channel=unstable&query=mint
- `mise`: https://search.nixos.org/packages?channel=unstable&query=mise
- `neovim`: https://search.nixos.org/packages?channel=unstable&query=neovim
- `node`: https://search.nixos.org/packages?channel=unstable&query=nodejs_22
- `openjdk`: https://search.nixos.org/packages?channel=unstable&query=javaPackages.compiler.openjdk25
- `pandoc`: https://search.nixos.org/packages?channel=unstable&query=pandoc
- `pipx`: https://search.nixos.org/packages?channel=unstable&query=pipx
- `poppler`: https://search.nixos.org/packages?channel=unstable&query=poppler
- `portaudio`: https://search.nixos.org/packages?channel=unstable&query=portaudio
- `postgresql@14`: https://search.nixos.org/packages?channel=unstable&query=postgresql_14
- `postgresql@16`: https://search.nixos.org/packages?channel=unstable&query=postgresql_16
- `postgresql@17`: https://search.nixos.org/packages?channel=unstable&query=postgresql%4017
- `potrace`: https://search.nixos.org/packages?channel=unstable&query=potrace
- `redis`: https://search.nixos.org/packages?channel=unstable&query=redis
- `resvg`: https://search.nixos.org/packages?channel=unstable&query=resvg
- `ripgrep`: https://search.nixos.org/packages?channel=unstable&query=ripgrep
- `semgrep`: https://search.nixos.org/packages?channel=unstable&query=semgrep
- `sevenzip`: https://search.nixos.org/packages?channel=unstable&query=p7zip
- `sox`: https://search.nixos.org/packages?channel=unstable&query=sox
- `stow`: https://search.nixos.org/packages?channel=unstable&query=stow
- `swiftformat`: https://search.nixos.org/packages?channel=unstable&query=swiftformat
- `swiftlint`: https://search.nixos.org/packages?channel=unstable&query=swiftlint
- `tailscale`: https://search.nixos.org/packages?channel=unstable&query=tailscale
- `tmux`: https://search.nixos.org/packages?channel=unstable&query=tmux
- `tree`: https://search.nixos.org/packages?channel=unstable&query=tree
- `trivy`: https://search.nixos.org/packages?channel=unstable&query=trivy
- `universal-ctags`: https://search.nixos.org/packages?channel=unstable&query=universal-ctags
- `websocat`: https://search.nixos.org/packages?channel=unstable&query=websocat
- `wget`: https://search.nixos.org/packages?channel=unstable&query=wget
- `worktrunk`: https://search.nixos.org/packages?channel=unstable&query=worktrunk
- `yazi`: https://search.nixos.org/packages?channel=unstable&query=yazi-unwrapped
- `yq`: https://search.nixos.org/packages?channel=unstable&query=yq
- `yt-dlp`: https://search.nixos.org/packages?channel=unstable&query=yt-dlp
- `zoxide`: https://search.nixos.org/packages?channel=unstable&query=zoxide
- `zsh-autosuggestions`: https://search.nixos.org/packages?channel=unstable&query=zsh-autosuggestions
- `zsh-syntax-highlighting`: https://search.nixos.org/packages?channel=unstable&query=zsh-syntax-highlighting
- `daytonaio/tap/daytona`: https://search.nixos.org/packages?channel=unstable&query=daytona
- `hashicorp/tap/terraform`: https://search.nixos.org/packages?channel=unstable&query=terraform
- `jnsahaj/lumen/lumen`: https://search.nixos.org/packages?channel=unstable&query=lumen
- `nicosuave/tap/memex`: https://search.nixos.org/packages?channel=unstable&query=memex
- `steipete/tap/bird`: https://search.nixos.org/packages?channel=unstable&query=bird
- `steipete/tap/gogcli`: https://search.nixos.org/packages?channel=unstable&query=gogcli
- `steipete/tap/summarize`: https://search.nixos.org/packages?channel=unstable&query=summarize
- `stripe/stripe-cli/stripe`: https://search.nixos.org/packages?channel=unstable&query=stripe-cli
- `supabase/tap/supabase`: https://search.nixos.org/packages?channel=unstable&query=supabase-cli
- `withgraphite/tap/graphite`: https://search.nixos.org/packages?channel=unstable&query=graphite
- `aerospace`: https://search.nixos.org/packages?channel=unstable&query=aerospace
- `anaconda`: https://search.nixos.org/packages?channel=unstable&query=anaconda
- `codelayer`: https://search.nixos.org/packages?channel=unstable&query=codelayer
- `codex`: https://search.nixos.org/packages?channel=unstable&query=codex
- `codexbar`: https://search.nixos.org/packages?channel=unstable&query=codexbar
- `companion`: https://search.nixos.org/packages?channel=unstable&query=companion
- `emacs-app`: https://search.nixos.org/packages?channel=unstable&query=emacs
- `font-jetbrains-mono`: https://search.nixos.org/packages?channel=unstable&query=jetbrains-mono
- `font-symbols-only-nerd-font`: https://search.nixos.org/packages?channel=unstable&query=nerd-fonts.symbols-only
- `gcloud-cli`: https://search.nixos.org/packages?channel=unstable&query=google-cloud-sdk
- `ghostty@tip`: https://search.nixos.org/packages?channel=unstable&query=ghostty-bin
- `ngrok`: https://search.nixos.org/packages?channel=unstable&query=ngrok
- `opencode-desktop`: https://search.nixos.org/packages?channel=unstable&query=opencode-desktop
- `osaurus`: https://search.nixos.org/packages?channel=unstable&query=osaurus
- `pants`: https://search.nixos.org/packages?channel=unstable&query=pants
- `riptide-beta`: https://search.nixos.org/packages?channel=unstable&query=riptide-beta
- `riptide-dev`: https://search.nixos.org/packages?channel=unstable&query=riptide-dev
- `riptide-experimental`: https://search.nixos.org/packages?channel=unstable&query=riptide-experimental
- `virtualbox`: https://search.nixos.org/packages?channel=unstable&query=virtualbox
- `warp`: https://search.nixos.org/packages?channel=unstable&query=warp-terminal

9
home/bat.nix Normal file
View file

@ -0,0 +1,9 @@
{...}: {
programs.bat = {
enable = true;
config = {
theme = "gruvbox-dark";
};
};
}

View file

@ -1,6 +1,10 @@
{...}: {
imports = [
./bat.nix
./dotfiles.nix
./ghostty.nix
./git.nix
./tmux.nix
];
home.stateVersion = "24.11";

View file

@ -15,16 +15,11 @@ in {
home.file.".aerospace.toml".source = link "aerospace/.aerospace.toml";
home.file.".gitconfig".source = link "git/.gitconfig";
home.file.".zshenv".source = link "zsh/.zshenv";
home.file.".zshrc".source = link "zsh/.zshrc";
home.file.".config/nvim".source = link "nvim/.config/nvim";
home.file.".config/tmux/tmux.conf".source = link "tmux/.config/tmux/tmux.conf";
home.file.".config/tmux/session-list.sh".source = link "tmux/.config/tmux/session-list.sh";
home.file.".config/karabiner/karabiner.json".source =
link "karabiner/.config/karabiner/karabiner.json";
@ -36,9 +31,6 @@ in {
home.file.".codex/AGENTS.md".source = link "codex/.codex/AGENTS.md";
home.file.".codex/config.toml".source = link "codex/.codex/config.toml";
home.file."Library/Application Support/com.mitchellh.ghostty/config".source =
link "ghostty/Library/Application Support/com.mitchellh.ghostty/config.ghostty";
home.file."Library/Application Support/lazygit/config.yml".source =
link "lazygit/Library/Application Support/lazygit/config.yml";
}

55
home/ghostty.nix Normal file
View file

@ -0,0 +1,55 @@
{pkgs, ...}: {
programs.ghostty = {
enable = true;
package = pkgs.ghostty-bin;
installBatSyntax = true;
settings = {
theme = "Gruvbox Material Dark";
"font-family" = "Berkeley Mono";
"font-codepoint-map" = "U+f101-U+f25c=nonicons";
"background-opacity" = 1;
"font-size" = 17;
"window-padding-y" = 0;
"window-padding-x" = 0;
"window-padding-color" = "extend";
"mouse-scroll-multiplier" = 1;
keybind = [
"global:alt+space=toggle_visibility"
"shift+enter=text:\\n"
"alt+v=activate_key_table:vim"
"vim/"
"vim/j=scroll_page_lines:1"
"vim/k=scroll_page_lines:-1"
"vim/ctrl+d=scroll_page_down"
"vim/ctrl+u=scroll_page_up"
"vim/ctrl+f=scroll_page_down"
"vim/ctrl+b=scroll_page_up"
"vim/shift+j=scroll_page_down"
"vim/shift+k=scroll_page_up"
"vim/g>g=scroll_to_top"
"vim/shift+g=scroll_to_bottom"
"vim/slash=start_search"
"vim/n=navigate_search:next"
"vim/v=copy_to_clipboard"
"vim/y=copy_to_clipboard"
"vim/shift+semicolon=toggle_command_palette"
"vim/escape=deactivate_key_table"
"vim/q=deactivate_key_table"
"vim/i=deactivate_key_table"
"vim/catch_all=ignore"
];
"mouse-hide-while-typing" = true;
"macos-titlebar-style" = "hidden";
"macos-option-as-alt" = true;
"confirm-close-surface" = true;
"window-title-font-family" = "VictorMono NFM Italic";
"window-padding-balance" = true;
"window-save-state" = "always";
"shell-integration-features" = true;
"copy-on-select" = "clipboard";
"focus-follows-mouse" = true;
"link-url" = true;
};
};
}

58
home/git.nix Normal file
View file

@ -0,0 +1,58 @@
{...}: {
programs.git = {
enable = true;
lfs.enable = true;
settings = {
user = {
name = "Harivansh Rathi";
email = "rathiharivansh@gmail.com";
};
advice.detachedHead = false;
core = {
pager = "diff-so-fancy | less --tabs=4 -RFX";
editor = "nvim";
};
interactive.diffFilter = "diff-so-fancy --patch";
color = {
ui = true;
"diff-highlight" = {
oldNormal = "red bold";
oldHighlight = "red bold 52";
newNormal = "green bold";
newHighlight = "green bold 22";
};
diff = {
meta = 11;
frag = "magenta bold";
func = "146 bold";
commit = "yellow bold";
old = "red bold";
new = "green bold";
whitespace = "red reverse";
};
};
delta = {
"syntax-theme" = "gruvbox-dark";
"hunk-header-style" = "omit";
"minus-style" = ''syntax "#3c1f1e"'';
"minus-emph-style" = ''syntax "#72261d"'';
"plus-style" = ''syntax "#1d2c1d"'';
"plus-emph-style" = ''syntax "#2b4a2b"'';
};
push.autoSetupRemote = true;
"diff-so-fancy" = {
markEmptyLines = true;
stripLeadingSymbols = true;
useUnicodeRuler = true;
};
};
};
}

139
home/tmux.nix Normal file
View file

@ -0,0 +1,139 @@
{...}: {
programs.tmux = {
enable = true;
extraConfig = ''
# custom
# Set prefix to C-b (default)
set -g prefix C-b
bind C-b send-prefix
set -g mouse on
# Enable extended keys so Shift+Enter and other modified keys work
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
# Use Vim-style pane navigation (prefix + h/j/k/l)
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Switch sessions with prefix + H/J/K/L (capital)
bind H switch-client -p
bind J switch-client -n
bind K switch-client -p
bind L switch-client -n
# Switch sessions with prefix + H/J/K/L (capital)
bind J switch-client -n
bind K switch-client -p
bind H switch-client -p
bind L switch-client -n
# fzf pane switcher
bind f display-popup -w 80% -h 80% -E "\
tmux list-panes -a -F '#{session_name}:#{window_index}.#{pane_index} #{session_name}/#{window_name} [#{pane_current_command}] #{pane_current_path}' \
| fzf --reverse \
--preview 'tmux capture-pane -ep -t {1}' \
--preview-window right:60% \
| awk '{print \$1}' \
| xargs tmux switch-client -t"
# Auto-rename windows to the current running command
set -g automatic-rename on
set -g automatic-rename-format '#{pane_current_command}'
# Start all numbering at 1 instead of 0 for better key reachability
set-option -g base-index 1
set-option -g pane-base-index 1
set-option -g renumber-windows on
# Increase history limit, as we want an "almost" unlimited buffer.
set-option -g history-limit 100000
# Fix Terminal Title display, to not contain tmux specific information
set-option -g set-titles on
set-option -g set-titles-string "#{pane_title}"
# Open new windows and panes in the current working directory of the active pane.
bind c new-window -c "#{pane_current_path}"
bind - split-window -c "#{pane_current_path}"
bind "'" split-window -h -c "#{pane_current_path}"
# Enable support for terminal focus and extended keys.
set-option -s focus-events on
set-option -s extended-keys on
# Disable waiting time when pressing escape, for smoother Neovim usage.
set-option -s escape-time 0
# Styling
RED="#ea6962"
GREEN="#a9b665"
YELLOW="#d8a657"
BLUE="#7daea3"
MAGENTA="#d3869b"
CYAN="#89b482"
BLACK="#1d2021"
DARK_GRAY="#32302F"
LIGHT_GRAY="#4F4946"
BG="#32302F"
FG="#d4be98"
HALF_ROUND_OPEN="#(printf '\uE0B2')"
HALF_ROUND_CLOSE="#(printf '\uE0B0')"
TRIANGLE_OPEN="#(printf '\uE0B2')"
TRIANGLE_CLOSE="#(printf '\uE0B0')"
set-option -g status-position top
set-option -g status-style bg=''${BG},fg=''${FG}
set-option -g status-justify left
set-option -g status-left ""
set-option -g status-right "#(~/.config/tmux/session-list.sh)"
set-option -g status-left-length 100
set-option -g status-right-length 100
set-option -g window-status-format "\
\
#I\
#[fg=''${MAGENTA}]:\
#[fg=default]#W\
\
"
set-option -g window-status-current-format "\
#[bg=''${LIGHT_GRAY},fg=default] #I\
#[fg=''${RED}]:\
#[fg=default]#W \
#[bg=default]\
"
set-option -g window-status-separator ""
# Plugins (TPM)
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-save-interval '10'
run '~/.tmux/plugins/tpm/tpm'
'';
};
home.file.".config/tmux/session-list.sh" = {
executable = true;
text = ''
#!/bin/sh
current=$(tmux display-message -p '#S')
tmux list-sessions -F '#S' | while IFS= read -r s; do
if [ "$s" = "$current" ]; then
printf '#[bg=#4F4946,fg=#d8a657] %s #[bg=default,fg=default]' "$s"
else
printf ' %s ' "$s"
fi
done
'';
};
}

View file

@ -8,6 +8,7 @@
imports = [
../../modules/base.nix
../../modules/macos.nix
../../modules/packages.nix
../../modules/homebrew.nix
];

View file

@ -32,13 +32,12 @@
environment.shells = [pkgs.zsh];
environment.systemPackages = with pkgs; [
bat
curl
fd
fzf
git
gnupg
go
go_1_26
jq
just
neovim

View file

@ -11,125 +11,37 @@
taps = [
"daytonaio/tap"
"getcompanion-ai/tap"
"hashicorp/tap"
"homebrew/services"
"humanlayer/humanlayer"
"jnsahaj/lumen"
"nicosuave/tap"
"nikitabobko/tap"
"opencode-ai/tap"
"pantsbuild/tap"
"pipedreamhq/pd-cli"
"steipete/tap"
"stripe/stripe-cli"
"supabase/tap"
"tallesborges/zdx"
"withgraphite/tap"
];
brews = [
"apache-arrow"
"binwalk"
"cloc"
"cloudflared"
"cmake"
"coreutils"
"criterion"
"daytonaio/tap/daytona"
"diff-so-fancy"
"e2fsprogs"
"fd"
"ffmpeg"
"flyctl"
"fzf"
"gh"
"git-delta"
"git-filter-repo"
"git-lfs"
"gitleaks"
"gnu-time"
"go"
"hashicorp/tap/terraform"
"helm"
"imagemagick"
"jnsahaj/lumen/lumen"
"jq"
"k9s"
"kind"
"lazygit"
"libpq"
"librsvg"
"livekit"
"livekit-cli"
"llmfit"
"mactop"
"minikube"
"mint"
"mise"
"neovim"
"nicosuave/tap/memex"
"node"
"openjdk"
"pandoc"
"pipx"
"poppler"
"portaudio"
"postgresql@14"
"postgresql@16"
"postgresql@17"
"potrace"
"redis"
"resvg"
"ripgrep"
"semgrep"
"sevenzip"
"sox"
"python@3.13"
"steipete/tap/bird"
"steipete/tap/gogcli"
"steipete/tap/summarize"
"stow"
"stripe/stripe-cli/stripe"
"supabase/tap/supabase"
"swiftformat"
"swiftlint"
"tailscale"
"tmux"
"tree"
"trivy"
"universal-ctags"
"websocat"
"wget"
"withgraphite/tap/graphite"
"worktrunk"
"yazi"
"yq"
"yt-dlp"
"zoxide"
"zsh-autosuggestions"
"zsh-syntax-highlighting"
];
casks = [
"aerospace"
"anaconda"
"codelayer"
"codex"
"codexbar"
"companion"
"emacs-app"
"font-jetbrains-mono"
"font-symbols-only-nerd-font"
"gcloud-cli"
"ghostty@tip"
"ngrok"
"opencode-desktop"
"osaurus"
"pants"
"riptide-beta"
"riptide-dev"
"riptide-experimental"
"virtualbox"
"warp"
];
};
}

93
modules/packages.nix Normal file
View file

@ -0,0 +1,93 @@
{
pkgs,
username,
...
}: let
berkeleyMono = pkgs.stdenvNoCC.mkDerivation {
pname = "berkeley-mono";
version = "local";
src = /. + "/Users/${username}/Library/Fonts/BerkeleyMono-Regular.otf";
dontUnpack = true;
installPhase = ''
install -Dm644 "$src" "$out/share/fonts/opentype/BerkeleyMono-Regular.otf"
'';
};
in {
environment.systemPackages = with pkgs; [
aerospace
arrow-cpp
binwalk
cloc
cloudflared
cmakeCurses
codex
coreutils-prefixed
criterion
delta
diff-so-fancy
e2fsprogs
emacs
ffmpeg_7
flyctl
gh
ghostty-bin
git-filter-repo
git-lfs
gitleaks
gogcli
google-cloud-sdk
imagemagickBig
k9s
kind
kubernetes-helm-wrapped
lazygit
libpq
librsvg
livekit
livekit-cli
llmfit
mactop
minikube
mint
mise
ngrok
opencode-desktop
javaPackages.compiler.openjdk25
p7zip
pandoc
pipx
poppler
portaudio
postgresql_14
postgresql_16
potrace
redis
resvg
semgrep
sox
stow
stripe-cli
supabase-cli
swiftformat
swiftlint
tailscale
terraform
time
tmux
trivy
universal-ctags
warp-terminal
websocat
yazi-unwrapped
yq
yt-dlp
zsh-autosuggestions
zsh-syntax-highlighting
];
fonts.packages = with pkgs; [
berkeleyMono
jetbrains-mono
nerd-fonts.symbols-only
];
}