As documented in the README's adopting section, this repo and its scripts are aimed at developers/techies. If you are stuck or need help in any fashion, you can reach out to me at my email.
For those who follow this repo, here's the changelog for ease of adoption:
- Nested all Firefox-based profiles one level deeper.
These changes are optional, but if you don't follow them, then the aliases/scripts pertaining to the browser profiles repo can be messed up..
- Quit any FF-based browser before rebasing from my repo.
- Run
git -C "${DOTFILES_DIR}" upreb
- Resolve all conflicts.
- Open Finder on the
${PERSONAL_PROFILES_DIR}/
- Inside each of the FF-based profiles folders, create a new folder called
DefaultProfile
and move all other sibling files/folders into that one. - Edit the
profiles.ini
andinstalls.ini
files at the root of the FF profile folder, and add/DefaultProfile
to the lines referring to the profile folder (usually it'll be a relative path). - Restart your FF-based browser to verify that all functionality continues to work.
- Added dev dependencies for zen-browser.
- Unignore some files from the
personal
folder that were somehow ignored globally.
- Added new script
scripts/add-upstream-git-config.sh
.
- Fixed documentation and reduced hardcoding of upstream repo-owner's name.
- Introduced a new script to cleanup browser profiles folders.
- [fresh-install-of-osx.sh] Minor refactoring to enhance
clone_repo_into
to handle an optional target git branch which is also validated.
- [.aliases] Added extra checks for the
status_all_repos
andcount_all_repos
utility functions.
- Removed
Raycast
from being tracked via the profiles repo since that corrupts Raycast's internal db.
These instructions are only necessary if you had previously adopted changes from v1.0-24
-
In Raycast, use the
Export Settings & Data
option to export your current settings. -
After successfully exporting the settings, quit Raycast and ensure that Raycast is completely shut down.
-
Rebase the dotfiles repo, fix any conflicts and run the
install-dotfiles.rb
script. -
Manually reconcile the diffs / dirty state of
files/--PERSONAL_PROFILES_DIR--/custom.gitignore
with$PERSONAL_PROFILES_DIR/.gitignore
on your local machine -
Run the following commands in the terminal
git -C "${DOTFILES_DIR}" checkout files/--PERSONAL_PROFILES_DIR--/custom.gitignore cp "${DOTFILES_DIR}/files/--PERSONAL_PROFILES_DIR--/custom.gitignore" "${PERSONAL_PROFILES_DIR}/.gitignore" rm -rf "${HOME}/Library/Application Support/com.raycast.macos" mv "${PERSONAL_PROFILES_DIR}/Raycast" "${HOME}/Library/Application Support/com.raycast.macos" git -C "${PERSONAL_PROFILES_DIR}" rm -rf Raycast open /Applications/Raycast.app
-
Once Raycast is restarted AND if it shows an error about the database being corrupt, then choose the
Reset
option, and use theImport Settings & Data
option to import your previously exported settings back in. -
Once the above steps are done, if you rerun the
install-dotfiles.rb
script, it should not show any dirty files (especially the 2custom.gitignore
files) - and if this is the case, your setup is now back to normal working state.
- Use
is_git_repo
instead ofis_directory
if the next command(s) expects it to be a git repo. - Remove Arc from
Brewfile
(since I moved to Zen).
- Use
git-restore-mtime
fromgit-tools
(as opposed togit-utimes
fromgit-extras
) since its > 1x faster performance.
- Set the DNS server to '8.8.8.8' only if running in a Jio network.
- Introduce PDFGear and KeyClu.
- Fixed some old documentation.
- Reuse utility functions defined in
.shellrc
.
- [fresh-install-of-osx.sh] Added date calculation in
fresh-install-of-osx.sh
to track total execution time.
- [approve-fingerprint-sudo.sh] Handled case to execute
approve-fingerprint-sudo.sh
based on touchId hardware.
- [resurrect-repositories.rb] Handled the case where git wouldn't allow cloning a repo into a pre-existing, non-empty folder.
- [.zshrc] Handled case where docker-related aliases were not setup since it was not in the
PATH
whenfiles/--HOME--/.aliases
was evaluated.
- [capture-defaults.sh] Removed some applications that I no longer use.
- [fresh-install-of-osx.sh] Replaced
TODO
with explanation for future reference as to why we can't usehomebrew
to install omz custom plugins.
- [Brewfile] Stop processing the
Brewfile
such that the minimal installation can happen in a shorter duration of time. This is controlled by the env varHOMEBREW_BASE_INSTALL
which is set in thefresh-install-of-osx.sh
script when installing from scratch.
- [.aliases] Added 2 new utility functions:
count
andcount_all_repos
- Merged
fresh-install-of-osx-advanced.sh
intofresh-install-of-osx.sh
to reduce complexity of loading different config files into the shell session. - [.gitconfig] Remove git sub-command
currentDir
in favor of root. - [Brewfile] Remove
git-tools
sincegit-extras
has an equivalent git sub-command. - [.gitignore_global] Generate from gitignore.io for common languages, OSes and editors.
- [fresh-install-of-osx.sh] Minimize use of
eval
and sub-shells. - [fresh-install-of-osx.sh] Moved utility scripts (from
files/--HOME--/.aliases
) that are only loaded while running thefresh-install-of-osx.sh
into that single script to optimize shell startup time. - [fresh-install-of-osx.sh] Removed cloning of
natsumi-browser
from.envrc
and moved into fresh-install script. Updating the repo is now handled as part ofscripts/software-updates-cron.sh
. - [.zshrc] Removed
zsh-defer
since that was introducing more complexity in maintenance. - [.shellrc] Use
mktemp
to enhance implementation ofclone_repo_into
which reduces need to process the home-repo in a special manner while doing a fresh install. - [.shellrc] Moved homebrew env vars from
files/--HOME--/.zshenv
intofiles/--HOME--/.shellrc
. - Merged
files/--HOME--/.zshrc.custom
intofiles/--HOME--/.zshrc
andfiles/--HOME--/.aliases.custom
intofiles/--HOME--/.aliases
to reduce complexity of loading different config files into the shell session.
-
After rebasing and resolving the conflicts
-
Manually reconcile the diffs between
files/--HOME--/custom.gitignore
&${HOME}/.gitignore
, andfiles/--PERSONAL_PROFILES_DIR--/custom.gitignore
&${PERSONAL_PROFILES_DIR}/.gitignore
. -
Open the Terminal application and run the following commands:
rm -rf ${HOME}/.aliases.custom ${HOME}/.zshrc.custom ${HOME}/.oh-my-zsh/custom/plugins/zsh-defer cp files/--HOME--/custom.gitignore ${HOME}/.gitignore cp files/--PERSONAL_PROFILES_DIR--/custom.gitignore ${PERSONAL_PROFILES_DIR}/.gitignore install-dotfiles.rb
-
Quit and restart your Terminal application for the env vars, aliases & functions to be re-evaluated into the session memory.
-
Run
bupc
to cleanup brews and casks.
Note: This version has been successfully tested on a Macbook M1 on 22 Dec, 2024.
- [capture-defaults.sh] Capture defaults script now aborts when the
PERSONAL_CONFIGS_DIR
env var is not defined. - [.shellrc] Extracted common utility function to remove duplication and invoke them in the setup scripts.
- [fresh-install-of-osx-advanced.sh] Fixed potential issue with the
PATH
not being updated if the fresh-install-advanced script was run without starting a new terminal session. - [.aliases] Added a new
profiles
alias to handle git repos checked out into thePERSONAL_PROFILES_DIR
.
- Capture the Raycast configs/extensions/etc in the profiles repo
- Open Terminal and run the
install-dotfiles.rb
script. - Change the current directory in terminal to the profiles repo (
direnv
will take care of the rest)
- Incorporate the natsumi-browser into the Zen browser profile.
- [.shellrc] Moved functions that are only needed in the basic fresh-install script into that so as to reduce shell startup time.
Note: This version has been successfully tested on a Macbook M1 on 19 Dec, 2024.
- [fresh-install-of-osx-advanced.sh] Nested conditions and print more specific warning message when skipping cloning of the home and profiles repos.
- [.shellrc] Extracted some utility functions to remove duplication and invoke them in the setup scripts.
- Manually edit your
${HOME}/.ssh/config
file, and change all occurrences of~
to${HOME}
- Removed necessity of quitting and restarting the Terminal application between executing the
fresh-install-of-osx.sh
andfresh-install-of-osx-advanced.sh
. - [.shellrc] Extracted some utility functions to remove duplication and invoke them in the setup scripts.
- [.shellrc] Renamed
ensure_dir_exists_if_var_defined
intoensure_dir_exists
andclone_if_not_present
intoclone_omz_plugin_if_not_present
. - [Brewfile] Removed
gs
,wifi-password
andvirtualbox
.
Note: This version has been successfully tested on a Macbook M1 on 16 Dec, 2024.
- Run
git delete-tag success-tested-on-m1; git push origin :success-tested-on-m1
to cleanup the defunct tag.
- [Brewfile] Added
keycastr
to help with pairing and presentations of screen-grabs. - Added some more logging while running the fresh-install scripts.
- Restructured
Brewfile
to convey what are bare minimum formulae vs recommended vs optional ie left to the user's choice.
- The reason for this restructuring is explained up above. Since most of the adoptees have customized this file, it will probably result in conflicts. Please be diligent in resolving the conflicts.
- All GH urls now also take into account the branch that's being tested for the setup scripts. Read the new section in the README if you are making changes that you want to test against a PR branch before the PR is merged.
- Moved some of the core zsh config files from
files/--HOME--/
tofiles/--ZDOTDIR--/
to accommodate custom location ofZDOTDIR
. - [.shellrc] Merged all relevant lines from
files/--ZDOTDIR--/.zprofile
intofiles/--HOME--/.shellrc
and deletedfiles/--ZDOTDIR--/.zprofile
since that is the first file loaded during the fresh machine setup. This also avoids the defensive definition ofZDOTDIR
in duplicate files.
- After rebasing, you will end up with conflicts. The env vars that were previously defined in
files/--ZDOTDIR--/.zprofile
have been moved intofiles/--HOME--/.shellrc
. You might have to manually fix them. You can go ahead and delete the${HOME}/.zprofile
since that is no longer needed. - Run
install-dotfiles.rb
so that the symlinked zsh config files in${HOME}
point to the correct locations (files/--ZDOTDIR--/
instead offiles/--HOME--/
)
- [README.md] Fixed some grammatical errors in README.
- [.gitconfig] Added new git alias for logs.
- Use 'zsh-defer' to try to bring down shell startup time.
- Run
fresh-install-of-osx.sh
so that thezsh-defer
plugin is cloned to the correct directory. - Restart terminal for the deferred-loading to take effect. (No harm in keeping the old session).
- [.shellrc] Introduced new utility functions
section_header
anddebug
and standardized on usages.
- Reverted changes from v1.0.9 related to 'bupc' since the 1st cleanup might be skipped due to the '||' condition status
- Converted from 'iBar' menubar app to 'Ice' since its open source and seems to have better features. This also removes the need to login into the App Store!
- Fix zsh auto-completion since some of the options were set after the
compinit
invocation - [.zprofile] Ensure that directories are created for env vars defined in
.zprofile
setopt
paramters are case-insensitive and can handle underscore and so changed them for readability- [.shellrc] Introduced new utility function
ensure_dir_exists_if_var_defined
to help in cases wherecode-gist
used to create unsaved files instead of directories for undefined env vars
- Remove redundant cleanup in 'bupc'
- Removed MS Teams and MS Remote Desktop
- Restart terminal for the revised alias function to get loaded. (No harm in keeping the old session; just that it will perform an extra step unnecessarily on
bupc
alias)
- [fresh-install-of-osx.sh] Fix issue when running in a fresh/vanilla machine since 'ZDOTDIR' was undefined.
- [install-dotfiles.rb] Fix issue when creating the include line for
~/.ssh/config
if it was not present.
- [approve-fingerprint-sudo.sh] Persists authorization config for triggering touchId when running sudo commands in terminal across software updates.
- Run
approve-fingerprint-sudo.sh
- [install-dotfiles.rb] Refactored environment variable resolution logic to use
gsub!
for improved performance.
- Moved all files & nested folders inside the
files
directory intofiles/--HOME--
to make that location explicit (earlier it was implied)
- [install-dotfiles.rb] Refactored the logic to handle ssh global configuration file for ease of readability and maintainability.
- [Brewfile] Added
virtualbox
to test out linux as a Virtual machine. - [CHANGELOG.md] Added changelog which will be maintained going forward for each commit.
- [README.md] Added a new section detailing steps to adopt updates/catchups for new changes on an ongoing basis.
- Changed all colored messages to be uniform and added a
success
function to print in green. These are optimized for a dark theme in your terminal emulator.
install-dotfiles.rb
can now handle multiple env vars for nested files/folders in thefiles
sub-folder. They follow the naming convention of the env var being enclosed within 2 pairs of hyphens (--
). For eg,files/--PERSONAL_PROFILES_DIR--/.envrc
will be symlinked on your local machine into${HOME}/personal/<yourLocalUsername>/profiles/.envrc
assuming that thePERSONAL_PROFILES_DIR
env var has been defined. This is not a breaking change.
- Since I recreated the
1.0
tag as part of this push, you might need to delete the tag in both your local and your remote and then dogit upreb
. - Run the
install-dotfiles.rb
script which will automatically remove the older (broken) symlink and recreate the new one in the correct location.