Author SHA1 Message Date
andreas ad17b67774 add better wallpaper engine gui 2026-10-20 22:25:24 +02:00
andreas 6b8778c6be code server 2026-10-20 22:24:54 +02:00
andreas d2b4e9d1f1 WIP 2026-10-17 11:43:55 +02:00
andreas 36fbaf137e Harden RTL8125 recovery checks and reapply EEE settings 2026-10-17 10:04:48 +02:00
andreas 8c2dbe4775 Update RTL8125 driver to 9.018.00 2026-10-17 07:01:38 +02:00
andreas 7c00c133ab transition to nixos stable 2026-10-17 06:50:58 +02:00
10 changed files with 327 additions and 98 deletions
+61
View File
@@ -0,0 +1,61 @@
# NixOS configuration
The default package set is NixOS 26.05. Home Manager and AAGL use their
matching 26.05 release branches. `drivebystation-nix` uses the standard
`pkgs.linuxPackages` kernel from stable, including matching external modules.
## Packages from unstable
`inputs.nixpkgs-unstable` is a separate package set, pinned in `flake.lock`.
Select individual applications explicitly, as with Trilium and JetBrains
Toolbox in the desktop host:
```nix
unstablePkgs.trilium-desktop
```
The host defines `unstablePkgs` by importing the separate input with
`allowUnfree = true`. Use `pkgs.<name>` for stable packages. Unstable
applications retain their own dependencies; the system package set stays on
stable.
Update the stable inputs and the application exceptions independently:
```sh
nix flake update nixpkgs home-manager aagl
nix flake update nixpkgs-unstable
```
The existing Mutter tearing override remains experimental. Its compatibility
and B580 graphics behavior require testing when changing the desktop stack.
## Validate and boot
```sh
nix build .#nixosConfigurations.drivebystation-nix.config.system.build.toplevel --no-link
sudo nixos-rebuild boot --flake .#drivebystation-nix
```
Only run the boot command after the build succeeds. Keep the previous working
generation available in the boot menu, then test networking, graphics, and
the webcam loopback after reboot. Git restores configuration sources; booting
the previous generation restores the previous system closure.
Whole-flake checks currently also evaluate an unfinished WSL host referencing
the disabled `nixos-wsl` input. Validate the desktop target directly until that
separate host configuration is repaired.
## Migration validation (2026-10-17)
The complete `drivebystation-nix` system built successfully without activation.
Its closure contains Linux 6.18.56, patched Mutter 50.5, GNOME Shell 50.5,
libdrm 2.4.133, r8125 9.016.01, and v4l2loopback 0.15.3. The explicit unstable
applications are Trilium 0.106.0 and JetBrains Toolbox 3.8.1.88030.
Nix syntax and Git whitespace checks pass. `nix flake check --no-build` stops
at the existing WSL input error described above. The edited Nix files retain
the repository's existing formatting; `nixpkgs-fmt --check` reports formatting
differences, including on the original flake before migration.
Boot, networking, B580 graphics, and tearing behavior still require runtime
testing. The migration does not add Intel tearing kernel patches.
Generated
+186 -70
View File
@@ -60,15 +60,16 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1787517695,
"narHash": "sha256-Z119G3qLJx22frNHO3/seMs7fCCvxe9NJJRfN4Jadew=",
"lastModified": 1789138195,
"narHash": "sha256-cvK9QXAzcgYYg6WsMSfzSE78QyCbNoRMF25GIZ0pz1s=",
"owner": "ezKEa",
"repo": "aagl-gtk-on-nix",
"rev": "4bb57072d963aa47f14894383a5560cf290e296a",
"rev": "decd5655d94eec05b6d5beacb9a652f8ca95344e",
"type": "github"
},
"original": {
"owner": "ezKEa",
"ref": "release-26.05",
"repo": "aagl-gtk-on-nix",
"type": "github"
}
@@ -90,6 +91,31 @@
"type": "github"
}
},
"bun2nix": {
"inputs": {
"flake-parts": "flake-parts",
"import-tree": "import-tree",
"nixpkgs": [
"linux-wallpaper-engine",
"nixpkgs"
],
"systems": "systems_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1770895533,
"narHash": "sha256-v3QaK9ugy9bN9RXDnjw0i2OifKmz2NnKM82agtqm/UY=",
"owner": "nix-community",
"repo": "bun2nix",
"rev": "c843f477b15f51151f8c6bcc886954699440a6e1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "bun2nix",
"type": "github"
}
},
"codex-desktop": {
"inputs": {
"flake-utils": "flake-utils",
@@ -159,22 +185,6 @@
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1650374568,
@@ -195,11 +205,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1788306937,
"narHash": "sha256-lbrI1UYVpFgKSsyrU9oeF7FHfnu8nLD9ja0ou9f2rxk=",
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f16b25b8c3d2809b87925d0b76652d7821a75c68",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"type": "github"
},
"original": {
@@ -228,7 +238,7 @@
},
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils_2"
"flake-utils": "flake-utils_3"
},
"locked": {
"lastModified": 1715533576,
@@ -249,6 +259,24 @@
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_5"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
@@ -309,15 +337,16 @@
]
},
"locked": {
"lastModified": 1788355065,
"narHash": "sha256-gAz5oTI7ur34CfuakQduiQd/2ZhO62Bn2XXg08nZYYQ=",
"lastModified": 1791938526,
"narHash": "sha256-yNYK2pdk3bCtJrpblrNYA6hZKdybWUeyTtx74+OEJFo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "d9d750e4fc11c10cab2da677bdd31e427f3a3a71",
"rev": "32904dfe1cf86039f3c8c9f41f94e1cfd76dbb34",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-26.05",
"repo": "home-manager",
"type": "github"
}
@@ -343,6 +372,21 @@
"type": "github"
}
},
"import-tree": {
"locked": {
"lastModified": 1763762820,
"narHash": "sha256-ZvYKbFib3AEwiNMLsejb/CWs/OL/srFQ8AogkebEPF0=",
"owner": "vic",
"repo": "import-tree",
"rev": "3c23749d8013ec6daa1d7255057590e9ca726646",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "import-tree",
"type": "github"
}
},
"json": {
"flake": false,
"locked": {
@@ -401,6 +445,26 @@
"type": "github"
}
},
"linux-wallpaper-engine": {
"inputs": {
"bun2nix": "bun2nix",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1792046320,
"narHash": "sha256-AM22WLmtSfXw/AKKTEVBpSTZ+ksc8aWTwLyu/xyTRSs=",
"owner": "jagrat7",
"repo": "linux-wallpaper-engine",
"rev": "f52102134ea4205a422eb93cc5550e8568a8d769",
"type": "github"
},
"original": {
"owner": "jagrat7",
"repo": "linux-wallpaper-engine",
"type": "github"
}
},
"millennium": {
"inputs": {
"millennium-src": "millennium-src",
@@ -442,39 +506,18 @@
"type": "github"
}
},
"nix-cachyos-kernel": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1788379544,
"narHash": "sha256-EMfRomvn1lAErvY/Q3bQL+PwEi+5hbBwI0ZI5SRC/WM=",
"owner": "xddxdd",
"repo": "nix-cachyos-kernel",
"rev": "d1c3cadc796061778cf7f62bdbfaf68cf3c3c654",
"type": "github"
},
"original": {
"owner": "xddxdd",
"ref": "release",
"repo": "nix-cachyos-kernel",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1788329703,
"narHash": "sha256-fHvRW4JUchuw6QNzQ50BfzeYe0TnjKml1V8PVRjntSI=",
"lastModified": 1772624091,
"narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "090e478bd64824e2122328df47a7efb74fdaf0c1",
"rev": "80bdc1e5ce51f56b19791b52b2901187931f5353",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
@@ -497,11 +540,11 @@
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1788057806,
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
"lastModified": 1769909678,
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
"rev": "72716169fe93074c333e8d0173151350670b824c",
"type": "github"
},
"original": {
@@ -510,13 +553,13 @@
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs-unstable": {
"locked": {
"lastModified": 1788179007,
"narHash": "sha256-hn1oU2rue2SYK8dAr8+WNZWtbsz1S2W5mnHlSEuh3bo=",
"lastModified": 1791956154,
"narHash": "sha256-jBYGPi4udQ9uo4KQp9m2J0546nJVQitG15gvZSaVVAs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "34ab99075ac4f7e40cf037eef32cb1c360bb85e9",
"rev": "55bfb4d7437bd4e09ab7cba58a43bd68eb310044",
"type": "github"
},
"original": {
@@ -526,6 +569,22 @@
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1791883866,
"narHash": "sha256-yvkDdToRZ4IgPc9tSBzzCYJvTLf8n5eE3rgUkpCuD5A=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a033e66ab94a6bedf2c3d58d93a36319d3cbbbaf",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1789286504,
@@ -588,9 +647,10 @@
"codex-desktop": "codex-desktop",
"home-manager": "home-manager",
"lanzaboote": "lanzaboote",
"linux-wallpaper-engine": "linux-wallpaper-engine",
"millennium": "millennium",
"nix-cachyos-kernel": "nix-cachyos-kernel",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",
"simple-wallpaper-engine": "simple-wallpaper-engine",
"snowfall-lib": "snowfall-lib",
"sops-nix": "sops-nix",
@@ -606,11 +666,11 @@
]
},
"locked": {
"lastModified": 1785476452,
"narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=",
"lastModified": 1785907205,
"narHash": "sha256-Ds1vTi53af4wDMAveSR/K0JnywDslLwmgwhVIiwnNmY=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c",
"rev": "c5cb13481d718fac906aa9cfd85f9b60e1a546cb",
"type": "github"
},
"original": {
@@ -663,7 +723,7 @@
},
"snowfall-lib": {
"inputs": {
"flake-compat": "flake-compat_4",
"flake-compat": "flake-compat_3",
"flake-utils-plus": "flake-utils-plus",
"nixpkgs": [
"nixpkgs"
@@ -765,9 +825,61 @@
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"linux-wallpaper-engine",
"bun2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1770228511,
"narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "337a4fe074be1042a35086f15481d763b8ddc0e7",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems_2"
"systems": "systems_4"
},
"locked": {
"lastModified": 1731533236,
@@ -797,14 +909,18 @@
"stb": "stb"
},
"locked": {
"lastModified": 1790172262,
"narHash": "sha256-gTnF4besYxSEFx0GTA35+/k81nE7WwvTIyJbIs1p20k=",
"path": "/home/andreas/Projects/linwallpaap/linux-wallpaperengine",
"type": "path"
"lastModified": 1792233763,
"narHash": "sha256-jT37HuSiRnYEJlmZwsu2+WqcaUIaLJXTkpZuXXCLX54=",
"owner": "Hion-V",
"repo": "linux-wallpaperengine",
"rev": "482ecf2b08a8111eed993dfcd44b6126b6e43c91",
"type": "github"
},
"original": {
"path": "/home/andreas/Projects/linwallpaap/linux-wallpaperengine",
"type": "path"
"owner": "Hion-V",
"ref": "Hion-V/prod",
"repo": "linux-wallpaperengine",
"type": "github"
}
},
"zen-browser": {
+7 -8
View File
@@ -3,7 +3,9 @@
inputs = {
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Use nixos-unstable for latest kernel and packages
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
# Application exceptions; keep the system and graphics stack on stable.
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
# nixos-wsl = {
# url = "github:nix-community/NixOS-WSL/main";
# inputs.nixpkgs.follows = "nixpkgs";
@@ -27,7 +29,7 @@
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
# anikki = {
@@ -43,15 +45,15 @@
# inputs.nixpkgs.follows = "nixpkgs";
# };
aagl = {
url = "github:ezKEa/aagl-gtk-on-nix";
url = "github:ezKEa/aagl-gtk-on-nix/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
wallpaperengine.url = "path:/home/andreas/Projects/linwallpaap/linux-wallpaperengine";
wallpaperengine.url = "github:Hion-V/linux-wallpaperengine/Hion-V/prod";
simple-wallpaper-engine = {
url = "github:Maxnights/simple-linux-wallpaperengine-gui";
inputs.nixpkgs.follows = "nixpkgs";
};
linux-wallpaper-engine.url = "github:jagrat7/linux-wallpaper-engine";
millennium = {
url = "github:SteamClientHomebrew/Millennium?dir=packages/nix";
inputs.nixpkgs.follows = "nixpkgs";
@@ -100,9 +102,6 @@
src = ./.;
overlays = with inputs; [
# Use the exact kernel versions as defined in this repo.
# Guarantees you have binary cache.
nix-cachyos-kernel.overlays.pinned
inputs.millennium.overlays.default
];
@@ -7,6 +7,17 @@
let
inherit (lib.my-namespace) enabled;
system = pkgs.stdenv.hostPlatform.system;
jagratWallpaperEngine =
(inputs.linux-wallpaper-engine.packages.${system}.default.override {
linux-wallpaperengine = inputs.wallpaperengine.packages.${system}.default;
}).overrideAttrs (old: {
# Forge 7 expects a default export, but the bundled Vite exposes named exports.
preBuild = (old.preBuild or "") + ''
substituteInPlace node_modules/@electron-forge/plugin-vite/dist/VitePlugin.js \
--replace-fail 'const vite_1 = __importDefault(require("vite"));' \
'const vite_1 = { default: require("vite") };'
'';
});
simpleWallpaperEngine =
inputs.simple-wallpaper-engine.packages.${system}.default.override {
# The upstream GUI package otherwise puts nixpkgs' unmodified
@@ -39,6 +50,8 @@ in
pkgs.libreoffice
pkgs.localsend
simpleWallpaperEngine
# Separate GUI for manual testing; keep the existing GUI's autostart.
jagratWallpaperEngine
# pkgs.vesktop
pkgs.obsidian
inputs.zen-browser.packages.x86_64-linux.default
+11 -2
View File
@@ -3,6 +3,13 @@ set -euo pipefail
nic="/sys/bus/pci/devices/$NIC_PCI"
bridge="/sys/bus/pci/devices/$NIC_BRIDGE"
log() { echo "rtl8125-recovery: $*"; }
disable_eee() {
local netdir
for netdir in "$nic"/net/*; do
[[ -e "$netdir/ifindex" ]] || continue
ethtool --set-eee "$(basename "$netdir")" eee off
done
}
# Let normal PCI and network resume finish before diagnosing anything.
sleep 10
@@ -28,9 +35,10 @@ if [[ -d "$nic" ]]; then
command=$(timeout 5 setpci -s "$NIC_PCI" COMMAND 2>/dev/null || true)
# Both memory decoding and bus mastering should be enabled on this host.
# Disconnected cables do not disable these PCI command bits.
if [[ "$power" != D3cold && "$command" =~ ^[[:xdigit:]]{4}$ ]] &&
if [[ "$power" == D0 && "$command" =~ ^[[:xdigit:]]{4}$ && "${command,,}" != ffff ]] &&
(( (16#$command & 6) == 6 )); then
log "PCI state healthy ($power, COMMAND=$command); no recovery needed."
disable_eee
exit 0
fi
# An administratively disabled NIC should not be automatically reset.
@@ -70,11 +78,12 @@ for ((attempt=0; attempt<20; attempt++)); do
iface=$(basename "${netdirs[0]}")
power=$(cat "$nic/power_state")
command=$(timeout 5 setpci -s "$NIC_PCI" COMMAND 2>/dev/null || true)
if [[ "$power" == D0 && "$command" =~ ^[[:xdigit:]]{4}$ ]] &&
if [[ "$power" == D0 && "$command" =~ ^[[:xdigit:]]{4}$ && "${command,,}" != ffff ]] &&
(( (16#$command & 6) == 6 )); then
# NetworkManager also reapplies the saved profile. Explicitly
# restore WoL here so recovery does not depend on its timing.
ethtool -s "$iface" wol g
disable_eee
if ! ethtool "$iface" | grep -Eq '^[[:space:]]*Wake-on: g$'; then
log "PCI recovered, but magic-packet WoL could not be confirmed."
exit 1
@@ -0,0 +1,17 @@
{ ... }:
{
services.code-server = {
enable = true;
user = "andreas";
group = "users";
host = "0.0.0.0";
port = 1337;
auth = "password";
hashedPassword = "$argon2i$v=19$m=4096,t=3,p=1$Njl5em15cVdqMVluSWJneWp4OUhObGgxZ0tnPQ$1AAVNLuuKv5qyno40QAxFVPeAydY+8XkEVovKYrkJN0";
disableTelemetry = true;
disableUpdateCheck = true;
};
networking.firewall.allowedTCPPorts = [ 1337 ];
}
@@ -10,8 +10,10 @@
{
imports = [
./code-server.nix
./tigervnc.nix
./hardware/hardware-configuration.nix
./hardware/realtek-r8125.nix
];
@@ -266,7 +268,7 @@
services.mullvad-vpn = {
enable = true;
gui.enable = true;
package = pkgs.mullvad-vpn;
};
fonts = {
@@ -29,6 +29,11 @@ let
# inherit (lib.my-namespace) systemPackages;
inherit pkgs;
installedPackages = lib.my-namespace.mkPackages pkgs;
# Explicit application exceptions; all other packages use stable pkgs.
unstablePkgs = import inputs.nixpkgs-unstable {
system = pkgs.stdenv.hostPlatform.system;
config.allowUnfree = true;
};
in
{
# inherit system;
@@ -87,7 +92,7 @@ in
spotify
appimage-run
prismlauncher #replaces broken minecraft package
trilium-desktop
unstablePkgs.trilium-desktop
terraform
virt-manager
nil
@@ -170,7 +175,7 @@ in
my-namespace.cs-demo-manager
vscode-modernized
zed-editor
jetbrains-toolbox
unstablePkgs.jetbrains-toolbox
(pkgs.writeShellScriptBin "switch-to-desktop" ''
#!/bin/sh
@@ -14,11 +14,7 @@
./acer-monitor-edid.nix
./samsung-monitor-edid.nix
];
# boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
hardware.enableRedistributableFirmware = true;
# boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
# boot.kernelPackages = pkgs.linuxPackages;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.kernelModules = [ "kvm-amd" "r8125" "4vl2loopback" ];
@@ -26,17 +22,6 @@
boot.supportedFilesystems = [ "ntfs" ];
boot.blacklistedKernelModules = [ "r8169" ];
systemd.services.disable-realtek-eee = {
description = "Disable Realtek Energy Efficient Ethernet";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.ethtool}/bin/ethtool --set-eee enp10s0 eee off";
RemainAfterExit = true;
};
};
fileSystems."/" =
@@ -0,0 +1,22 @@
{ pkgs, ... }:
{
# Keep the vendor driver tied to this host's selected kernel, including its
# build dependencies and module installation path supplied by nixpkgs.
boot.kernelPackages = pkgs.linuxPackages.extend (_final: prev: {
r8125 = prev.r8125.overrideAttrs {
version = "9.018.00";
# The mirror's top-level wrapper overrides BASEDIR with /lib/modules.
# Build in src directly so nixpkgs' kernel path reaches kbuild.
buildFlags = [ "-C" "src" "modules" ];
# Realtek's release mirrored by the DKMS maintainer. Pin the source rather
# than running the vendor installer or following a mutable branch.
src = pkgs.fetchFromGitHub {
owner = "awesometic";
repo = "realtek-r8125-dkms";
rev = "9a152bf920334aead090d2fb4d91f67a84923123"; # 9.018.00-1
hash = "sha256-yeQsyraNrms1Txm7ZAKeiPfF0tfN6WSHUo5DnvfFosw=";
};
};
});
}