{"id":20795412,"url":"https://github.com/ooloth/dotfiles","last_synced_at":"2025-08-24T16:11:09.772Z","repository":{"id":41121509,"uuid":"284553120","full_name":"ooloth/dotfiles","owner":"ooloth","description":"My configurations for Claude Code, macOS, Zsh, Git, Node, Neovim, Tmux, Ghostty, Lazygit, Yazi, Powerlevel10k and VS Code, plus a script to apply them to a new Mac with one command.","archived":false,"fork":false,"pushed_at":"2025-08-24T01:09:56.000Z","size":3629,"stargazers_count":13,"open_issues_count":9,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-24T08:35:28.483Z","etag":null,"topics":["alacritty","claude-code","dotfiles","ghostty","git","homebrew","kitty","lazygit","macos-preferences","neovim","node","powerlevel10k","spaceship-prompt","ssh","symlinks","tmux","vscode","yazi","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ooloth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2020-08-02T22:33:08.000Z","updated_at":"2025-08-24T01:09:59.000Z","dependencies_parsed_at":"2023-12-21T06:46:52.665Z","dependency_job_id":"e83e06ac-29a5-4333-bf04-ee981f37e714","html_url":"https://github.com/ooloth/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ooloth/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooloth%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooloth%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooloth%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooloth%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ooloth","download_url":"https://codeload.github.com/ooloth/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooloth%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271901155,"owners_count":24841115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["alacritty","claude-code","dotfiles","ghostty","git","homebrew","kitty","lazygit","macos-preferences","neovim","node","powerlevel10k","spaceship-prompt","ssh","symlinks","tmux","vscode","yazi","zsh"],"created_at":"2024-11-17T16:21:33.784Z","updated_at":"2025-08-24T16:11:09.764Z","avatar_url":"https://github.com/ooloth.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My dotfiles\n\nA highly opinionated development environment configuration for macOS.\n\n## ⚠️ Important Disclaimer\n\n**This repository represents my personal preferences and workflow.** It's constantly evolving based on my needs and experiments. I strongly encourage you to:\n\n- **Fork this repo** and customize it to your preferences\n- **Browse and borrow** individual configurations that interest you\n- **Use it as inspiration** for your own dotfiles\n\nUnless you share my exact preferences (unlikely!), directly using this configuration will probably frustrate you. You've been warned! 😊\n\n## Philosophy\n\nThese dotfiles reflect years of iteration on my development workflow. They're optimized for:\n\n- Keyboard-driven workflows (minimal mouse usage)\n- Terminal-first development\n- Fast navigation and editing\n- Consistent keybindings across tools\n- Reducing context switching\n\nThe setup is intentionally opinionated and may include experimental configurations.\n\n## What's Included\n\n### Core Tools\n\n- **Shell**: [zsh](https://www.zsh.org/) with [Starship](https://starship.rs/) prompt\n- **Terminal Multiplexer**: [tmux](https://github.com/tmux/tmux) with custom keybindings\n- **Editor**: [Neovim](https://neovim.io/) with extensive plugin configuration\n- **Terminal Emulators**: [Kitty](https://sw.kovidgoyal.net/kitty/), [Alacritty](https://alacritty.org/), [Ghostty](https://ghostty.org/)\n- **Version Control**: Git with [lazygit](https://github.com/jesseduffield/lazygit) and [delta](https://github.com/dandavison/delta)\n- **File Manager**: [yazi](https://github.com/sxyazi/yazi)\n- **Package Management**: [Homebrew](https://brew.sh/) for macOS packages\n\n### Development Tools\n\n- **Languages**: Node.js (via [fnm](https://github.com/Schniz/fnm)), Rust, Python (via [uv](https://github.com/astral-sh/uv)), Go\n- **Containers**: Docker with [lazydocker](https://github.com/jesseduffield/lazydocker)\n- **Kubernetes**: kubectl with [k9s](https://k9scli.io/)\n- **Search**: [ripgrep](https://github.com/BurntSushi/ripgrep), [fd](https://github.com/sharkdp/fd), [fzf](https://github.com/junegunn/fzf)\n\n### Additional Features\n\n- Machine-specific configurations (Personal Air, Mac Mini, Work machines)\n- Automated installation and update scripts\n- macOS system preferences configuration\n- VS Code settings and extensions\n- Custom keyboard layout (Kinesis Advantage 2)\n\n## Prerequisites\n\n1. Connect to the internet\n2. Sign into iCloud in System Preferences (required for App Store installations via `mas`)\n3. Install Xcode Command Line Tools:\n   ```sh\n   xcode-select --install\n   ```\n4. Update macOS:\n   ```sh\n   sudo softwareupdate --install --all --restart\n   ```\n   Repeat until fully updated.\n\n## Installation\n\n### Quick Install (Recommended)\n\n```sh\ncurl -s https://raw.githubusercontent.com/ooloth/dotfiles/main/setup.zsh | zsh\n```\n\nThis will:\n\n1. Clone this repository to `~/Repos/ooloth/dotfiles`\n2. Run all installation scripts in sequence\n3. Set up symlinks for all configurations\n4. Configure macOS system preferences\n\n### Manual Installation\n\nIf you prefer more control:\n\n```sh\n# Clone the repository\ngit clone https://github.com/ooloth/dotfiles.git ~/Repos/ooloth/dotfiles\ncd ~/Repos/ooloth/dotfiles\n\n# Run the setup script\n./setup.zsh\n\n# Preview what would be installed without making changes\n./setup.zsh --dry-run\n\n# Or run individual installation scripts\ncd bin/install\nsource ssh.zsh         # SSH keys and GitHub auth\nsource github.zsh      # GitHub CLI setup\nsource homebrew.zsh    # Homebrew and packages\nsource zsh.zsh         # Shell configuration\nsource rust.zsh        # Rust toolchain\nsource uv.zsh          # Python package manager\nsource node.zsh        # Node.js via fnm\nsource tmux.zsh        # tmux plugins\nsource neovim.zsh      # Neovim plugins\nsource content.zsh     # Personal content repos\nsource settings.zsh    # macOS preferences\n```\n\n## After Installation\n\n1. **Restart your terminal** for all changes to take effect\n2. **Open tmux** and install plugins: Press `prefix + I` (default prefix is `Ctrl-a`)\n3. **Open Neovim** and wait for plugins to install automatically\n4. **Sign into applications** that require authentication\n\n## Customization Guide (After Forking)\n\n### Machine-Specific Configuration\n\nThe setup automatically detects machine type based on hostname:\n\n- Machines with \"Air\" in the name → Personal laptop configuration\n- Machines with \"Mini\" in the name → Home server configuration\n- All others → Work machine configuration\n\nTo customize for your machines, edit the detection logic in `setup.zsh` or set the environment variables manually.\n\n### Key Files to Customize\n\n1. **Git Configuration**: Edit `git/config` with your information\n2. **Shell Aliases**: Modify `zsh/config/aliases.zsh`\n3. **Neovim**: Customize `config/nvim/init.lua`\n4. **Homebrew Packages**: Edit `homebrew/config/Brewfile`\n5. **macOS Preferences**: Adjust `macos/macos-defaults`\n\n### Adding Your Own Tools\n\n1. Add Homebrew packages to `homebrew/config/Brewfile`\n2. Add configuration files to `config/\u003ctool-name\u003e/`\n3. Add symlinks in `bin/update/symlinks.zsh`\n4. Run `symlinks` to create the links\n\n## Updating\n\n```sh\n# Update everything (recommended)\nu\n\n# Or run individual update scripts directly\n$DOTFILES/bin/update/homebrew.zsh   # Update Homebrew packages\n$DOTFILES/bin/update/npm.zsh        # Update global npm packages\n$DOTFILES/bin/update/neovim.zsh     # Update Neovim plugins\n$DOTFILES/bin/update/tmux.zsh       # Update tmux plugins\n$DOTFILES/bin/update/rust.zsh       # Update Rust toolchain\n$DOTFILES/bin/update/symlinks.zsh   # Recreate symlinks\n```\n\nThe `u` function runs all updates and reloads your shell.\n\n## Troubleshooting\n\n### Symlinks Already Exist\n\nThe installation preserves existing files. To replace them:\n\n1. Back up the existing file\n2. Remove it manually\n3. Run `symlinks`\n\n### Command Not Found\n\nEnsure `/opt/homebrew/bin` (Apple Silicon) or `/usr/local/bin` (Intel) is in your PATH.\n\n### Neovim Plugins Not Loading\n\n1. Open Neovim\n2. Run `:Lazy sync`\n3. Restart Neovim\n\n### Machine Detection Not Working\n\nSet the environment variables manually in your shell:\n\n```sh\nexport IS_WORK=true   # or false\nexport IS_AIR=true    # or false\nexport IS_MINI=true   # or false\n```\n\n## Contributing\n\nSince these are personal dotfiles, I'm not accepting pull requests for feature additions. However, please feel free to:\n\n- Open issues for bugs or questions\n- Fork and customize for your own use\n- Share your own improvements in your fork\n\n## License\n\nMIT - See [LICENSE.md](LICENSE.md)\n\n## Inspiration\n\n- [Dotfiles community](https://dotfiles.github.io/)\n- [Nick Nisi's dotfiles](https://github.com/nicknisi/dotfiles)\n- The many developers who share their configurations publicly\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fooloth%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fooloth%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fooloth%2Fdotfiles/lists"}