- Why? Because the default lock screen keyboard shortcut interferes with important Emacs key-bindings
- Launch System Preferences and go to the Keyboard pane.
- Select the ‘Keyboard Shortcuts’ tab.
- From the list on the left, select ‘Application Shortcuts’.
- Click on the plus (+) button below to add your new shortcut.
- In the dialog box we’ll want to leave ‘All Applications’ selected in the first menu. Enter ‘Lock Screen’ as the Menu Title. Please note this has to be exactly the same name you entered when saving the service in Automator. Finally, enter your keyboard shortcut. Let’s go with Option+Shift+Q
- Click Add and you’re all done!
- You have to use
networksetupfor this# List all the hardware ports controlled by networksetup networksetup -listallhardwareports # Turn the wifi on networksetup -setairportpower en0 on # or off
pmset -g thermlog
.bashrc or some other config script, avoid exporting/setting secret variables directly in these scripts. Instead:
- Open Keychain Access.app
- Add a new keychain from File > New keychain
- Using new keychain will allow you to use a different password than login for storing secrets.
- You can also use the login keychain, if you don’t want to enter password each time
- Add a name for the keychain, once you will click on Save button, it will ask to enter the password for the new keychain.
- Add a decently complex password.
- Once added, select the newly created keychain from the left pane of the Keychain Access app.
- To add a new password item, select File > New Password Item. Fill in the following details:
- Keychain item name: This is the keyword to access your keychain item.
- Account Name: This could be anything, usually used to group 1 or more password items
- Password: This is the secret you want to store in the Keychain against this item.
- Once added, you should test the secret access in terminal with following command:
security find-generic-password -a TEST_account_name -s TEST_item_name -w
To load secrets, you can now create a function in your script as follows:
function load_secrets () {
export SECRET1=$(security find-generic-password -a TEST_account1 -s TEST_item1 -w)
export SECRET2=$(security find-generic-password -a TEST_account1 -s TEST_item2 -w)
}Denote file at: Homebrew tips and tricks
brew uses --installed xz
These are experiments that have not graduated to my main setup yet.
Details at: https://github.com/HigherOrderCO/bend
brew install hvm
hvm --version
brew install bend-lang
bend --version- Download Fantasque NF and MesloLGS NF from https://www.nerdfonts.com/font-downloads
- Install
brewfrom https://brew.sh - Install common packages from
brew, as mentioned in the section copied from my Ubuntu guide (pasted below) - After completing common package installation, install casks and packages specific to MacOS
brew install ledger pinentry-mac gnu-sed gnupg gnuplot coreutils dog neofetch pandoc ffmpeg qpdf zig fossil protobuf sccache marksman tailscalebrew install --cask brave-browser discord docker ghostty iterm2 keepassxc maccy macfuse mactex signal transmission tresorit vlc whatsapp zulip
- Common packages (Replace
sudo aptwithbrewfor Mac OS)sudo apt install tmux mercurial subversion aspell automake texinfo shellcheck tree wget curl trurl git jq direnv - Linux specific packages
sudo apt install gnome-tweaks aspell-en gawk default-jre-headless default-jre
- Setup my file-sharing systems to get access to my common files
- Symlink my ssh keys and gpg keys from my file-sharing systems to the home dir
- Make sure that Notes on GnuPG / GPG::How to copy your .gpg folder and set the correct permissions
- Symlink
.gitconfigand.gitattributesfrom my publicdotfilesto the home dir.
brew install fishAfter installing fish, install fisher. Then install the following plugins:
fisher install jorgebucaran/fisherfisher install jorgebucaran/nvm.fishfisher install ilancosman/tide@v6
Follow the instructions below to install Rust and Rust based CLI tools.
- Install Rust using Rustup as described at https://www.rust-lang.org/learn/get-started
- Install all the tools I use
cargo install --locked atuin bat difftastic dprint du-dust exa fd-find git-delta hyperfine jless mergiraf procs ripgrep rust-analyzer sd sqlx-cli tagref tealdeer tokei vivid vl-convert websocat zoxide
- Install
golangfrombrewbrew install golang - Install
gopls(LSP) by following instructions in Go Wiki: https://pkg.go.dev/golang.org/x/tools/gopls#section-readme - Install Go CLI tools from
brewbrew install dbmate gron
Note that we need to have completed the Rust step above before we do this.
# To install the *prerelease* version from the main branch
cargo install --git https://github.com/jj-vcs/jj.git \
--locked --bin jj jj-clitpm : The tmux plugin manager
- Symlink
.tmux.confto home dir - Clone the
tmux-tpmrepogit clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm - Execute
C-b Iinside tmux once to install all the plugins
brew install clojure/tools/clojure borkdude/brew/clj-kondo borkdude/brew/babashka cljstyle borkdude/brew/jet lilactown/brew/eql clojure-lsp/brew/clojure-lsp-nativebrew install --cask temurin@25
brew install visualvm mvn- Install notmuch deps manually
brew install xapian gmime talloc zlib notmuch msmtp isync - Symlink
notmuch/.notmuch-config,.mbsyncrcand.msmtprcfrom private dotfiles to Home. - Symlink
notmuchdir in private-dotfiles to<maildir>/.notmuch/hooks
- Download and install the latest version from jimeh-builds
- Clone https://github.com/unravel-team/emacs to
.emacs.d - Clone https://github.com/cask/cask to
.caskin order to run cask based tests - Symlink my
personal.elfile andcommon.elfile from private dotfiles into.emacs.d
brew install uvPygmentsprovides source code highlighting inorg-exports
uv tool install shell_sage llm aider-cellm install llm-gemini(for Gemini support)llm install llm-cerebras(for Cerebras support)
# Doesn't need other packages because they have been previously installed
brew install pympressbrew install yt-dlp- We have already installed
nvmas part ofnvm.fish. Now install node via nvm
nvm install 24- We also set the
nvm_default_versionenv var in our fish config, so that the default is v24 - Finally, install
bunat the system level, to use instead ofnode.curl command to install bun.sh
- Install elm:
brew install elm - Install elm tooling:
bun install -g @elm-tooling/elm-language-serverbun install -g elm-format
brew install awscliawscli configureaws ecr get-login-password --region us-east-1 | podman login --username AWS --password-stdin <ecr-bucket>
brew install openssl- Follow instructions on the tarsnap site for compilation
- pgFormatter is a perl script and needs to be installed manually.
- Download the
pg_formatscript from https://raw.githubusercontent.com/darold/pgFormatter/master/pg_formatcurl -O https://raw.githubusercontent.com/darold/pgFormatter/master/pg_format - Make sure it is executable and copy it to somewhere on your PATH
Project Page: https://github.com/Shopify/toxiproxy
brew tap shopify/shopify
brew install toxiproxyThese are important tools for cloud storage management. Both need setup management.
brew install awscliFor AWS CLI config, run aws configure sso to create a profile that you can use for all other AWS commands.
For rclone setup, refer to https://rclone.org/install/ and install the pre-compiled binary using curl
cd && \
curl -O https://downloads.rclone.org/rclone-current-osx-amd64.zip && \
unzip -a rclone-current-osx-amd64.zip && \
cd rclone-*-osx-amd64sudo mkdir -p /usr/local/bin && \
sudo mv rclone /usr/local/bin/cd .. && rm -rf rclone-*-osx-amd64 rclone-current-osx-amd64.zipRun rclone config for setting up the necessary configuration
brew tap homebrew/cask-fonts && brew install font-iosevkabrew install repomixbrew tap espanso/espanso;
brew install espanso;brew install sqlite-utils datasettebrew install codex anomalyco/tap/opencodebun install -g @mariozechner/pi-coding-agentcurl -fsSL https://claude.ai/install.sh | bash