SkillAgentSearch skills...

Dotfiles

~ 🍭 ~

Install / Use

/learn @ahmedelgabri/Dotfiles

README

~ 🍭 ~

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 -sSfL https://artifacts.nixos.org/nix-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 --experimental-features 'nix-command flakes' run "github:ahmedelgabri/dotfiles" -- <flake attribute>

On a first run, the bootstrap app uses the bundled flake source it was launched from and then clones the repo into ~/.dotfiles for subsequent rebuilds.

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

Related Skills

View on GitHub
GitHub Stars284
CategoryDevelopment
Updated3h ago
Forks17

Languages

Lua

Security Score

95/100

Audited on Mar 29, 2026

No findings