<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nix on PlumePHP</title><link>https://plumephp.com/categories/nix/</link><description>Recent content in Nix on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 07 Oct 2026 20:22:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/categories/nix/index.xml" rel="self" type="application/rss+xml"/><item><title>Nix 语言服务器与编辑器工具链：补全、格式化与静态检查</title><link>https://plumephp.com/nix-language-server-tooling/</link><pubDate>Wed, 07 Oct 2026 20:22:00 +0800</pubDate><guid>https://plumephp.com/nix-language-server-tooling/</guid><description>Nix 是动态类型、惰性求值的语言，写错一个属性名往往要等到求值才报错。语言服务器把补全、跳转、诊断搬进编辑器，格式化器统一风格，statix 与 deadnix 提前拦下反模式与死代码。本文对比 nil 与 nixd 的取舍、给出各编辑器的接入配置、讲清 nixd 的选项补全原理，并用 treefmt 与 pre-commit 把检查固化到 CI。</description></item><item><title>Store 垃圾回收与存储优化：gc root、去重与瘦身</title><link>https://plumephp.com/nix-store-gc-optimization/</link><pubDate>Wed, 07 Oct 2026 20:21:00 +0800</pubDate><guid>https://plumephp.com/nix-store-gc-optimization/</guid><description>内容寻址意味着 store 从不覆盖旧路径，一次重建就多出一份闭包，磁盘很快被历代产物吃满。回收的唯一依据是 gc root，而不是「看起来没人用」。本文讲清 gc root 的六种来源、手动与自动回收参数、硬链接去重的原理与代价、占用分析方法、结构性瘦身手段，以及误删与存储损坏后的恢复路径。</description></item><item><title>构建沙箱与可复现性：Nix 如何隔离构建过程</title><link>https://plumephp.com/nix-build-sandbox-purity/</link><pubDate>Wed, 07 Oct 2026 20:20:00 +0800</pubDate><guid>https://plumephp.com/nix-build-sandbox-purity/</guid><description>Nix 的构建沙箱不是可选装饰，而是「输入确定」得以成立的前提：它给构建脚本一个干净的挂载视图、清空的环境变量、独立的构建用户与默认断开的网络。本文拆开沙箱的三种模式与内部结构，讲清环境变量如何被清洗、网络隔离与固定输出例外、如何检测构建是否纯净，以及容器与 CI 里沙箱失效的原因与修法。</description></item><item><title>nixos-anywhere 远程部署：把裸机变成 NixOS</title><link>https://plumephp.com/nixos-anywhere-remote-install/</link><pubDate>Wed, 07 Oct 2026 20:19:00 +0800</pubDate><guid>https://plumephp.com/nixos-anywhere-remote-install/</guid><description>云主机与托管裸机通常只给一个 root SSH，没有控制台、没有 ISO 挂载权限。nixos-anywhere 用 kexec 把目标机直接引导进 NixOS 安装环境，在内存中执行 disko 分区与 nixos-install，一次命令完成从空盘到可复现系统。本文讲清三段式原理、关键参数、密钥注入、批量流程、CI 自动化与常见失败排查。</description></item><item><title>disko 声明式磁盘分区：把分区表写成 Nix 表达式</title><link>https://plumephp.com/nix-disko-declarative-partitioning/</link><pubDate>Wed, 07 Oct 2026 20:18:00 +0800</pubDate><guid>https://plumephp.com/nix-disko-declarative-partitioning/</guid><description>分区、文件系统与挂载点通常只活在安装那一刻的几条命令里，换台机器就得凭记忆重来。disko 把 GPT 分区表、LUKS 加密、LVM、Btrfs 子卷与 ZFS 池写成一份 Nix 表达式，由它生成分区动作与 fileSystems 配置，安装、重建与虚拟机测试共用同一份定义。本文给出完整配置、执行模式、密钥注入与常见坑。</description></item><item><title>lazy-trees 与大规模仓库求值：只取所需的文件树</title><link>https://plumephp.com/nix-lazy-trees-eval/</link><pubDate>Wed, 07 Oct 2026 20:17:00 +0800</pubDate><guid>https://plumephp.com/nix-lazy-trees-eval/</guid><description>在 nixpkgs 这类四万文件级仓库上，每次改一行都要先下载整棵源码树，求值因此被网络与解包拖垮。惰性树（lazy-trees）把「取整棵树」改成「用到哪个文件才取哪个」，同时保持 narHash 与旧行为一致。本文讲清其机制、开启方式、与 flake 输入的交互、eval-cache 复用，以及大规模仓库的提速实践与常见坑。</description></item><item><title>nixpkgs 贡献与维护：从 by-name 到 backport</title><link>https://plumephp.com/nixpkgs-contribution-maintenance/</link><pubDate>Mon, 05 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/nixpkgs-contribution-maintenance/</guid><description>nixpkgs 贡献与维护实战：仓库结构与 pkgs/by-name 自动调用约定、打包一个新包从零到 PR 的完整流程、提交规范与 commit message 格式、review 流程与维护者职责、ofBorg CI 与测试、staging 分支与 backport 机制、包版本更新与长期维护、常见拒绝原因与最佳实践清单。</description></item><item><title>Nix 中的 CUDA 与机器学习环境：cudaPackages 与 PyTorch</title><link>https://plumephp.com/nix-cuda-ml-environments/</link><pubDate>Mon, 05 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/nix-cuda-ml-environments/</guid><description>Nix 中的 CUDA 与机器学习环境实战：GPU 环境为什么难（驱动/运行时/库三方版本约束）、nixpkgs 的 cudaPackages 布局、驱动与 cudatoolkit 的版本匹配、GPU 开发 shell 搭建、PyTorch 打包与 Python 生态、版本匹配矩阵与常见错配、容器镜像部署、cudaCapabilities 编译加速与多 GPU、常见坑与排错清单。</description></item><item><title>nix-darwin：macOS 的声明式系统配置</title><link>https://plumephp.com/nix-darwin-macos/</link><pubDate>Mon, 05 Oct 2026 13:00:00 +0800</pubDate><guid>https://plumephp.com/nix-darwin-macos/</guid><description>nix-darwin 实战：macOS 上的声明式系统配置——安装与 flake 集成、darwin 模块与系统配置、Homebrew 集成（casks/brews/taps）、defaults 系统偏好即代码、launchd 服务与定时任务、与 Home Manager 协同管理 dotfiles、用户与字体与 shell 配置、常见坑与升级流程、与 NixOS 的差异对比。</description></item><item><title>Nix 远程构建与分布式构建：builders 协议、ssh-ng 与跨架构</title><link>https://plumephp.com/nix-remote-builders/</link><pubDate>Mon, 05 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nix-remote-builders/</guid><description>Nix 远程构建实战：为什么要分布式构建、builder 协议与 ssh-ng 原理、/etc/nix/machines 与 buildMachines 配置、distributedBuilds 与调度策略、max-jobs/cores/system-features 的作用、x86 上编 aarch64 的跨架构构建、信任模型与签名、故障排查与性能调优、CI 中的远程构建编排。</description></item><item><title>Nix Overlays 与包集定制：final/prev、叠加顺序与 override 体系</title><link>https://plumephp.com/nix-overlays-customization/</link><pubDate>Mon, 05 Oct 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/nix-overlays-customization/</guid><description>Nix Overlays 与包集定制实战：overlay 的本质与 final/prev 签名、惰性互引与叠加顺序、import nixpkgs 注入 overlays 的几种姿势、override/overrideAttrs/overrideScope 三件套的取舍、替换整个包集与 pkgsStatic/pkgsCross、多 overlay 的组织与复用、与 flake 的结合、常见坑（无限递归/不级联/丢属性）与排错。</description></item><item><title>Nix Flake 输入管理与锁定：inputs、flake.lock 与私有源</title><link>https://plumephp.com/nix-flake-inputs-locking/</link><pubDate>Mon, 05 Oct 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nix-flake-inputs-locking/</guid><description>Nix Flake 输入管理实战：inputs 声明与六种 input 类型（path/git/github/tarball/url/indirect）、flake.lock 结构逐字段解析、nix flake update 与选择性更新、follows 去重与依赖统一、私有 input 与认证（token/ssh/netrc）、--override-input 本地开发、锁文件治理与团队协作、常见坑与排错清单。</description></item><item><title>flake-parts 与大型仓库组织：模块化 flake 的工程实践</title><link>https://plumephp.com/nix-flake-parts-large-repos/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nix-flake-parts-large-repos/</guid><description>当 flake 从个人小项目长成多包 monorepo，手写 forAllSystems 的模板代码会迅速失控。flake-parts 把 NixOS 模块系统的合并语义引入 flake 组织，让每个子项目只声明自己关心的输出。本文详解 perSystem、模块复用、inputs 分层与 monorepo 布局。</description></item><item><title>Nix 二进制缓存与替换器：substituters、签名与自建缓存</title><link>https://plumephp.com/nix-binary-cache-substituters/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nix-binary-cache-substituters/</guid><description>二进制缓存是 Nix 能在生产环境立足的关键：它让「构建」变成「下载」。本文详解 substituters 查询顺序、narinfo 与 nar 格式、trusted-public-keys 信任模型、nix-serve 与 harmonia 自建缓存、S3 后端与 CDN 部署，以及签名与推送的完整流程。</description></item><item><title>Nix 求值与构建性能优化：从 eval 剖析到远程构建</title><link>https://plumephp.com/nix-eval-build-performance/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nix-eval-build-performance/</guid><description>Nix 的时间花在两个阶段：求值（eval）与构建（build）。前者常被忽视却是「改一行等一分钟」的元凶，后者则受调度与缓存策略支配。本文详解 eval 剖析与缓存、惰性求值反模式、并行构建与 remote builders、store 优化与 GC 策略。</description></item><item><title>Nix 派生与 Store 内幕：derivation、输入寻址与引用图</title><link>https://plumephp.com/nix-derivations-store-internals/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nix-derivations-store-internals/</guid><description>derivation 是 Nix 构建的最小描述单元，store 路径则是它在文件系统中的唯一身份。本文深入 .drv 文件结构、store 路径哈希算法、输入寻址与内容寻址的差异、引用图与运行时闭包、gc root 机制，以及 store 的手动操作技巧。</description></item><item><title>Nix 语言生态打包：Python、Node 与 Rust 的依赖治理</title><link>https://plumephp.com/nix-language-ecosystems-packaging/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nix-language-ecosystems-packaging/</guid><description>把 Python、Node、Rust 项目打进 Nix 的难点不在编译，而在依赖锁定与原生库链接。本文详解 poetry2nix 与 uv2nix、node2nix 与 pnpm、naersk 与 crane 的打包机制、固定输出派生的哈希坑、devShell 与构建分离，以及选型建议。</description></item><item><title>NixOS 代际管理与回滚：从 generation 机制到引导项治理</title><link>https://plumephp.com/nixos-generations-rollback/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nixos-generations-rollback/</guid><description>NixOS 最令人安心的一点是「升级永远不会把你锁死」——每次 nixos-rebuild 都生成一个新的 generation，旧的完整保留。本文深入 profiles 布局、世代切换与回滚、systemd-boot 与 GRUB 引导项管理、特殊化配置，以及回滚演练与自动化。</description></item><item><title>Nix 源码获取与 fetchers：fetchFromGitHub、哈希与私有源</title><link>https://plumephp.com/nix-fetchers-sources/</link><pubDate>Wed, 30 Sep 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/nix-fetchers-sources/</guid><description>Nix 源码获取与 fetchers 实战：fetcher 的作用与固定哈希、fetchurl/fetchFromGitHub/fetchFromGitLab/fetchgit 选择、hash 格式与 SRI、私有仓库与凭据、补丁获取 fetchpatch、flake inputs 的 url 获取、版本与分支策略、常见坑与调试。</description></item><item><title>Nix 构建调试与错误排查：常见错误、trace 与诊断手段</title><link>https://plumephp.com/nix-debugging-error-handling/</link><pubDate>Wed, 30 Sep 2026 13:00:00 +0800</pubDate><guid>https://plumephp.com/nix-debugging-error-handling/</guid><description>Nix 构建调试与错误排查实战：常见错误分类（哈希不匹配/依赖缺失/语法错误/替换失败）、nix build 调试技巧（--verbose/-L/--show-trace）、builtins.trace 与调试输出、错误定位的思维（缩小到子依赖）、nix-instantiate/nix eval 诊断、store 诊断与 GC 修复、网络与缓存问题、生产排障清单。</description></item><item><title>NixOS 虚拟机与集成测试：nixosTest 框架与系统级验证</title><link>https://plumephp.com/nixos-vm-integration-testing/</link><pubDate>Wed, 30 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/nixos-vm-integration-testing/</guid><description>NixOS 虚拟机与集成测试实战：为什么需要系统级测试、nixosTest 框架、test driver 与机器声明、VM 测试的断言（成功条件/服务状态/端口）、runInLinuxVM 单包测试、模块测试与参数化、CI 里跑 NixOS 测试、常见坑与调试。</description></item><item><title>可复现与封闭构建：固定哈希、网络隔离与确定性</title><link>https://plumephp.com/nix-reproducible-hermetic-builds/</link><pubDate>Wed, 30 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/nix-reproducible-hermetic-builds/</guid><description>可复现与封闭构建实战：什么是可复现构建、固定哈希（fixed-output derivation）、构建网络隔离与 impure 检测、确定性问题（时间戳/路径/环境）、diffoscope 对比、Reproducible Builds 标准、nix build --rebuild 验证、让构建可复现的工程手段、常见坑。</description></item><item><title>Nix 包打补丁与版本定制：overrideAttrs、override 与源码补丁</title><link>https://plumephp.com/nix-package-patching/</link><pubDate>Wed, 30 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nix-package-patching/</guid><description>Nix 包打补丁与版本定制实战：为什么需要定制包、override 与 overrideAttrs 的区别、给包打源码补丁（patches/applyPatches）、替换依赖版本、override 陷阱（层级/递归）、在 flake 里覆盖 nixpkgs、写自己的补丁维护流程、常见坑与调试。</description></item><item><title>NixOS 安全加固实战：攻击面最小化、AppArmor 与审计</title><link>https://plumephp.com/nixos-security-hardening/</link><pubDate>Wed, 30 Sep 2026 09:00:00 +0800</pubDate><guid>https://plumephp.com/nixos-security-hardening/</guid><description>NixOS 安全加固实战：安全加固思维、攻击面最小化（最小服务/用户/暴露）、AppArmor 强制访问控制、安全内核参数与 sysctl、SSH 加固（密钥/速率限制/跳板）、auditd 审计与日志、firejail/沙箱隔离、安全更新与漏洞扫描、加固基线清单、常见陷阱。</description></item><item><title>Nix Flake 模板实战：从零搭建多语言项目脚手架</title><link>https://plumephp.com/nix-flake-templates/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nix-flake-templates/</guid><description>Nix Flake 模板实战：flake 模板体系、常用模板（多语言/多场景）、自建模板、模板引用与参数化、多输出组织（devShells/packages/checks）、模板与 CI 集成、常见坑与最佳实践。</description></item><item><title>NixOS 存储与文件系统：分区、LVM、Btrfs 与磁盘管理</title><link>https://plumephp.com/nixos-storage-filesystems/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nixos-storage-filesystems/</guid><description>NixOS 存储管理实战：磁盘分区与挂载、swap 配置、LVM 逻辑卷、Btrfs 子卷/快照/压缩、ZFS 集成、挂载选项与 fstab 声明式管理、磁盘配额与监控、故障恢复。</description></item><item><title>NixOS 密钥管理实战：sops-nix、agenix 与声明式秘钥分发</title><link>https://plumephp.com/nix-secrets-management/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nix-secrets-management/</guid><description>NixOS 密钥管理实战：为什么配置里不能写明文密钥、sops-nix（SOPS+age）工作流、agenix 声明式秘钥、多主机密钥分发、CI 与拉取密钥、密钥轮换与审计、配合 systemd 服务的秘钥注入。</description></item><item><title>NixOS 服务管理实战：systemd 声明、NixOS 容器与常用服务部署</title><link>https://plumephp.com/nixos-services-containers/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nixos-services-containers/</guid><description>NixOS 服务管理实战：声明式 systemd 服务、服务依赖与开机自启、环境变量与秘钥、NixOS 容器（NixOS Containers）、常用服务部署（nginx/postgres/redis/cron）、服务监控与开机启动时序。</description></item><item><title>NixOS 网络与防火墙配置：声明式网络管理实战</title><link>https://plumephp.com/nixos-network-firewall/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nixos-network-firewall/</guid><description>NixOS 声明式网络配置实战：接口与地址、DHCP/静态 IP、WiFi 与 wpa_supplicant、DNS 与解析、路由与多网卡、防火墙（iptables/nftables 声明式）、端口开放、NAT 与转发、tun/tap 与 VPN、WireGuard 配置。</description></item><item><title>NixOS 运维实战：升级、回滚、GC 与日常维护</title><link>https://plumephp.com/nixos-operations-maintenance/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/nixos-operations-maintenance/</guid><description>NixOS 运维与维护实战：系统升级流程（稳定版/滚动版）、channel 与 flake 升级对比、nixos-rebuild 各种子命令、回滚与世代管理、垃圾回收与 store 瘦身、磁盘空间排查、备份与恢复、日常巡检清单。</description></item><item><title>Nix 与 NixOS 专题：声明式系统管理的函数式革命</title><link>https://plumephp.com/posts/nix/</link><pubDate>Tue, 22 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/posts/nix/</guid><description>Nix 是革命性的纯函数式包管理器，以声明式配置和可复现构建著称；NixOS 是围绕其构建的声明式操作系统。本专题系统覆盖 Nix 表达式语言与惰性求值语义、nixpkgs 与 derivation 包构建、nix-shell 开发环境与 direnv 集成、Flakes 现代化工作流（flake.nix / inputs/outputs / flake.lock）、NixOS 系统级声明式配置（configuration.nix / systemd 服务管理）、Home Manager 用户级配置（dotfiles 即代码）、以及 Nix 构建 Docker 镜像与远程部署工具链（deploy-rs / Colmena），为追求可复现基础设施的系统工程师和 DevOps 提供完整技能路径。进阶篇进一步覆盖 Nix 语言底层语义（柯里化/惰性求值/fix 定点组合）、Flakes 工程化最佳实践、CI 与 Cachix 二进制缓存、NixOS 模块系统、devenv 可复现开发环境、交叉编译与 overlay 异构构建、Flake 模板与项目脚手架，以及 NixOS 生产运维实战：声明式网络与防火墙（nftables/NAT/WireGuard）、systemd 服务与 NixOS 容器部署、密钥管理（sops-nix/agenix）、存储与文件系统（LVM/Btrfs/ZFS/快照）、升级回滚与垃圾回收（世代管理/GC），并进一步延伸工程纵深：NixOS 安全加固（攻击面最小化/AppArmor/SSH 加固/auditd 审计）、Nix 包打补丁与版本定制（override/overrideAttrs/patches/fetchpatch）、可复现与封闭构建（固定哈希/网络隔离/SOURCE_DATE_EPOCH/--rebuild 验证）、NixOS 虚拟机与集成测试（nixosTest/runInLinuxVM/CI 落地）、Nix 构建调试与错误排查（哈希不匹配/--show-trace/builtins.trace/依赖二分定位）、以及源码获取与 fetchers（fetchurl/fetchFromGitHub/fetchgit/SRI 哈希/私有源/flake url inputs）。并补齐 lazy-trees 大规模仓库求值、disko 声明式分区、nixos-anywhere 远程部署、构建沙箱与可复现性、Store 垃圾回收优化、Nix 语言服务器等进阶议题。</description></item></channel></rss>