No description
| usr/src/AIC8800 | ||
| aic8800d80fdrvpackage.deb | ||
| control.tar.gz | ||
| data.tar.gz | ||
| debian-binary | ||
| flake.nix | ||
| nixos-module.nix | ||
| README.md | ||
AIC8800 USB Wi-Fi Driver for NixOS
This flake provides the AIC8800 USB Wi-Fi driver (used by UGREEN AX900 and similar adapters) as a NixOS module.
Features
- ✅ Kernel 6.17+ compatibility (includes fixes for timer and cfg80211 API changes)
- ✅ Automatic firmware installation
- ✅ Configurable udev rules for USB disk ejection and power management
Usage
In your flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
aic8800 = {
url = "git+https://git.tvpdev.de/Tsubajashi/alc8800";
# Or use a local path:
# url = "path:/path/to/alc8800";
};
};
outputs = { self, nixpkgs, aic8800, ... }: {
nixosConfigurations.your-host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
aic8800-src = aic8800; # Pass the flake source
};
modules = [
aic8800.nixosModules.default
./configuration.nix
];
};
};
}
In your configuration.nix
{
hardware.aic8800 = {
enable = true;
# Optional: enable udev rules (default: true)
enableUdevRules = true;
};
}
Alternative: Using as a flake input with specialArgs
If you're already using aic8800-src as a flake input:
{
inputs = {
aic8800-src = {
url = "git+https://git.tvpdev.de/Tsubajashi/alc8800";
flake = false;
};
aic8800 = {
url = "git+https://git.tvpdev.de/Tsubajashi/alc8800";
};
};
outputs = { self, nixpkgs, aic8800, aic8800-src, ... }: {
nixosConfigurations.your-host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
aic8800-src = aic8800-src; # Use the flake = false input
};
modules = [
aic8800.nixosModules.default
./configuration.nix
];
};
};
}
What it does
When enabled, the module:
- Builds the kernel modules (
aic_load_fwandaic8800_fdrv) for your kernel version - Installs firmware to
/lib/firmware/aic8800D80/ - Loads the modules automatically at boot
- Configures udev rules to:
- Automatically eject USB storage devices that appear when the adapter is plugged in (switches to Wi-Fi mode)
- Keep the Wi-Fi interface awake to avoid autosuspend issues
Kernel Compatibility
The driver includes compatibility fixes for Linux kernel 6.17+:
- Timer API changes (
del_timer→timer_delete) - cfg80211 API changes (additional parameter for spurious frame handlers)
Troubleshooting
If you get an error about aic8800-src not being found, make sure you're passing it via specialArgs in your flake.nix.