Compile custom Linux kernel for NixOS

I am trying to compile a custom Linux kernel for use in NixOS. My main question is what’s the easiest and quickest way to do this. Since I am relying on an outdated upstream and want to tightly control the compilation, I don’t want to use the kernels that nixpkgs brings.

I was once told that I should use pkgs.linuxManualConfig to generate the kernel in Nix for use in a NixOS configuration, but this function seems generally broken, even compiling the vanilla 5.14 kernel without any config

pkgs.linuxManualConfig rec {
    version = "5.14";
    src = fetchTarball {
      url = "${version}.tar.xz";
      sha256 = "sha256:15c91flxhankd62xwv02azjxy4hqll4s3jsl5kq8vbhjrz57lcl0";
    configfile = ./linux-config-empty;
    stdenv = pkgs.gcc10Stdenv;  # doesn't seem to set the GCC used for compilation

fails with errors like

subcmd-util.h:58:31: error: pointer 'ptr' may be used after 'realloc' [8;;;;]
   58 |                         ret = realloc(ptr, 1);
1 Like

A dirty hack that enables to compile older code with newer GCC versions: add make flag WERROR=0 to the set passed to linuxManualConfig

extraMakeFlags = ["WERROR=0"];