{"id":43179128,"url":"https://github.com/kaffolder7/dotfiles","last_synced_at":"2026-02-01T03:30:54.163Z","repository":{"id":334958351,"uuid":"1126816998","full_name":"kaffolder7/dotfiles","owner":"kaffolder7","description":"💻 Dotfiles and macOS dev setup (Homebrew or Nix + Home Manager).","archived":false,"fork":false,"pushed_at":"2026-01-27T19:33:22.000Z","size":110,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-28T04:52:24.934Z","etag":null,"topics":["bash","bootstrap","developer-environment","dotfiles","home-manager","homebrew","macos","nix","nix-flakes"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaffolder7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-02T16:21:53.000Z","updated_at":"2026-01-27T19:33:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kaffolder7/dotfiles","commit_stats":null,"previous_names":["kaffolder7/dotfiles"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/kaffolder7/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaffolder7%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaffolder7%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaffolder7%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaffolder7%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaffolder7","download_url":"https://codeload.github.com/kaffolder7/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaffolder7%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28966341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T02:14:24.993Z","status":"ssl_error","status_checked_at":"2026-02-01T02:13:55.706Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","bootstrap","developer-environment","dotfiles","home-manager","homebrew","macos","nix","nix-flakes"],"created_at":"2026-02-01T03:30:53.532Z","updated_at":"2026-02-01T03:30:54.158Z","avatar_url":"https://github.com/kaffolder7.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotfiles 🧰\n\nPersonal macOS dotfiles with a focus on:\n- ⚡ fast [Zsh](https://www.zsh.org/) startup\n- 🗂️ XDG-friendly config layout\n- ♻️ reproducible installs via [Homebrew](https://brew.sh/)\n- 🔍 minimal magic, explicit behavior\n\n✅ Tested on [macOS (Apple Silicon)](https://support.apple.com/en-us/116943).\n\n---\n\n## ⏱️ Quick start\n\n```bash\ngit clone https://github.com/kaffolder7/dotfiles ~/src/dotfiles\ncd ~/src/dotfiles\n./install.sh --brew\n```\n_The installer also symlinks the `dot` helper command into `~/.local/bin`._\n\nThis will:\n- Install [Homebrew](https://brew.sh/) (if missing)\n- Install packages from [`Brewfile`](Brewfile)\n- Symlink dotfiles into your home directory\n- Back up any existing files before replacing them\n\nTo overwrite existing files without backups:\n```shell\n./install.sh --brew --force\n```\n\n\u003c!-- After setup, run `dot doctor` to sanity-check the environment. --\u003e\nAfter install, you can sanity-check everything with: `dot doctor`.\n\n---\n\n## 🩺 Dotfiles doctor\n\nA small built-in sanity check for this repo.\n\nAfter installation, you can run:\n\n```bash\ndot doctor\n```\n\nThis verifies:\n- which install route is active (Homebrew vs Home Manager)\n- required XDG paths exist and are writable\n- required cache and history directories are present\n- file-based secrets are set up correctly\n- expected tools (`llm`, `codex`, etc.) are available\n\nThink of it like `brew doctor`, but scoped specifically to _this_ dotfiles repo.\n\nIt’s safe to run anytime and is especially useful:\n- after a fresh install\n- when switching machines\n- if something feels “off” with your shell\n\nIt does not print secret values — only presence and basic health checks.\n\n---\n\n## Installation routes\n\nThis repo supports two install styles:\n\n### 🧪 Homebrew (default)\nRecommended for most macOS setups.\n\n- Uses `install.sh --brew`\n- Zsh config is loaded directly from `~/.zshrc`\n- Homebrew manages all packages\n\n### 🧬 Home Manager (optional / advanced)\nFor users already using Nix + Home Manager.\n\n- Zsh is managed via `nix/home.nix`\n- Dotfiles are still shared, but loaded via Home Manager\n- `DOTFILES_ROUTE=hm` is set automatically\n\nBoth routes share the same Zsh modules and XDG layout.\n\n---\n\n## What gets installed / linked\n\n### Zsh\n- `~/.zshrc` → `home/.zshrc`\n- Modular config loaded from:\n  ```\n  ~/.config/zsh/zshrc.d/\n  ```\n\n\u003c!-- ## Local overrides\n- Copy `git/.gitconfig.local.example` to `~/.gitconfig.local` and edit. --\u003e\n\nFeatures:\n- [Powerlevel10k](https://github.com/romkatv/powerlevel10k) _([instant prompt](https://github.com/romkatv/powerlevel10k?tab=readme-ov-file#instant-prompt) enabled)_ 🚀\u003c!-- - [Starship](https://starship.rs/) prompt --\u003e\n- Cached completions\n- [Autosuggestions](https://github.com/zsh-users/zsh-autosuggestions) + [autocomplete](https://github.com/marlonrichert/zsh-autocomplete)\n- [Syntax highlighting](https://github.com/zsh-users/zsh-syntax-highlighting/) (loaded last)\n- History + cache under XDG paths\n- [`fastfetch`](https://github.com/fastfetch-cli/fastfetch) runs once per session (after prompt)\n\n### Git\n- `~/.gitconfig` → `home/.gitconfig`\n- Personal settings live in `~/.gitconfig.local` (not committed)\n\nCreate it with:\n```\ncp home/.gitconfig.local.example ~/.gitconfig.local\n```\n\n### Ghostty\n\n[Ghostty](https://ghostty.org/) is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.\n- `~/.config/ghostty/config` → `xdg/ghostty/config`\n\nIncludes:\n- [JetBrains Mono Nerd Font](https://www.jetbrains.com/lp/mono/)\n- [Ayu](https://github.com/ayu-theme/ayu-vim) theme\n- Transparent background with blur\n- Sensible padding and defaults\n\n### Nano\n- `~/.config/nano/nanorc` → `xdg/nano/nanorc`\n\n---\n\n## 🧪 Homebrew\n\n[Homebrew](https://brew.sh/) is _the_ missing package manager for macOS (or Linux).\n\nAll packages are managed via `Brewfile`.\n- Safe by default: installs missing packages only\n- To enforce a clean system (⚠️ destructive):\n  ```\n  brew bundle --cleanup\n  ```\n\nTo update the Brewfile after changes:\n```\nbrew bundle dump --force\n```\n\n---\n\n## 🔐 Secrets\n\nSecrets are stored as files (not env vars) under: `~/.config/secrets/`.\n\nExamples:\n- `openai_api_key_llm`\n- `openai_api_key_codex`\n\nThey are:\n- ignored by git\n- read only when needed\n- injected per-command (not exported globally)\n\nSee `xdg/zsh/zshrc.d/70-openai.zsh` for details.\n\n---\n\n## 🧩 Local overrides (recommended)\n\n### Zsh\n\nCreate a local-only file:\n```\ncp home/.zshrc.local.example ~/.zshrc.local\n```\n\nAnything in `~/.zshrc.local` is sourced last and ignored by git.\n\n### Git\n\nEdit `~/.gitconfig.local` for name, email, signing keys, etc.\n\n---\n\n## 🗺️ Repo layout\n```shell\ndotfiles/\n├── Brewfile                        # Homebrew bundle: packages, casks, VS Code extensions\n├── install.sh                      # Main installer (Homebrew or Nix/Home Manager routes)\n├── bin/\n│   ├── dot                         # Lightweight helper CLI entrypoint\n│   └── dot-doctor                  # Sanity-check tool for paths, secrets, and install state\n├── codex/\n│   └── config.toml                 # Codex CLI provider/model configuration\n├── home/\n│   ├── .gitconfig                  # Base Git config (includes local overrides)\n│   ├── .gitconfig.local.example    # Example for user-specific Git identity (not committed)\n│   ├── .zshrc                      # Minimal Zsh entrypoint (loads modular config)\n│   └── .zshrc.local.example        # Local-only Zsh overrides (ignored by git)\n├── nix/\n│   └── home.nix                    # Home Manager configuration (optional / advanced)\n├── secrets/\n│   ├── openai_api_key.example        # (Optional) single shared OpenAI key\n│   ├── openai_api_key_codex.example  # Example Codex-specific OpenAI key\n│   └── openai_api_key_llm.example    # Example LLM-specific OpenAI key  # Real secrets live in ~/.config/secrets (not committed)\n├── xdg/\n│   ├── ghostty/\n│   │   └── config             # Ghostty terminal configuration\n│   ├── nano/\n│   │   └── nanorc             # Nano editor config (XDG-compliant)\n│   └── zsh/\n│       └── zshrc.d/\n│           ├── 00-env.zsh          # Core environment setup (XDG, PATH, cache dirs)\n│           ├── 10-homebrew.zsh     # Homebrew shell environment (brew shellenv)\n│           ├── 20-completion.zsh   # Zsh completion + caching (non-HM route)\n│           ├── 30-history.zsh      # History behavior + XDG_STATE_HOME storage\n│           ├── 40-aliases.zsh      # Shell aliases (non-HM route)\n│           ├── 50-prompt.zsh       # Powerlevel10k prompt setup\n│           ├── 60-plugins.zsh      # Zsh plugins (autosuggest, autocomplete, highlighting)\n│           ├── 70-openai.zsh       # OpenAI / LLM / Codex helpers + file-based secrets\n│           ├── 80-hooks.zsh        # Hooks (e.g. fastfetch once per session)\n│           └── 90-local.zsh        # Local Zsh overrides (~/.zshrc.local)\n├── .gitignore\n├── flake.lock                # Nix flake lockfile (pins dependencies)\n├── flake.nix                 # Nix flake entrypoint for Home Manager\n└── README.md\n```\n\n---\n\n## 📝 Notes\n- Intentionally avoids [Oh My Zsh](https://ohmyz.sh/) _(...Powerlevel10k is Zsh-native / faster)_\u003c!-- - _Another option might be to utilize [Oh My Posh](https://ohmypo.sh/)_ --\u003e\n- No output is produced before Powerlevel10k instant prompt\n- Designed to be safe to re-run multiple times\n\nClone it, run it, forget about it. ✨","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaffolder7%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaffolder7%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaffolder7%2Fdotfiles/lists"}