Dotfiles-nix himalaya
Configure and use Himalaya CLI email client with Protonmail Bridge. Use when setting up himalaya, debugging IMAP/SMTP connection issues, or managing email from the terminal. Covers config format for v1.2.0, Protonmail Bridge quirks, and common commands.
install
source · Clone the upstream repo
git clone https://github.com/not-matthias/dotfiles-nix
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/not-matthias/dotfiles-nix "$T" && mkdir -p ~/.claude/skills && cp -r "$T/modules/home/programs/cli-agents/shared/skills/himalaya" ~/.claude/skills/not-matthias-dotfiles-nix-himalaya && rm -rf "$T"
manifest:
modules/home/programs/cli-agents/shared/skills/himalaya/SKILL.mdsource content
Himalaya CLI Email
Rust-based CLI email client. Connects to Protonmail via Bridge's local IMAP/SMTP.
Config Location
~/.config/himalaya/config.toml
Protonmail Bridge Setup
Bridge exposes local IMAP/SMTP — credentials come from Bridge, not your Proton account.
Get credentials:
protonmail-bridge --cli → login → info
- IMAP:
127.0.0.1:1143 - SMTP:
127.0.0.1:1025 - Login: your Proton email address
- Password: Bridge-generated token (NOT your account password)
Config Template (v1.2.0)
[accounts.proton] default = true email = "your@proton.me" display-name = "Your Name" downloads-dir = "~/Downloads" backend.type = "imap" backend.host = "127.0.0.1" backend.port = 1143 backend.encryption.type = "none" backend.login = "your@proton.me" backend.auth.type = "password" backend.auth.cmd = "pass show proton/bridge" message.send.backend.type = "smtp" message.send.backend.host = "127.0.0.1" message.send.backend.port = 1025 message.send.backend.encryption.type = "none" message.send.backend.login = "your@proton.me" message.send.backend.auth.type = "password" message.send.backend.auth.cmd = "pass show proton/bridge"
Critical Config Gotchas
- Encryption MUST be
— Bridge uses a self-signed cert that causes"none"
TLS errors with rustls. Localhost-only so no security risk.CaUsedAsEndEntity - Password key is
for shell commands,auth.cmd
for inline,auth.raw
for system keyring. NOTauth.keyring
— that's an invalid key.auth.command - Login is your full email even though Bridge generates a separate password.
Common Commands
himalaya envelope list # List inbox himalaya envelope list -f Sent # List sent himalaya message read <ID> # Read message himalaya message write # Compose (opens $EDITOR) himalaya message reply <ID> # Reply himalaya message forward <ID> # Forward himalaya attachment download <ID> # Download attachments himalaya folder list # List folders
Debugging
himalaya envelope list --debug # Debug logs himalaya envelope list --trace # Verbose trace + backtrace
Common errors:
→ SetCaUsedAsEndEntity
for both IMAP and SMTPencryption.type = "none"
→ Check for invalid keys (e.g.,cannot parse configuration
instead ofauth.command
)auth.cmd
→ Use Bridge password, not Proton account passwordauthentication failed- IMAP warning about continuation request → Harmless Bridge quirk, can ignore