Home Manager 26.05 版本发布全览:SSH RFC 42、按需激活、模块化服务与关键变更迁移指南
Home Manager 26.05 版本发布全览SSH RFC 42、按需激活、模块化服务与关键变更迁移指南【免费下载链接】home-managerManage a user environment using Nix [maintainerkhaneliman, rycee]项目地址: https://gitcode.com/GitHub_Trending/ho/home-managerHome Manager 26.05 稳定版发布于 2026 年 5 月是该项目一次覆盖面极广的里程碑式发布。本指南以 docs/release-notes/rl-2605.md 为骨架逐条解读本次发布的 Highlights 与 State Version 变更并结合仓库源码说明新选项的底层实现、迁移路径与配置示例帮助你在升级到home.stateVersion 26.05时顺利完成配置迁移。RFC 42 风格的 SSH 配置programs.ssh.settings26.05 起Home Manager 支持以 RFC 42 风格声明式配置 OpenSSHprograms.ssh.settings { Host github.com { IdentityFile ~/.ssh/id_ed25519; User git; }; };旧格式programs.ssh.matchBlocks已被标记为废弃并会在配置求值时自动迁移见 modules/programs/ssh.nix 中matchBlocks选项与lib.mapAttrs自动转换逻辑。迁移时matchBlocks.name.extraOptions中的指令需要按上游 OpenSSH 指令名ssh_config(5)写入settings同时设置host与match的旧块会触发警告见 modules/programs/ssh.nix。settings选项定义于 modules/programs/ssh.nix支持地址、端口、动态转发等结构化子选项programs.ssh.settings可直接覆盖旧配置的绝大部分能力。home-manager.startAsUserService登录时按需激活新选项home-manager.startAsUserService默认false将每个用户的激活从系统启动阶段移到用户登录时按需执行适用于 home 目录在登录后才挂载的场景如pam_mount。其实现位于 nixos/default.nix关闭时默认每个用户生成home-manager-user系统服务在multi-user.target启动阶段运行并设置RequiresMountsFor homeDirectorynixos/default.nix。开启时生成统一的用户级服务systemd.user.services.home-manager通过 drop-in10-user-activation.conf为每个用户注入ExecStart${activationPackage}/activate并在系统激活时用systemctl --user restart home-manager重载nixos/default.nix。从源码看该模式仍处于实验阶段文档明确提示“多用户场景可能加速启动但尚未证实”且依赖完整的 systemd 用户上下文使用前请评估你的登录管理器是否满足条件。新增home.services命名空间接入 nixpkgs 模块化服务本次发布新增home.services即 nixpkgs「模块化服务」在用户域的等价物。来自包的pkgs.name.passthru.services.default可直接原样导入并提升为用户 systemd 单元同一模块在 NixOS 与 Home Manager 上求值结果一致。完整说明见 docs/manual/usage/modular-services.md。最小示例——以用户服务运行 mpd{ pkgs, ... }: { home.services.mpd { process.argv [ ${pkgs.mpd}/bin/mpd --no-daemon ]; }; }该配置生成~/.config/systemd/user/mpd.serviceExecStart指向 mpd 二进制默认WantedBydefault.target。关键语义每个服务暴露上游 NixOS 风格 schemaprocess.argv、systemd.lib、systemd.mainExecStart、systemd.service、systemd.services、systemd.sockets提升后的单元由 NixOS 风格 attrswantedBy、serviceConfig等翻译为 Home Manager 消费的 INI 结构{ Unit; Service; Install; }。子服务嵌套services.sub以父服务名为前缀虚线命名空单元键表示服务主单元process.argv成为其默认ExecStart。configData.name声明配置文件物化到$XDG_CONFIG_HOME/home-services/service/name其 store 路径自动加入主单元的X-Reload-Triggers配置变化即触发服务重启如需 reload 而非 restart可覆盖X-SwitchMethod reload。包内模块若含DynamicUser、AmbientCapabilities等用户会话无法执行的指令单元仍会生成用户 systemd 静默忽略无法应用的指令WantedBymulti-user.target自动归一化为WantedBydefault.target其余指令可按服务覆盖。其他 Highlights 逐条解读Podman 与 RcloneDarwin 增强services.podman.useDefaultMachine及 Darwin 上的 podman machine 管理选项新增见 modules/services/podman 目录。programs.rclone模块在 Darwin 上支持 launchd 托管的 config、mount、serve agent新增programs.rclone.remotes.name.serve可在 Linux 与 Darwin 上管理rclone servesidecar 服务。非 systemd 平台下programs.rclone.requiresUnit为只读且恒为null。Syncthing 凭据流程变更services.syncthing.passwordFile已移除改用services.syncthing.guiCredentials。若旧配置使用了密码文件需迁移到新选项。Firefox 扩展改为按 profile 管理顶层programs.firefox.extensions [ ... ]列表被移除改为programs.firefox.profiles.myprofile.extensions.packages [ pkgs.firefox-addons.xxx ]; programs.firefox.profiles.myprofile.extensions.settings.{extension-id}.permissions [ ... ];旧顶层写法需迁移到programs.firefox.profiles.name.extensions.packages。实现见 modules/programs/firefox/mkFirefoxModule.nixextensions.packages会链接进profilesPath/profile/extensionsmkFirefoxModule.nix。Thunderbird 增强新增accounts.email.accounts.name.ews、outlook.office365.com-ews账户 flavor、声明式语言包与 enterprise policies。使用outlook.office365.comflavor 且未显式设置认证方式的账户IMAP/SMTP 认证默认改为 OAuth2。systemd 用户单元包安装新增systemd.user.packages提供systemd.packages的用户级等价物可直接从包中安装 unit 文件到用户目录。WezTerm 声明式配置新增programs.wezterm.settings见 modules/programs/wezterm.nixprograms.wezterm.settings { color_scheme Catppuccin Mocha; font_size 13; font lib.generators.mkLuaInline wezterm.font(JetBrains Mono); };设置以 Nix attrset 表达经lib.generators.toLua序列化为$XDG_CONFIG_HOME/wezterm/wezterm.lua。lib.generators.mkLuaInline可内嵌wezterm.font、wezterm.action.*等原始 Lua 表达式。既有programs.wezterm.extraConfig仍完全支持可与settings组合冲突时extraConfig返回的表优先但为浅合并见 modules/programs/wezterm.nix。Anki 选项修正与迁移programs.anki.uiScale取值修正为1.0–2.0此前误为0.0–1.0。同步选项从programs.anki.sync.*移至programs.anki.profiles.User 1.sync.*programs.anki.sync.passwordFile迁移为programs.anki.profiles.User 1.sync.keyFile。VSCode 系分支独立模块化为programs.cursor、programs.vscodium、programs.windsurf、programs.kiro、programs.antigravity新增专用模块均由共享工厂mkVscodeModule构建可独立且同时配置多个 fork。此前通过programs.vscode.package选择分支的写法需迁移到对应模块programs.vscode.pname选项已移除。AI 编码助手模块统一contextprograms.claude-code、programs.codex、programs.opencode共享统一的context选项提供全局指令。旧的claude-code.memory、codex.custom-instructions、opencode.rules废弃并自动迁移。programs.mcp.servers通过新增的enableMcpIntegration扩展到更多助手与编辑器模块。man 模块拆分programs.man拆分为互斥的programs.man.man-db.enable与programs.man.mandoc.enable子模块用于选择 man 查看器实现。NeoviminitLua与 sideloadprograms.neovim.extraLuaConfig更名为programs.neovim.initLua默认将生成的 Lua 初始化写入$XDG_CONFIG_HOME/nvim/init.lua。若该文件由外部管理需设置programs.neovim.sideloadInitLua true改由 Neovim wrapper 加载生成的 Lua。sshAuthSock模块新增sshAuthSock模块统一管理SSH_AUTH_SOCK环境变量由提供 SSH agent 的模块services.ssh-agent、services.gpg-agent等隐式配置见 modules/misc/ssh-auth-sock.nix。旧的services.ssh-agent.enable{Bash,Zsh,Fish,Nushell}Integration选项已移除shell 初始化统一走sshAuthSock。PipeWire 客户端配置新增services.pipewire.enable模块提供 PipeWire、WirePlumber 与 PulseAudio/JACK 兼容层的客户端侧配置不安装也不管理 PipeWire 守护进程本身。swww → awww 重命名services.swww随上游项目更名迁移为services.awwwenable、package、extraArgs自动迁移。移除 freeformextraConfig逃生舱programs.aerospace.extraConfig及userSettings、programs.aria2.extraConfig移除改用 RFC 42settings。programs.mise.settings更名为programs.mise.globalConfig.settings。programs.eww.configDir及enable{Bash,Zsh,Fish}Integration移除改用programs.eww.yuckConfig与programs.eww.scssConfig声明式配置。programs.niriswitcher选项移除。Darwin 集成行为变更launchd agent 启动前等待/nix/store挂载替换 agent 时使用launchctl bootout --wait。nix-darwin activation 将 dry-run 模式传播到 Home Manager 用户激活。Home Manager 导出TERMINFO_DIRS使 shell 可见 Home Manager 安装包提供的 terminfo 条目。nix.assumeXdg与频道位置探测新增nix.assumeXdg适用于 Nix 在 Home Manager 之外配置了 XDG base directories 的安装Home Manager 同时会检测osConfig.nix.settings.use-xdg-base-directories以决定声明式 channel 条目放置位置。State Version 26.05 变更清单以下变更仅在home.stateVersion 26.05或更新时生效选项变更内容gtk.gtk4.theme不再默认镜像gtk.themeprograms.zsh.dotDir当xdg.enable为 true 时默认值为 XDG 配置目录通常~/.config/zshprograms.yazi.shellWrapperName默认值由yy改为yxdg.userDirs.setSessionVariables默认值由true改为falsexdg.userDirs.extraConfig不再接受XDG_name_DIR形式的键直接使用名称如DESKTOP使用旧形式会触发警告programs.man.packageDarwin 上默认nullnixpkgs 的 GNU man 自带在 Darwin 上不可用的apropos/man -k与whatis/man -fNix 安装的 man 手册仍可通过 macOS 自带man配合home.extraOutputsToInstall使用programs.neovim.withPython3/withRuby默认false跟随 nixpkgsprograms.neovim.plugins.name.type默认lua此前为viml插件config片段默认按 Lua 处理programs.firefox.configPathLinux 上默认${config.xdg.configHome}/mozilla/firefox此前为~/.mozilla/firefoxwayland.windowManager.hyprland.configType默认lua此前为hyprlang如需继续生成$XDG_CONFIG_HOME/hypr/hyprland.conf显式设为hyprlangprograms.docker-cli.configDirxdg.enable为 true 时默认${config.xdg.configHome}/docker此前~/.dockerservices.colima.profiles为默认 context 设置$DOCKER_HOSTservices.home-manager.autoUpgrade.preSwitchCommands默认空列表此前useFlake true时默认[ nix flake update ]如需保持自动更新 flake inputs显式设置preSwitchCommands [ nix flake update ]programs.mergiraf.enableGitIntegration/enableJujutsuIntegration默认false集成需显式启用升级建议先升级后改 stateVersion保持旧home.stateVersion运行一次home-manager switch确认迁移警告matchBlocks、extraConfig、firefox.extensions 等按提示处理完毕再将 stateVersion 提升为26.05。善用自动迁移SSHmatchBlocks、AI 模块context、services.swww.*等均自动迁移但自动迁移后建议手动改写为新写法避免长期依赖废弃路径。关注破坏性移除programs.firefox.extensions、programs.vscode.pname、services.syncthing.passwordFile、programs.aerospace.extraConfig等属于直接移除项升级前务必完成迁移。按需启用新能力home-manager.startAsUserService与home.services模块化服务均为新增能力前者实验性较强后者面向希望复用 nixpkgs 包内服务模块的用户按实际场景决定是否启用。完整的官方发布说明可随时查阅 docs/release-notes/rl-2605.md模块化服务详细文档见 docs/manual/usage/modular-services.md。【免费下载链接】home-managerManage a user environment using Nix [maintainerkhaneliman, rycee]项目地址: https://gitcode.com/GitHub_Trending/ho/home-manager创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Polar 前端服务端跨请求 LRU 缓存实战:从 React.cache() 到 Fluid Compute 共享缓存

