feat(neogaia): adopt the upstream hardware profile (task 0013)
The laptop's hardware facts were guessed before it ran NixOS. Hand them to the upstream nixos-hardware profile for this exact model, which fixes four things that are wrong on the running machine: the laptop suspends into s2idle rather than deep S3, the PS/2 mouse driver loads over an i2c touchpad, no thermal management runs, and firmware updates are impossible. The profile is taken wholesale, including the Intel graphics support it carries. Those packages are inert without a display server, and trimming them would mean diverging from upstream for no present benefit. Drop the host's own Intel microcode setting, which the profile now defaults from the redistributable firmware already enabled here. The input follows the base nixpkgs: only its NixOS modules are consumed, so its own pin would be evaluated by nothing while drifting silently.
This commit is contained in:
@@ -10,9 +10,36 @@ The microcode setting the `Host` currently declares is dropped, because the prof
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] `nixos-hardware` is a flake input
|
- [x] `nixos-hardware` is a flake input
|
||||||
- [ ] The Dell XPS 13 9380 profile is imported by the `neogaia` `Host`
|
- [x] The Dell XPS 13 9380 profile is imported by the `neogaia` `Host`
|
||||||
- [ ] The `Host`'s own Intel microcode setting is removed, now that the profile supplies it
|
- [x] The `Host`'s own Intel microcode setting is removed, now that the profile supplies it
|
||||||
- [ ] `nix flake check` builds the `neogaia` toplevel
|
- [x] `nix flake check` builds the `neogaia` toplevel
|
||||||
- [ ] Manual confirmation after a rebuild: the default sleep mode is deep rather than s2idle
|
- [ ] Manual confirmation after a rebuild: the default sleep mode is deep rather than s2idle
|
||||||
- [ ] Manual confirmation after a rebuild: the thermal and power management services are active, and the PS/2 mouse driver is no longer loaded
|
- [ ] Manual confirmation after a rebuild: the thermal and power management services are active, and the PS/2 mouse driver is no longer loaded
|
||||||
|
|
||||||
|
## Implementation Notes
|
||||||
|
|
||||||
|
The two manual criteria are left unresolved deliberately, and this task is not
|
||||||
|
finished until the operator resolves them. Both require a `nixos-rebuild switch`
|
||||||
|
followed by a **reboot**, neither of which can be performed here: the rebuild
|
||||||
|
needs root, and the sleep-mode and module-blacklist changes only take effect on a
|
||||||
|
fresh boot rather than on activation, since the modules in question are already
|
||||||
|
loaded.
|
||||||
|
|
||||||
|
The strongest evidence obtainable short of that reboot was gathered from the
|
||||||
|
evaluated configuration, and all of it agrees with the intent: the deep-sleep
|
||||||
|
kernel parameter is present, the PS/2 mouse module is blacklisted, the thermal,
|
||||||
|
power and firmware services are enabled, and Intel microcode updates remain on
|
||||||
|
through the profile's default now that the `Host` no longer sets them. That
|
||||||
|
confirms what was built, not what the machine does.
|
||||||
|
|
||||||
|
The input follows the base nixpkgs. Locking it without that pulled a second
|
||||||
|
nixpkgs into the lock file, which nothing evaluates — only the NixOS modules are
|
||||||
|
consumed — and which would drift silently. Following matches every other input
|
||||||
|
here except chaotic, whose separate pin is deliberate.
|
||||||
|
|
||||||
|
Verify after rebooting:
|
||||||
|
|
||||||
|
cat /sys/power/mem_sleep # expect [deep], currently [s2idle] deep
|
||||||
|
systemctl is-active thermald tlp # expect active, currently inactive
|
||||||
|
lsmod | grep psmouse # expect no output, currently loaded
|
||||||
|
|||||||
21
flake.lock
generated
21
flake.lock
generated
@@ -117,6 +117,26 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1784310968,
|
||||||
|
"narHash": "sha256-rkSPTePrKqs4dg+i7ZFCq93+HrClac6oSwXX927SVjA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "779c32a00155994c86cde8213a8dd4df139d4355",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784120854,
|
"lastModified": 1784120854,
|
||||||
@@ -208,6 +228,7 @@
|
|||||||
"chaotic": "chaotic",
|
"chaotic": "chaotic",
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
|||||||
@@ -28,6 +28,12 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Upstream per-machine hardware profiles; each host imports its own.
|
||||||
|
nixos-hardware = {
|
||||||
|
url = "github:NixOS/nixos-hardware";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
# CachyOS kernel and binary cache. Pins its own nixpkgs so its cache stays
|
# CachyOS kernel and binary cache. Pins its own nixpkgs so its cache stays
|
||||||
# usable and the kernel is fetched from it.
|
# usable and the kernel is fetched from it.
|
||||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
{ pkgs, ... }:
|
{ inputs, pkgs, ... }:
|
||||||
# neogaia — Dell XPS 13 9380 laptop.
|
# neogaia — Dell XPS 13 9380 laptop.
|
||||||
# Disk layout is in ./disk.nix; `fileSystems` are derived from it, none declared here.
|
# Disk layout is in ./disk.nix; `fileSystems` are derived from it, none declared here.
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
inputs.nixos-hardware.nixosModules.dell-xps-13-9380
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./disk.nix
|
./disk.nix
|
||||||
];
|
];
|
||||||
@@ -15,9 +16,8 @@
|
|||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_cachyos;
|
boot.kernelPackages = pkgs.linuxPackages_cachyos;
|
||||||
|
|
||||||
hardware.cpu.intel.updateMicrocode = true;
|
|
||||||
|
|
||||||
# Redistributable firmware for the QCA6174 wifi (ath10k blobs).
|
# Redistributable firmware for the QCA6174 wifi (ath10k blobs).
|
||||||
|
# Intel microcode updates follow from this; none declared here.
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
# RAM-backed swap; no on-disk swap partition.
|
# RAM-backed swap; no on-disk swap partition.
|
||||||
|
|||||||
Reference in New Issue
Block a user