Nix Flakes

最近学习了 fernvenue 老师的新文章使用 Nix Flakes 部署應用之后,决定在 Mac 上也全面进入 Nix 时代。彻底摆脱 brew 和 Xcode 。抛弃冗余的大玩意,这样就可以非常轻松方便的下载安装自己需要的东西。

最近趁着自己生日,给自己奖励了一台老 M1 Max ,因为还要依赖 Logic Pro 和 Final Cut Pro,毕竟我无法拒绝 Apple 颜色准确的屏幕。 所以即使 Debian 已经可以替代很多东西,但我依然还是需要使用 macOS 。

macOS 系统本身是不自带 Xcode 的,当你使用 git 这个命令的时候,它就会疯狂弹出让你安装 Xcode 的界面,即使我已经使用 Flakes 安装了 git 。折腾无果后,我就跑去在 MacBook 上安装 Debian 了,回过头来再次进入 macOS 准备解决这个问题的时候,忽然发现它已经成功使用了 git 。所以如果使用 Nix Flake 安装了什么东西但是它当时并不能用的时候

尝试重启设备,这个时候大概率就可以用了,当然前提是这个包是可以安装在 macOS 上的。

配置

Nix Flakes 在 macOS 配置上与 Debian 是一致的:

1
2
mkdir ~/.config/nix
echo "experimental-features = nix-command flakes" > ~/.config/nix/nix.conf

常用命令

  • 安装应用:nix profile install nixpkgs#application
  • 卸载应用:nix profile remove application
  • 查看已经安装的应用列表:nix profile list
  • 升级应用:nix profile upgrade application
  • 升级全部应用:nix profile upgrade --all
  • 清理缓存:nix-collect-garbage -d

Yubikey SSH 使用备忘录

前段时间也是终于学会了 Yubikey SSH 的所有操作,不过在 macOS 上确实使用方式略有不同。

为了避免使用 Xcode ,我们直接使用 Nix Flakes 安装一个 openssh ,macOS 上是有 ssh 的,但似乎是个丐版,无法直接使用 ssh-keygen -K 来导入存储在 Yubikey 上存储的密钥对。

1
nix profile install nixpkgs#openssh

安装成功之后,就可以导入密钥了。这里我建议使用普通用户权限,把密钥导入到 ~/.ssh 这个目录下。

1
2
3
mkdir ~/.ssh & cd ~/.ssh

ssh-keygen -K

之后按照提示操作即可。

之前我这个菜鸟是没怎么使用过 ssh key 来登录服务器和使用 git 的,只在 Termius 上使用过傻瓜式操作。所以也没有了解过 ~/.ssh/config 文件的内容具体的作用和大概的配置方式。

这里是我通过 ssh 使用 git 的配置:

1
2
3
4
$ cat ~/.ssh/config
Host github.com
	user git
	IdentityFile ~/.ssh/id_ed25519_sk_rk_yubikey5cnfc

然后将你的公钥上传到你的 github 即可,具体可以看这个 Connecting to GitHub with SSH 官方文档。

完成之后测试一下:

1
2
3
4
5
6
$ ssh -T [email protected]
Confirm user presence for key ED25519-SK SHA256:mT3AmUTy4eQUnhuiGzRCFegResZgsWkN+r9CibXkeYQ
Enter PIN for ED25519-SK key /Users/bdim404/.ssh/id_ed25519_sk_rk_yubikey5cnfc: 
Confirm user presence for key ED25519-SK SHA256:mT3AmUTy4eQUnhuiGzRCFegResZgsWkN+r9CibXkeYQ
User presence confirmed
Hi bdim404! You've successfully authenticated, but GitHub does not provide shell access.

看起来一切正常了。

参考链接:

https://blog.fernvenue.com/zh/archives/play-with-nix-flakes/

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

https://developers.yubico.com/SSH/