嘿,你来了!欢迎。🤓
Nix 是一个强大的 Linux 和 Unix 系统包管理器,确保可重现、声明式和可靠的软件管理。
这个仓库包含了一个通用开发环境的配置,可以在 macOS、NixOS 上运行 Nix,或同时在两者上运行。
我每天都在我的 🧑🏻💻 Macbook Pro 和家庭办公室的 x86 PC 上使用它。它也可以作为虚拟机在 Mac 上运行。许多其他人也报告说它对他们来说也能正常工作。
查看下面的逐步命令开始使用吧!
.
├── apps # 用于引导和构建配置的 Nix 命令
├── hosts # 特定主机的配置
├── modules # macOS 和 nix-darwin、NixOS 以及共享配置
├── overlays # 在此目录中放置覆盖文件,它就会运行。到目前为止,主要是补丁。
├── templates # 此配置的初始版本
configuration.nix
,无Nix通道─ 仅需flake.nix
nix-darwin
和nix-homebrew
实现零维护的homebrew环境disko
进行声明式磁盘管理,告别磁盘工具agenix
进行声明式密钥管理,适用于SSH、PGP、syncthing等工具home-manager
模块实现无缝配置(无需额外繁琐的CLI步骤)在macOS上安装Nix将创建一个完全独立的卷。它可能会占用多个GB的空间。
有些人可能不喜欢这一点。如果你是这样,现在就请停止!
[!注意] 不用担心,你随时可以卸载 Nix。
https://github.com/dustinlyons/nixos-config/assets/1292576/2168d482-6eea-4b51-adc1-2ef1291b6598
https://github.com/dustinlyons/nixos-config/assets/1292576/66001066-2bbf-4492-bc9e-60ea1abeb987
https://github.com/dustinlyons/nixos-config/assets/1292576/d96f59ce-f540-4f14-bc61-6126a74f9f52
https://github.com/dustinlyons/nixos-config/assets/1292576/fa54a87f-5971-41ee-98ce-09be048018b8
此配置支持Intel和Apple Silicon Mac。
xcode-select --install
感谢Determinate Systems提供的安装程序!
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
安装后,打开一个新的终端会话,使nix
可执行文件在你的$PATH
中可用。在接下来的步骤中你会需要它。
[!重要]
如果使用官方安装说明,
flakes
和nix-command
默认不可用。你需要启用它们。
在你的
/etc/nix/nix.conf
文件中添加这一行experimental-features = nix-command flakes
或者
在使用
nix run
时指定实验性功能nix --extra-experimental-features 'nix-command flakes' run .#<命令>
选择以下两个选项之一
不包含密钥管理的简化版本
mkdir -p nixos-config && cd nixos-config && nix flake --extra-experimental-features 'nix-command flakes' init -t github:dustinlyons/nixos-config#starter
包含密钥管理的完整版本
mkdir -p nixos-config && cd nixos-config && nix flake --extra-experimental-features 'nix-command flakes' init -t github:dustinlyons/nixos-config#starter-with-secrets
find apps/$(uname -m | sed 's/arm64/aarch64/')-darwin -type f \( -name apply -o -name build -o -name build-switch -o -name create-keys -o -name copy-keys -o -name check-keys \) -exec chmod +x {} \;
运行以下Nix命令,用你的系统属性、用户名、全名和电子邮件替换占位值。
你的电子邮件仅用于
git
配置。
nix run .#apply
[!注意] 如果你正在使用git仓库,只有工作树中的文件会被复制到Nix存储。
你必须先运行
git add .
。
你可以在NixOS官方网站上搜索软件包。
审查这些文件
添加任何来自你现有~/.zshrc
的内容,或者只审查新的配置。
审查这些文件
如果你在使用带有密钥的启动器,还有一些额外的步骤。
在Github上,创建一个私有的nix-secrets
仓库,至少包含一个文件(如README
)。你将在安装过程中输入这个名称。
在生成你的第一个构建之前,这些密钥必须存在于你的~/.ssh
目录中。别担心,我提供了一些命令来帮助你。
密钥名称 | 平台 | 描述 |
---|---|---|
id_ed25519 | macOS / NixOS | 从Github下载密钥。仅在引导过程中使用。 |
id_ed25519_agenix | macOS / NixOS | 复制过来,用于加密和解密密钥。 |
运行以下命令之一:
这个命令自动检测连接到当前系统的USB驱动器。
密钥必须命名为
id_ed25519
和id_ed25519_agenix
。
nix run .#copy-keys
nix run .#create-keys
[!注意] 如果你选择这个选项,请确保将
id_ed25519.pub
的值保存到Github。cat /Users/$USER/.ssh/id_ed25519.pub | pbcopy # 复制密钥到剪贴板
如果你自己处理,只需检查它们是否正确安装。
nix run .#check-keys
在部署配置之前,确保构建正常工作,运行:
nix run .#build
[!注意] 如果你正在使用git仓库,只有工作树中的文件会被复制到Nix存储。
你必须先运行
git add .
。
[!警告] 如果
nix-darwin
检测到它将覆盖现有的/etc/
文件,你可能会遇到error: Unexpected files in /etc, aborting activation
错误。错误会列出这些文件,如下所示:以下文件有无法识别的内容,将被覆盖: /etc/nix/nix.conf /etc/bashrc 请检查这些文件中是否有关键内容,通过在文件名末尾添加.before-nix-darwin来重命名它们,然后再试一次。
在继续之前,备份并移动这些文件,或编辑你的Nix配置。
最后,使用以下命令修改你的系统:
nix run .#build-switch
[!注意]
~/.zshrc
将被此仓库中的zsh
配置替换。确保这是你想要的。
此配置支持x86_64
和aarch64
平台。
下载并将最小ISO镜像刻录到USB,或使用ISO作为基础创建新的虚拟机。启动安装程序。
如果你在Apple Silicon Mac上构建虚拟机,请选择64位ARM。 快速链接
如果你使用带有密钥的入门配置,还需要几个额外步骤。
在GitHub上,创建一个私有的nix-secrets
仓库,至少包含一个文件(如README
)。你将在安装过程中输入这个名称。
在生成你的第一个构建之前,这些密钥必须存在于你的~/.ssh
目录中。别担心,我提供了几个命令来帮助你。
密钥名称 | 平台 | 描述 |
---|---|---|
id_ed25519 | macOS / NixOS | 从GitHub下载密钥。仅在引导过程中使用。 |
id_ed25519_agenix | macOS / NixOS | 复制过来,用于加密和解密密钥。 |
运行以下命令之一:
此命令自动检测连接到当前系统的U盘。
密钥必须命名为
id_ed25519
和id_ed25519_agenix
。
sudo nix run --extra-experimental-features 'nix-command flakes' github:dustinlyons/nixos-config#copy-keys
sudo nix run --extra-experimental-features 'nix-command flakes' github:dustinlyons/nixos-config#create-keys
如果你自己管理密钥,只需检查它们是否正确安装。
sudo nix run --extra-experimental-features 'nix-command flakes' github:dustinlyons/nixos-config#check-keys
[!重要] 对于Nvidia显卡,在启动安装程序时选择第二个选项
nomodeset
,否则你将看到空白屏幕。
[!警告] 运行此操作将重新格式化你的驱动器为
ext4
文件系统。
简单版
sudo nix run --extra-experimental-features 'nix-command flakes' github:dustinlyons/nixos-config#install
带密钥版