usmcamp0811/dotfiles
GitHub: usmcamp0811/dotfiles
一个结构化的 NixOS 配置仓库,集成了 Home Manager、Vault 密钥管理、系统监控和 Terraform 基础设施模块,展示了如何用 Nix 构建可复现的开发和运维环境。
Stars: 4 | Forks: 1
欢迎来到 AI Campground,这是通往我个性化 Nix 生态系统的入口。这个仓库是我的 NixOS 和通用 Nix 配置的综合集合,形成了一个连贯、文档齐全的设置。我致力于提供详细的 README,以分享我的旅程、见解以及在过程中遇到的挑战的解决方案。
## 快速开始
在开始之前,请确保您的系统上已安装 Nix。如果没有,您可以从官方 [Nix 网站](https://nixos.org/download.html)下载并安装。
### 将此仓库克隆到您的本地机器:
```
git clone https://gitlab.com/usmcamp0811/dotfiles.git
```
#### 创建 LIVE USB
```
nix build gitlab:usmcamp0811/dotfiles#isoConfigurations.base-iso
dd if=./result/iso/nixos.iso of=/dev/usb_drive status=progress
```
#### [新系统安装](./docs/Install.md)
**TODO:展示如何使用 disko 进行安装**
## 功能
以下是我的 Nix 配置所提供的功能概览:
- **[Campground Nvim](https://gitlab.com/usmcamp0811/campground-nvim)**:我使用 [NixVim](https://github.com/nix-community/nixvim) 配置了我的 Neovim 配置,并将其导出为一个 package。
- **Home Manager**:使用 Home Manager 管理您的 dotfiles、home 环境以及用户特定的配置。
- **Hashicorp Vault**:借鉴 [Jake Hamilton 的 dotfiles](https://github.com/jakehamilton/config) 的见解,我已将 Vault Agent 无缝集成到我的 Nix 配置中。这提供了卓越的 secrets 管理体验,无需将敏感信息存储在 git 仓库或其他不安全的位置。
- **自动部署**:能够通过 Gitlab CI/CD 或使用 `deploy --host
.#` 自动部署所有系统。
- **Git Pre-Commit Hooks**:Git hooks 与 Nix 的无缝集成。只需激活默认 shell 即可启用 hooks。`nix develop`
- **系统可观测性与监控**:集成 Prometheus、Grafana 和 Loki,以实现对所有系统(包括 Systemd 服务)的全面监控。
- **Terraform Modules**:用于使用 Terraform 在云端部署基础设施的各种模块。
## 自定义
利用 Snowfall Org lib 架构,我的 Nix 设置提供了一种精简且组织有序的方式来处理您的 Nix 生态系统。以下是详细分类:
- **自定义 Library**:位于 `lib/` 文件夹中,一个可选的自定义库包含一个 Nix 函数,该函数利用 `inputs`、`snowfall-inputs` 和 `lib` 返回一个与 `lib` 合并的属性集。
- **分层目录设置**:`lib/` 和 `packages/` 目录支持灵活的、可嵌套的文件夹结构。每个文件夹包含一个 Nix 函数,旨在返回一个无缝融入 `lib` 的属性集,从而促进模块化配置。
- **Package 分层**:在 `packages/` 文件夹内,您可以选择定义一组可导出的 packages。这些 packages 使用 `callPackage` 初始化,并应包含接受 package 属性集和必要的 `lib` 以生成 derivation 的函数。
- **配置 Modules**:`modules/` 文件夹允许您设置为不同平台(如 `nixos`、`darwin` 和 `home`)量身定制的 NixOS modules,使系统配置管理更加模块化。
- **个性化 Overlays**:将 `overlays/` 目录用于您可能拥有的任何自定义 overlays。每个 overlay 函数应接受三个参数:一个基于您的 flake inputs 的属性集和一个列出所有可访问 channels 的 `channels` 属性、最终确定的 `pkgs` 以及它们的前身。此功能增强了 package 集的自定义能力。
- **以系统为中心的配置**:`systems/` 文件夹帮助您按架构和格式组织系统设置,支持针对 `x86_64-linux` 或 `aarch64-darwin` 等多个平台的配置。
- **Home 环境配置**:同样,`homes/` 文件夹按架构排列配置,这对于通过 Nix 管理 home 环境特别方便。
这种方法提倡了一种用户友好的 Nix 配置方式,在灵活性和模块化之间取得平衡,以实现更好的可管理性。
## 致谢
灵感和代码片段来源于互联网的各个角落。我将尽力在记忆和情况允许时记录这些贡献。标签:DNS解析, Dotfiles, Nix, Nix Flakes, NixOS, Snowfall, 个性化配置, 声明式配置, 威胁情报, 开发者工具, 开源项目, 系统配置, 自定义请求头