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"; nvidia-patch.url = "github:icewind1991/nvidia-patch-nixos";
``` ```
- Apply the overlay:
```
nixpkgs.overlays = [inputs.nvidia-patch.overlay];
```
- Apply the patch to your nvidia package - Apply the patch to your nvidia package
```nix ```nix
{ {
pkgs,
config, config,
inputs, inputs,
system, 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 hash = "sha256-+BkDUfVqqYMAG62OarNPJiNfghvHpOhhMlS5H+SV1dQ="; # sha256sum for https://github.com/keylase/nvidia-patch at the specified revision
# create patch functions for the specified revision # create patch functions for the specified revision
patchFbc = driverPackage: (inputs.nvidia-patch.patchFbc.${system} driverPackage rev hash); nvidia-patch = pkgs.nvidia-patch rev hash;
patchNvenc = driverPackage: (inputs.nvidia-patch.patchNvenc.${system} driverPackage rev hash);
# nvidia package to patch # nvidia package to patch
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
in { 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 { devShell = pkgs.mkShell {
nativeBuildInputs = with pkgs; [jq patch]; nativeBuildInputs = with pkgs; [jq patch];
}; };
}) // {
extract = pkgs.callPackage ./extract.nix {}; overlay = final: prev: {
createPatch = prefix: driverPackage: rev: hash: driverPackage.overrideAttrs ({ nvidia-patch = rev: hash: let
version, inherit (nixpkgs.lib) importJSON;
preFixup ? "", extract = final.callPackage ./extract.nix {};
... jsons = extract rev hash;
}: let createPatch = prefix: rev: hash: driverPackage: driverPackage.overrideAttrs ({
inherit (nixpkgs.lib) importJSON; version,
jsons = extract rev hash; preFixup ? "",
patchList = importJSON "${jsons}/${prefix}patch-list.json"; ...
objectList = importJSON "${jsons}/${prefix}object-list.json"; }: let
object = objectList.${version}; patchList = importJSON "${jsons}/${prefix}patch-list.json";
patch = patchList.${version}; objectList = importJSON "${jsons}/${prefix}object-list.json";
in { patch = patchList.${version};
preFixup = object = objectList.${version};
preFixup in {
+ '' preFixup =
sed -i '${patch}' $out/lib/${object}.${version} preFixup
''; + ''
}); sed -i '${patch}' $out/lib/${object}.${version}
patchNvenc = createPatch ""; '';
patchFbc = createPatch "fbc-"; });
}); in {
patch-nvenc = createPatch "" rev hash;
patch-fbc = createPatch "fbc-" rev hash;
};
};
};
} }