AgentSkillsCN

nixos-deprecations

自动检测并修复 NixOS 中的弃用配置。适用于审计环节、发现已弃用的选项、“old”、“update”、“migrate”、“upgrade”以及版本变更等场景。

SKILL.md
--- frontmatter
name: nixos-deprecations
description: Detects and fixes NixOS deprecations. Triggers on: audit, deprecated options found, "old", "update", "migrate", "upgrade", version changes

NixOS Deprecation Handling

Detection Commands

bash
grep -rHn "services\.xserver\.layout" /etc/nixos --include="*.nix"
grep -rHn "services\.xserver\.xkbOptions" /etc/nixos --include="*.nix"
grep -rHn "services\.xserver\.xkbVariant" /etc/nixos --include="*.nix"
grep -rHn "users\.extraUsers" /etc/nixos --include="*.nix"
grep -rHn "users\.extraGroups" /etc/nixos --include="*.nix"
grep -rHn "sound\.enable" /etc/nixos --include="*.nix"
grep -rHn "hardware\.pulseaudio\.enable = true" /etc/nixos --include="*.nix"
grep -rHn "gnome3\." /etc/nixos --include="*.nix"
grep -rHn "hardware\.opengl\.enable" /etc/nixos --include="*.nix"
grep -rHn "nvidiaPatches" /etc/nixos --include="*.nix"

Deprecation Table

DeprecatedReplacementSince
services.xserver.layoutservices.xserver.xkb.layout24.05
services.xserver.xkbVariantservices.xserver.xkb.variant24.05
services.xserver.xkbOptionsservices.xserver.xkb.options24.05
users.extraUsersusers.users23.11
users.extraGroupsusers.groups23.11
sound.enable = truePipeWire config24.05
hardware.pulseaudio.enable = trueservices.pipewire24.05
gnome3.*gnome.*23.05
nixfmtnixfmt-classic24.05
1password-cli_1password-cli24.05
sound.mediaKeys.enableRemoved (handled by DE)24.05
hardware.opengl.enablehardware.graphics.enable24.11
programs.hyprland.nvidiaPatchesRemoved24.05

Auto-Fix Patterns

XKB (24.05)

nix
# Before
services.xserver.layout = "us";
services.xserver.xkbOptions = "caps:escape";

# After
services.xserver.xkb = {
  layout = "us";
  options = "caps:escape";
};

Users (23.11)

nix
# Before
users.extraUsers.khaled = { ... };

# After
users.users.khaled = { ... };

Audio (24.05)

nix
# Before
sound.enable = true;
hardware.pulseaudio.enable = true;

# After
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
  enable = true;
  alsa.enable = true;
  pulse.enable = true;
  wireplumber.enable = true;
};

GNOME (23.05)

nix
# Before
gnome3.nautilus

# After
gnome.nautilus

Severity Levels

LevelAction
CriticalWill fail to build - fix immediately
WarningDeprecated, will break in future
InfoNewer alternative available