{"id":21213824,"url":"https://github.com/msetsma/.dotfiles","last_synced_at":"2026-05-01T08:32:45.740Z","repository":{"id":261988708,"uuid":"885525247","full_name":"msetsma/.dotfiles","owner":"msetsma","description":"My dotfiles for Windows Mac \u0026 Linux! (Nushell Wezterm Neovim \u0026 more)","archived":false,"fork":false,"pushed_at":"2026-04-29T10:44:41.000Z","size":657,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-29T12:26:46.083Z","etag":null,"topics":["config","dotfiles","fastfetch","neovim","nushell","starship","wezterm","wezterm-config"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"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/msetsma.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":"2024-11-08T18:54:11.000Z","updated_at":"2026-04-29T10:44:45.000Z","dependencies_parsed_at":"2024-11-09T19:17:48.977Z","dependency_job_id":"50c2c94f-078c-4d27-84cf-b6056ed5b23a","html_url":"https://github.com/msetsma/.dotfiles","commit_stats":null,"previous_names":["msetsma/.dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/msetsma/.dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msetsma%2F.dotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msetsma%2F.dotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msetsma%2F.dotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msetsma%2F.dotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msetsma","download_url":"https://codeload.github.com/msetsma/.dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msetsma%2F.dotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32490810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"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":["config","dotfiles","fastfetch","neovim","nushell","starship","wezterm","wezterm-config"],"created_at":"2024-11-20T21:21:32.801Z","updated_at":"2026-05-01T08:32:45.735Z","avatar_url":"https://github.com/msetsma.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles\n\nFeel free to take what you want, but I would advise against blindly installing without reviewing.\n\n\u003e These dotfiles are unix-first, adapted to work on Windows via WSL2.\n\n---\n\n## Architecture\n\nThis repo is designed around a **unix-first** philosophy. The core dev environment (zsh, neovim, CLI tools) targets unix, and Windows gets there via WSL2.\n\n```\nmacOS:    native apps (Ghostty, AeroSpace) --\u003e unix backend (zsh, neovim, tmux)\nWindows:  native apps (WezTerm, AHK)       --\u003e WSL2 --\u003e unix backend (zsh, neovim, tmux)\n```\n\nBoth platforms converge on the same `common/` configs for the shell and dev tools. The difference is only in the GUI layer above.\n\n### What lives where\n\n| Directory  | Purpose                          | Used by           |\n|------------|----------------------------------|--------------------|\n| `common/`  | Base layer -- shell, dev tools, editors | All platforms |\n| `macos/`   | macOS-only GUI apps              | macOS only         |\n| `windows/` | Windows-only GUI apps            | Windows host only  |\n\n---\n\n## Requirements\n\n1. **Unix-First** -- configs are written for unix. Windows uses WSL2 to run them.\n2. **Performance-First** -- preference for modern, Rust-based tools (eza, bat, ripgrep, fd).\n3. **Easy Installation** -- `dotter` for symlinks, `cargo-make` for setup automation.\n\n---\n\n## How to Install\n\n### Prerequisites\n\nInstall Rust and cargo-make:\n\n```bash\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# Verify\nrustc --version \u0026\u0026 cargo --version\n\n# Install cargo-make\ncargo install cargo-make\n```\n\n### Clone and init\n\n```bash\ngit clone git@github.com:msetsma/.dotfiles.git\ncd .dotfiles\ncargo make init\n```\n\n### Windows (two-step setup)\n\nOn Windows, you run init twice -- once on the Windows host for native apps, and once inside WSL2 for the dev environment:\n\n```bash\n# 1. Windows host (PowerShell/cmd) -- installs Scoop packages, WezTerm, AHK\ncargo make init\n\n# 2. Inside WSL2 -- installs zsh, oh-my-zsh, CLI tools, symlinks common/ configs\ncargo make init\n```\n\nThe repo lives on the Windows filesystem and is accessed from WSL2 via `/mnt/c/Users/\u003cyou\u003e/.dotfiles`.\n\n### View available commands\n\n```bash\ncargo make help    # Quick reference\ncargo make info    # All commands\n```\n\n---\n\n## Common Tasks\n\n### Setup \u0026 Updates\n\n```bash\ncargo make init            # Complete environment setup\ncargo make update          # Update all tools and packages\ncargo make check-outdated  # Check for available updates\ncargo make doctor          # System health check\n```\n\n### Package Management (cross-platform)\n\n```bash\ncargo make pkg-export      # Export packages\ncargo make pkg-import      # Import packages\ncargo make pkg-cleanup     # Cleanup old versions\ncargo make pkg-doctor      # Check for issues\n```\n\nPlatform-specific: `brew-*` (macOS), `scoop-*` (Windows), `apt` (WSL2/Linux).\n\n### Dotfile Deployment\n\n```bash\ncargo make deploy          # Deploy dotfiles via dotter\ncargo make dotfiles-check  # Validate without deploying\n```\n\n### Git Backup\n\n```bash\ncargo make backup                        # Quick backup (auto-commit message)\ncargo make deploy-and-backup             # Deploy + backup (all-in-one)\ncargo make backup-with-message -- \"msg\"  # Custom message\n```\n\n### Python/pipx\n\n```bash\ncargo make pipx-list       # List installed packages\ncargo make pipx-export     # Export to file\ncargo make pipx-install    # Install from file\n```\n\n### Utilities\n\n```bash\ncargo make clean           # Cleanup caches\ncargo make info            # Show all available commands\n```\n\n---\n\n## Tools\n\n\u003e Common tools are cross-platform. Installation methods differ by OS.\n\n### Common (all platforms)\n\n[Neovim](https://neovim.io/) | [Zsh](https://www.zsh.org/) + [Oh My Zsh](https://github.com/ohmyzsh/ohmyzsh) | [tmux](https://github.com/tmux/tmux) | [Mosh](https://mosh.org/) | [Mise](https://github.com/jdx/mise) | [Dotter](https://github.com/SuperCuber/dotter) | [Cargo-Make](https://github.com/sagiegurari/cargo-make) | [Starship](https://github.com/starship/starship) | [fzf](https://github.com/junegunn/fzf) | [eza](https://github.com/eza-community/eza) | [bat](https://github.com/sharkdp/bat) | [ripgrep](https://github.com/BurntSushi/ripgrep) | [fd](https://github.com/sharkdp/fd) | [yazi](https://github.com/sxyazi/yazi) | [lazygit](https://github.com/jesseduffield/lazygit) | [Bottom](https://github.com/ClementTsang/bottom) | [Ruff](https://github.com/astral-sh/ruff) | [Vivid](https://github.com/sharkdp/vivid) | [FiraCode](https://github.com/tonsky/FiraCode)\n\n### macOS-only (GUI layer)\n\n[Ghostty](https://ghostty.org/) | [AeroSpace](https://github.com/nikitabobko/AeroSpace) | [borders](https://github.com/FelixKratz/JankyBorders)\n\n### Windows-only (GUI layer)\n\n[WezTerm](https://github.com/wez/wezterm) | [AutoHotkey](https://github.com/AutoHotkey/AutoHotkey) | [Scoop](https://scoop.sh/)\n\n---\n\n## Platform Detection\n\nShell configs use `common/zsh/platform.zsh` to detect the runtime environment:\n\n- `IS_MAC` -- macOS (Darwin)\n- `IS_WSL` -- WSL2 (Linux with Microsoft kernel)\n- `IS_LINUX` -- generic Linux\n\nThis drives platform-specific behavior like clipboard (`pbcopy` vs `clip.exe`), URL opening (`open` vs `wslview`), and credential storage (Keychain vs env files).\n\n---\n\n## Gotchas\n\n### Compiler Suite\n\n- **macOS**: Clang (via Xcode command line tools)\n- **Windows**: MSVC (Visual Studio Build Tools, \"Desktop development with C++\" workload)\n- **WSL2/Linux**: GCC (`sudo apt install build-essential`)\n\n### WSL2 Line Endings\n\nThe repo uses `.gitattributes` to enforce LF line endings for shell scripts. This prevents issues when the repo lives on the Windows filesystem and is accessed from WSL2 via `/mnt/c`.\n\n### WSL2 Hostname\n\nDotter uses hostname-based machine configs (`.dotter/\u003chostname\u003e.toml`). If your WSL2 hostname matches your Windows hostname, set a distinct one in `/etc/wsl.conf`:\n\n```ini\n[network]\nhostname = mitch-wsl\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsetsma%2F.dotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsetsma%2F.dotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsetsma%2F.dotfiles/lists"}