nix-cachyos-kernel/README.md
2025-12-08 21:43:45 -08:00

123 lines
4.0 KiB
Markdown

# Nix packages for CachyOS Kernel
This repo contains Linux kernels with both [CachyOS patches](https://github.com/CachyOS/kernel-patches) and [CachyOS tunings](https://github.com/CachyOS/linux-cachyos), as well as [CachyOS-patched ZFS module](https://github.com/CachyOS/zfs).
## Which kernel versions are provided?
This repo provides the latest kernel version and the latest LTS kernel version:
```bash
└───packages
├───aarch64-linux
├───linux-cachyos-latest
├───linux-cachyos-latest-lto
├───linux-cachyos-lts
└───linux-cachyos-lts-lto
└───x86_64-linux
├───linux-cachyos-latest
├───linux-cachyos-latest-lto
├───linux-cachyos-lts
└───linux-cachyos-lts-lto
```
The kernel versions are automatically kept in sync with Nixpkgs, so once the latest/LTS kernel is updated in Nixpkgs, CachyOS kernels in this repo will automatically catch up.
The kernels ending in `-lto` has Clang+ThinLTO enabled.
For each linux kernel entry under `packages`, we have a corresponding `linuxPackages` entry under `legacyPackages` for easier use in your NixOS configuration, e.g.:
- `linux-cachyos-latest` -> `inputs.nix-cachyos-kernel.legacyPackages.x86_64-linux.linuxPackages-cachyos-latest`
- `linux-cachyos-lts-lto` -> `inputs.nix-cachyos-kernel.legacyPackages.x86_64-linux.linuxPackages-cachyos-lts-lto`
## How to use kernels
Add this repo to the inputs section of your `flake.nix`:
```nix
{
inputs = {
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel";
}
}
```
Add the repo's overlay in your NixOS configuration, this will expose the packages in this flake as `pkgs.cachyosKernels.*`.
Then specify `pkgs.cachyosKernels.linuxPackages-cachyos-latest` (or other variants you'd like) in your `boot.kernelPackages` option.
### Example configuration
```nix
{
nixosConfigurations.example = inputs.nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
(
{ pkgs, ... }:
{
nixpkgs.overlays = [ self.overlay ];
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
# ... your other configs
}
)
];
};
}
```
## How to use ZFS modules
> Note: CachyOS-patched ZFS module may fail to compile from time to time. Most compilation failures are caused by incompatibilities between kernel and ZFS. Please check [ZFS upstream issues](https://github.com/openzfs/zfs/issues) for any compatibility reports, and try switching between `zfs_2_3`, `zfs_unstable` and `zfs_cachyos`.
To use ZFS module with `linuxPackages-cachyos-*` provided by this flake, point `boot.zfs.package` to `config.boot.kernelPackages.zfs_cachyos`.
```nix
{
nixosConfigurations.example = inputs.nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
(
{ pkgs, ... }:
{
nixpkgs.overlays = [ self.overlay ];
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
# ZFS config
boot.supportedFilesystems.zfs = true;
boot.zfs.package = config.boot.kernelPackages.zfs_cachyos;
# ... your other configs
}
)
];
};
}
```
If you want to construct your own `linuxPackages` attrset with `linuxKernel.packagesFor (path to your kernel)`, you can directly reference the `zfs-cachyos` attribute in this flake's `packages` / `legayPackages` output, or the `cachyosKernels` overlay:
```nix
{
nixosConfigurations.example = inputs.nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
(
{ pkgs, ... }:
{
nixpkgs.overlays = [ self.overlay ];
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
# ZFS config
boot.supportedFilesystems.zfs = true;
boot.zfs.package = pkgs.cachyosKernels.zfs-cachyos.override {
kernel = config.boot.kernelPackages.kernel;
};
# ... your other configs
}
)
];
};
}
```