Skip to content

ahmedelgabri/dotfiles

Repository files navigation

~ 🍭 ~

built with nix

For setting up development environment on any Unix machine (Darwin/Linux). The config officially supports macOS & NixOS & managed by nix

screenshot

Font is Pragmata Pro, theme is a my own fork of vim-colors-plain, Terminal is Ghostty

What's in it?

These are the main configs:

Officially supported OSs

  • ARM macOS Sequoia
  • [Experimental] NixOS (tested on 22.11)

Installation

  1. Install nix

Note

Make sure to check the quirks section

curl --proto '=https' --tlsv1.2 -sSf -L https://artifacts.nixos.org/experimental-installer | sh -s -- install
  1. Set up

Note

The flake attribute in my case is usually is the host machine name, if not passed it will default to $(hostname -s)

online:

nix run "github:ahmedelgabri/dotfiles" -- <flake attribute>

Homebrew

I still use it mostly for GUI apps, since Nix and/or Home-manager support for GUI applications have problems with symlinking to the Applications/ folder. Homebrew is fully managed by nix it gets installed and run through nix using nix-homebrew

Notes

  • zsh: add these to ${XDG_DATA_HOME}/$(hostname)/zshrc
export HOMEBREW_GITHUB_API_TOKEN =
export GITHUB_TOKEN =
  • 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

Email

My email messages are synchronised between the remote server and my computer with isync, I read them with aerc and search index is built by notmuch.

After linking the dotfiles, there are only a few more things that need to be done.

Authentication

Each account must authenticate with an IMAP server and an SMTP server. The passwords, need be stored in the Pass.

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 password store:

  • service/email/source: (used by fastmail only JMAP password to access my email)
  • service/email/outgoing: (used by fastmail only JMAP password to send emails)
  • service/email/contacts: (used by fastmail only JMAP password to access contacts)
  • service/email/password: App specific password, needed for local email syncing mbsync and sending emails with msmtp

Synchronizing periodically

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.

Authors

Ahmed El Gabri