switch to overlay

This commit is contained in:
Robin Appelman 2023-01-22 14:57:50 +01:00
commit a4e8e6f4e7
2 changed files with 36 additions and 26 deletions

View file

@ -9,9 +9,15 @@ nvidia-patch flake for NixOS
nvidia-patch.url = "github:icewind1991/nvidia-patch-nixos";
```
- Apply the overlay:
```
nixpkgs.overlays = [inputs.nvidia-patch.overlay];
```
- Apply the patch to your nvidia package
```nix
{
pkgs,
config,
inputs,
system,
@ -21,13 +27,12 @@ nvidia-patch flake for NixOS
hash = "sha256-+BkDUfVqqYMAG62OarNPJiNfghvHpOhhMlS5H+SV1dQ="; # sha256sum for https://github.com/keylase/nvidia-patch at the specified revision
# create patch functions for the specified revision
patchFbc = driverPackage: (inputs.nvidia-patch.patchFbc.${system} driverPackage rev hash);
patchNvenc = driverPackage: (inputs.nvidia-patch.patchNvenc.${system} driverPackage rev hash);
nvidia-patch = pkgs.nvidia-patch rev hash;
# nvidia package to patch
package = config.boot.kernelPackages.nvidiaPackages.stable;
in {
hardware.nvidia.package = patchNvenc (patchFbc package);
hardware.nvidia.package = nvidia-patch.patch-nvenc (nvidia-patch.patch-fbc package);
}
```

View file

@ -20,27 +20,32 @@
devShell = pkgs.mkShell {
nativeBuildInputs = with pkgs; [jq patch];
};
extract = pkgs.callPackage ./extract.nix {};
createPatch = prefix: driverPackage: rev: hash: driverPackage.overrideAttrs ({
version,
preFixup ? "",
...
}: let
inherit (nixpkgs.lib) importJSON;
jsons = extract rev hash;
patchList = importJSON "${jsons}/${prefix}patch-list.json";
objectList = importJSON "${jsons}/${prefix}object-list.json";
object = objectList.${version};
patch = patchList.${version};
in {
preFixup =
preFixup
+ ''
sed -i '${patch}' $out/lib/${object}.${version}
'';
});
patchNvenc = createPatch "";
patchFbc = createPatch "fbc-";
});
}) // {
overlay = final: prev: {
nvidia-patch = rev: hash: let
inherit (nixpkgs.lib) importJSON;
extract = final.callPackage ./extract.nix {};
jsons = extract rev hash;
createPatch = prefix: rev: hash: driverPackage: driverPackage.overrideAttrs ({
version,
preFixup ? "",
...
}: let
patchList = importJSON "${jsons}/${prefix}patch-list.json";
objectList = importJSON "${jsons}/${prefix}object-list.json";
patch = patchList.${version};
object = objectList.${version};
in {
preFixup =
preFixup
+ ''
sed -i '${patch}' $out/lib/${object}.${version}
'';
});
in {
patch-nvenc = createPatch "" rev hash;
patch-fbc = createPatch "fbc-" rev hash;
};
};
};
}