{"id":20958004,"url":"https://github.com/brucificus/dotfiles","last_synced_at":"2025-06-30T00:06:22.774Z","repository":{"id":73071220,"uuid":"356762393","full_name":"brucificus/dotfiles","owner":"brucificus","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-13T18:28:03.000Z","size":339875,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-13T19:32:34.375Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brucificus.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":"2021-04-11T04:03:14.000Z","updated_at":"2025-06-13T18:28:10.000Z","dependencies_parsed_at":"2025-06-13T19:36:06.049Z","dependency_job_id":null,"html_url":"https://github.com/brucificus/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/brucificus/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brucificus%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brucificus%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brucificus%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brucificus%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brucificus","download_url":"https://codeload.github.com/brucificus/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brucificus%2Fdotfiles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262685694,"owners_count":23348451,"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","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":[],"created_at":"2024-11-19T01:44:55.574Z","updated_at":"2025-06-30T00:06:22.729Z","avatar_url":"https://github.com/brucificus.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bruce's Dotfiles\n\n## What's this?\n\n\u003e ⚠️ These are dotfiles personalized for my own idiosyncrasies, they might not be particularly useful for strangers.\n\u003e 👆 Please feel free to peruse anyway, though, in case you are interested in setting something like this up for yourself.\n\nThe basics?\n\nAfter cloning this repo, run `install` - in one of PowerShell, Bash, or ZSH. It will automatically set up the shell personalizations that I use on a daily basis.\n\nThe install script is idempotent: it can safely be run multiple times.\n\n\u003e ℹ️ NOTE: This repo contains cross-machine *shared* content. Machine-specific configuration is located in branches of [`dotfiles-local`](https://github.com/brucificus/dotfiles-local).\n\n## 🚀 Usage\n\n### 🪜 Prerequisites\n\nThis repo uses a Git submodule of [anishathalye/dotbot](https://github.com/anishathalye/dotbot) for installation.\n\nYou'll need Git, obviously. Also Python, for Dotbot.\n\nAnd a shell. One or more of: PowerShell, ZSH, or Bash.\n\nThis repo gets regular usage on Windows 10, Windows 11, and Ubuntu 22 LTS (under WSL2). It tolerates slightly older versions of Ubuntu, but I don't test on them and can't guarantee compatibility.\n\n#### 🪟 Windows \u0026 Symlinks\n\nIf you are using a modern version of Windows, you'll need to enable Developer Mode in the Windows Settings app, and configure it to enable the creation of symlinks.\n\nIf you are using an older version of Windows, you'll need to run the install script in an elevated session.\n\n\u003e ⚠️ If you use an elevated session to install, be aware that some programs may not work as expected. Files/folders created in elevated sessions are owned by the `Administrators` group, rather than your user account.\n\n### 📦 Installation\n\nPer my conventions, this is the workflow that works well for me (for machines that already have branches in `dotfiles-local`):\n\n#### 1. Clone the repos\n\nYou've got to get this repo and its Git submodules onto your machine. If you've got `git` and access to the internet, this is fairly straightforward.\n\n\u003cdetails\u003e\n\u003csummary\u003ePwsh\u003c/summary\u003e\n\n```powershell\ncd ~\nmkdir source/repos/_forks\ncd source/repos/_forks\ngit clone https://github.com/brucificus/dotfiles.git brucificus--dotfiles --recurse-submodules\ngit clone https://github.com/brucificus/dotfiles-local.git brucificus--dotfiles-local --recurse-submodules\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBash/Zsh\u003c/summary\u003e\n\n```bash\ncd ~\nmkdir -p source/repos/_forks\ncd source/repos/_forks\ngit clone https://github.com/brucificus/dotfiles.git brucificus--dotfiles --recurse-submodules\ngit clone https://github.com/brucificus/dotfiles-local.git brucificus--dotfiles-local --recurse-submodules\n```\n\n\u003c/details\u003e\n\n\u003e 👆 If you *don't* have Git (or internet access from the machine), you can download the repos as ZIP files and extract them to the correct locations. You'll also need to download the Dotbot submodule separately, and extract it to the correct location.\n\n#### 2. Switch to the correct branch for `dotfiles-local`\n\n\u003cdetails\u003e\n\u003csummary\u003ePwsh\u003c/summary\u003e\n\n```powershell\ncd brucificus--dotfiles-local\n[string] $correctlyCasedHostname = $(Get-ItemProperty HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters).Hostname\ngit switch origin/personal/$correctlyCasedHostname/win -c personal/$correctlyCasedHostname/win --track\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBash/Zsh\u003c/summary\u003e\n\n```bash\ncd brucificus--dotfiles-local\ngit switch origin/personal/$NAME/wsl -c personal/$NAME/wsl --track\n```\n\n\u003c/details\u003e\n\n#### 3. Run setup for `dotfiles` and `dotfiles-local`\n\n\u003cdetails\u003e\n\u003csummary\u003ePwsh\u003c/summary\u003e\n\n```powershell\ncd ../brucificus--dotfiles\n./install.ps1 # then correct conflicts and re-run\ncd ../brucificus--dotfiles-local\n./install.ps1 # then correct conflicts and re-run\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBash/Zsh\u003c/summary\u003e\n\n```bash\ncd ../brucificus--dotfiles\nchmod +x ./install.sh\n./install.sh # then correct conflicts and re-run\ncd ../brucificus--dotfiles-local\nchmod +x ./install.sh\n./install.sh # then correct conflicts and re-run\n```\n\n\u003c/details\u003e\n\n### 🔧 Customization Scripts: Making Local (Non-Git) Customizations\n\nWhen using this repo, you may make local customizations by creating script files with particular names in your home directory, depending on the shell you use. This allows you to make changes that are specific to your machine, without having to commit them to a Git repository.\n\nThe naming pattern is, roughly, `~/.{shell}{stage}_local_{when}[.{ext}]`.\n\nFiles with these names (in your home directory!) are sourced by this repo's shell startup scripts, and can be used to set up environment variables, aliases, functions, and other shell configuration that is specific to your machine and too sensitive to be stored in a Git repository.\n\nThe scripts are sourced in a particular order, depending on the shell being used and the stage of the shell startup process.\n\n#### 📝 Common Customization Scripts\n\n\u003cdetails\u003e\n\u003csummary\u003eZsh, Bash, or Dash\u003c/summary\u003e\n\n| File Name | Shell | When It Runs |\n| --- | --- | --- |\n| `~/.shell_local_before` | Zsh/Bash/Dash | First, before any other shell scripts. |\n| `~/.zshrc_local_before` | Zsh only | Runs before `.zshrc`. |\n| `~/.zshrc_local_after` | Zsh only | Runs after `.zshrc`. |\n| `~/.shell_local_after` | Zsh/Bash/Dash | Last, after all other scripts. |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ePowerShell\u003c/summary\u003e\n\n| File Name | When It Runs |\n| --- | --- |\n| `~/.shell_local_before.ps1` | First, before any other shell scripts. |\n| `~/.shellrc_local_before.ps1` | 2nd |\n| `~/.pwshrc_local_before.ps1` | 3rd |\n| `~/.pwshrc_local_after.ps1` | n-2 |\n| `~/.shellrc_local_after.ps1` | n-1 |\n| `~/.shell_local_after.ps1` | Last, after all other scripts. |\n\n\u003c/details\u003e\n\n#### 🔬 Niche Details\n\nRegardless as to shell, the customization scripts are sourced based on an order of precedence, with names keyed for the shell in question as well as the \"stage\" of the shell startup process.\n\nThis allows a lot of flexibility in customizing the shell startup process.\n\nThe \"shell\" keywords in the filename patterns are:\n\n- `shell`, for all shells;\n- `zsh`, for Zsh only;\n- `bash`, for Bash only;\n- `pwsh`, for PowerShell only.\n\nThe \"stage\" keywords supported in the filename patterns are as follows (except for PowerShell):\n\n- `env`, for environment setup;\n- `rc`, for shell configuration;\n- `login`, for login shell configuration;\n- `logout`, for session cleanup.\n\n(We only support an `rc` stage for PowerShell.)\n\nI don't really use this feature much, but it's there in case it's needed.\n\n### 🧹 Uninstallation\n\nGood luck with that. 😅\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrucificus%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrucificus%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrucificus%2Fdotfiles/lists"}