For setting up development environment on any Unix machine (Darwin/Linux). The config officially supports macOS & NixOS & managed by nix
Font is Pragmata Pro, theme is a my own fork of vim-colors-plain, Terminal is kitty
These are the main configs:
- nix to manage installing most of the dependencies, for GUI apps on
macsOS I'm still using
Homebrew cask through the
homebrew module in
nix-darwin
- neomutt for reading emails
- tmux 2.3 or later
- Neovim
- Zsh
- Git
- Kitty as my terminal
- weechat IRC client
- hammerspoon macOS automation, using it for window management & other stuff
- Intel macOS Monterey
- ARM macOS Ventura
- [Experimental] NixOS (tested on 22.11)
- Install Command line tools.
xcode-select --install
- Run the following command
bash -c "$(curl -fsSL https://raw.github.com/ahmedelgabri/dotfiles/master/install)"
- zsh: add these to
${XDG_DATA_HOME}/$(hostname)/zshrc
export HOMEBREW_GITHUB_API_TOKEN =
export GITHUB_TOKEN =
export WEECHAT_PASSPHRASE =
- For git add your GPG key info in
${XDG_DATA_HOME}/$(hostname)/gitconfig
[user]
signingkey =
Don't forget to upload your public key to GitHub!
Note: There needs to be a three-way match on your email for GitHub to show the commit as 'verified': The commit email, github email, & the email associated with the public key
Learn about creating a GPG key and signing your commits here
My email messages are synchronised between the remote server and my computer with isync, I read them with neomutt and search index is built by notmuch.
After linking the dotfiles, there are only a few more things that need to be done.
Each account must authenticate with an IMAP server and an SMTP server. The passwords, need be stored in the OS X keychain.
For Fastmail (or Gmail accounts with two-factor authentication enabled), use an application-specific password.
In order for all this to work, a few items have to be stored in the macOS keychain:
Create a "generic"(A.K.A. "application") keychain item (that is, without protocols, only hostnames):
For sending mail:
- An item with:
- "Keychain Item Name": fastmail.com
- "Account Name": username+mutt@fastmail.com
Repeat this for each account you want to add.
Incoming messages are fetched from the remote server when mbsync
runs (the
executable name for isync).
On macs I use launchd
, on NixOS using systemd
. You can check
mail.nix
.