diff --git a/README.md b/README.md index c586e6d..6c82d25 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,19 @@ pkgs.fetchFromSteam { } ``` +### [`fetchb4`](./lib/fetchb4) + +A fetcher that uses `b4` to download patchsets from so that they can be applied in `boot.kernelPatches` + +Usage: + +```nix +pkgs.fetchb4 { + msgid = "2024042069.1337-example@example"; + hash = pkgs.lib.fakeHash; +} +``` + ### [`mkNginxServer`](./lib/dev-nginx) creates a shell script that launches nginx in the foreground as the current user. the nginx is diff --git a/default.nix b/default.nix index 49798ba..02d6a1a 100644 --- a/default.nix +++ b/default.nix @@ -8,6 +8,7 @@ nixpkgs.overlays = [ (final: prev: { fetchFromSteam = prev.callPackage ./lib/fetchsteam {}; + fetchb4 = prev.callPackage ./lib/fetchb4 {}; gitSource = prev.callPackage ./lib/git-source {}; diff --git a/lib/fetchb4/builder.sh b/lib/fetchb4/builder.sh new file mode 100644 index 0000000..86f5936 --- /dev/null +++ b/lib/fetchb4/builder.sh @@ -0,0 +1,6 @@ +if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi +source $stdenv/setup + +echo "Downloading kernel patch $msgid into $out" +export HOME="/tmp" +b4 am -C -o- "$msgid" > "$out" diff --git a/lib/fetchb4/default.nix b/lib/fetchb4/default.nix new file mode 100644 index 0000000..2956125 --- /dev/null +++ b/lib/fetchb4/default.nix @@ -0,0 +1,15 @@ +{ lib, stdenvNoCC, b4, git, cacert }: + +{ msgid, hash }: stdenvNoCC.mkDerivation { + name = "patch-${msgid}"; + builder = ./builder.sh; + + inherit msgid; + + nativeBuildInputs = [ b4 git cacert ]; + SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + + outputHashMode = "recursive"; + outputHash = hash; + preferLocalBuild = true; +}