NixOS配置黑名单unfreeRedistributableFirmware后仍报错如何解决
问题原因
即便你已经指定使用Linux-libre内核,NixOS默认配置会开启hardware.enableAllFirmware选项,自动引入全量固件包集合,其中就包含你已经拉黑的firmware-linux-nonfree包,因此会触发许可校验报错。
解决方案
- 方案1:直接禁用全局非自由固件自动引入
在configuration.nix中添加如下配置,强制关闭全量固件加载、清空默认固件列表即可:
配置保存后执行hardware.enableAllFirmware = false; # 强制覆盖系统默认固件列表,避免隐含依赖引入非自由固件 hardware.firmware = lib.mkForce []; # 如有明确需要的自由固件,可手动添加到上方数组中,例如 pkgs.firmwareLinuxFreesudo nixos-rebuild switch即可正常完成系统构建。 - 方案2:排查依赖根源后针对性处理
如果你需要保留部分固件加载逻辑,可先临时将unfreeRedistributableFirmware从黑名单移除,执行以下命令查询具体是哪个包依赖了非自由固件包:
定位到依赖来源后,可选择卸载对应包、替换为不依赖非自由固件的版本,或单独屏蔽该依赖即可解决报错。nix why-depends /run/current-system pkgs.firmware-linux-nonfree
内容的提问来源于stack exchange,提问作者Theerawat Kiatdarakun
相关产品推荐
相关产品推荐