Polar 前端服务端跨请求 LRU 缓存实战:从 React.cache() 到 Fluid Compute 共享缓存

Polar 前端服务端跨请求 LRU 缓存实战:从 React.cache() 到 Fluid Compute 共享缓存 【免费下载链接】polar Polar — A billing platform for the intelligence era 项目地址: https://gitcode.com/GitHub_Trending/po/polar 导读 本指南基于 Polar 仓库中…

2026/11/7 20:34:22 阅读更多 →
RDMA从原理到连通性测试全解析:内核旁路、QP与RoCE实战

RDMA从原理到连通性测试全解析:内核旁路、QP与RoCE实战

这几年在数据中心和超算圈子折腾网络,RDMA 这个词基本绕不开。做分布式存储、高性能数据库、AI 训练集群的同学,应该都听过它,但很多人对它的认知停留在“这是个很快的网络技术”这个层面。至于它到底解决了什么问题、底层是怎么把数据传过去…

2026/10/25 20:10:48 阅读更多 →
华为2288H-V5服务器RAID配置实战:从阵列创建到系统安装全流程

华为2288H-V5服务器RAID配置实战:从阵列创建到系统安装全流程

前两天去机房给一台华为2288H-V5服务器做RAID配置,原本以为半小时能搞定的活,结果在驱动加载和阵列初始化上卡了两个多小时。说实话,给华为2288H-V5做RAID本身不难,难的是很多资料讲得断断续续,要么只讲一种RAID卡界面…

2026/11/4 3:17:33 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/6 15:21:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/7 12:08:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/6 22:01:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/6 22:01:11 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/7 12:08:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/6 22:01:09 阅读更多 →

日新闻

周新闻

月新闻