127 lines
4.4 KiB
Markdown
127 lines
4.4 KiB
Markdown
# Nix驱动的dotfiles配置
|
||
|
||
`dotfiles` `nix` `macOS` `NixOS` `开发环境`
|
||
|
||
# ~ 🍭 ~
|
||
|
||
[](https://builtwithnix.org)
|
||
|
||
用于在任意 Unix 机器(Darwin/Linux)上搭建开发环境。该配置官方支持 macOS 与 NixOS,由 [nix][nix] 统一管理。
|
||
|
||

|
||
|
||
> _字体为 [Pragmata Pro](https://fsd.it/shop/fonts/pragmatapro/),主题是基于 [vim-colors-plain](https://github.com/andreypopp/vim-colors-plain) 的[个人定制版本](./config/nvim/colors/plain.lua),终端为 [Ghostty][Ghostty]_
|
||
|
||
## 包含哪些内容?
|
||
|
||
以下是主要配置项:
|
||
|
||
- [nix][nix]:管理大多数依赖的安装;macOS 上的 GUI 应用仍通过 [`nix-darwin`](https://github.com/LnL7/nix-darwin/blob/5c3146b75d5d478f0693d0ea6c83f1da8382ff56/modules/homebrew.nix) 中的 homebrew 模块,借助 [Homebrew cask](https://github.com/caskroom/homebrew-cask) 安装
|
||
- [aerc][aerc]:邮件阅读客户端
|
||
- [tmux][tmux] 2.3 或更高版本
|
||
- [Neovim][neovim]
|
||
- [Zsh][zsh]
|
||
- [Git][git]
|
||
- [Ghostty][Ghostty]:终端模拟器
|
||
- [hammerspoon][hammerspoon]:macOS 自动化工具,用于窗口管理等
|
||
|
||
## 官方支持的操作系统
|
||
|
||
- ARM macOS Sequoia
|
||
- [实验性] NixOS(已在 22.11 上测试)
|
||
|
||
## 安装步骤
|
||
|
||
1. 安装 `nix`
|
||
|
||
> [!NOTE]
|
||
>
|
||
> 请务必查阅 [`quirks`](https://github.com/NixOS/nix-installer/blob/main/docs/quirks.md) 部分的说明
|
||
|
||
```bash
|
||
curl --proto '=https' --tlsv1.2 -sSfL https://artifacts.nixos.org/nix-installer | sh -s -- install
|
||
```
|
||
|
||
2. 进行配置
|
||
|
||
> [!NOTE]
|
||
>
|
||
> flake 属性通常为主机名,若未传入则默认使用 `$(hostname -s)`
|
||
|
||
在线方式:
|
||
|
||
```bash
|
||
nix --experimental-features 'nix-command flakes' run "github:ahmedelgabri/dotfiles" -- <flake 属性>
|
||
```
|
||
|
||
首次运行时,引导程序会使用启动时内置的 flake 源,随后将仓库克隆到 `~/.dotfiles` 以供后续重建使用。
|
||
|
||
### Homebrew
|
||
|
||
我主要仍用 Homebrew 安装 GUI 应用,因为 Nix 和/或 Home-manager 对 GUI 应用的支持在符号链接到 `Applications/` 文件夹时存在问题。Homebrew 完全由 `nix` 管理,通过 [`nix-homebrew`](https://github.com/zhaofengli/nix-homebrew) 进行安装和运行。
|
||
|
||
### 注意事项
|
||
|
||
- zsh:将以下内容添加到 `${XDG_DATA_HOME}/$(hostname)/zshrc`
|
||
|
||
```zsh
|
||
export HOMEBREW_GITHUB_API_TOKEN =
|
||
export GITHUB_TOKEN =
|
||
```
|
||
|
||
- Git:将 GPG 密钥信息添加到 `${XDG_DATA_HOME}/$(hostname)/gitconfig`
|
||
|
||
```
|
||
[user]
|
||
signingkey =
|
||
```
|
||
|
||
别忘了将公钥上传到 [GitHub](https://github.com/blog/2144-gpg-signature-verification)!
|
||
|
||
> 注意:GitHub 显示提交为"已验证"需要三处邮箱一致:提交邮箱、GitHub 邮箱以及公钥关联邮箱。
|
||
|
||
关于如何创建 GPG 密钥并为提交签名,请参阅[此文档](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work)。
|
||
|
||
#### 邮件
|
||
|
||
邮件通过 [isync][isync] 在远程服务器与本机之间同步,使用 [aerc][aerc] 阅读,搜索索引由 [notmuch][notmuch] 构建。
|
||
|
||
链接 dotfiles 后,还需完成以下几项配置。
|
||
|
||
##### 认证
|
||
|
||
每个账户需分别对 IMAP 服务器和 SMTP 服务器进行认证,密码需存储在 [Pass][Pass] 中。
|
||
|
||
对于 Fastmail 或启用了双因素认证的 Gmail 账户,请使用应用专用密码。
|
||
|
||
密码存储中需包含以下条目:
|
||
|
||
- `service/email/source`:(_仅 Fastmail 使用_,用于访问邮件的 JMAP 密码)
|
||
- `service/email/outgoing`:(_仅 Fastmail 使用_,用于发送邮件的 JMAP 密码)
|
||
- `service/email/contacts`:(_仅 Fastmail 使用_,用于访问联系人的 JMAP 密码)
|
||
- `service/email/password`:应用专用密码,用于 `mbsync` 本地邮件同步及 `msmtp` 发送邮件
|
||
|
||
## 定期同步
|
||
|
||
收件箱消息在 `mbsync`(即 isync 的可执行文件名)运行时从远程服务器拉取。
|
||
|
||
macOS 上使用 [`launchd`][launchd],NixOS 上使用 `systemd`。详见 [`mail.nix`](nix/parts/modules/shared/mail.nix)。
|
||
|
||
### 作者
|
||
|
||
[Ahmed El Gabri](https://twitter.com/AhmedElGabri)
|
||
|
||
[isync]: http://isync.sourceforge.net
|
||
[notmuch]: https://notmuchmail.org
|
||
[keychain]: https://en.wikipedia.org/wiki/Keychain_(software)
|
||
[launchd]: http://launchd.info
|
||
[aerc]: https://aerc-mail.org/
|
||
[nix]: https://nixos.org/
|
||
[tmux]: http://tmux.sourceforge.net/
|
||
[neovim]: https://neovim.io
|
||
[zsh]: http://www.zsh.org/
|
||
[git]: http://git-scm.com/
|
||
[kitty]: https://github.com/kovidgoyal/kitty
|
||
[hammerspoon]: http://www.hammerspoon.org/
|
||
[Ghostty]: https://ghostty.org/
|
||
[Pass]: https://www.passwordstore.org/ |