{ stdenv, fetchurl, fetchgit, apparmor }: let makeTuxonicePatch = { version, kernelVersion, sha256, url ? "http://tuxonice.nigelcunningham.com.au/downloads/all/tuxonice-for-linux-${kernelVersion}-${version}.patch.bz2" }: { name = "tuxonice-${kernelVersion}"; patch = stdenv.mkDerivation { name = "tuxonice-${version}-for-${kernelVersion}.patch"; src = fetchurl { inherit url sha256; }; phases = [ "installPhase" ]; installPhase = '' source $stdenv/setup bunzip2 -c $src > $out ''; }; }; grsecPatch = { grversion ? "3.0", kversion, revision, branch, sha256 }: { name = "grsecurity-${grversion}-${kversion}"; inherit grversion kversion revision; patch = fetchurl { url = "http://grsecurity.net/${branch}/grsecurity-${grversion}-${kversion}-${revision}.patch"; inherit sha256; }; features.grsecurity = true; }; in rec { no_xsave = { name = "no-xsave"; patch = ./no-xsave.patch; features.noXsave = true; }; mips_fpureg_emu = { name = "mips-fpureg-emulation"; patch = ./mips-fpureg-emulation.patch; }; mips_fpu_sigill = { name = "mips-fpu-sigill"; patch = ./mips-fpu-sigill.patch; }; mips_ext3_n32 = { name = "mips-ext3-n32"; patch = ./mips-ext3-n32.patch; }; tuxonice_3_10 = makeTuxonicePatch { version = "2013-11-07"; kernelVersion = "3.10.18"; sha256 = "00b1rqgd4yr206dxp4mcymr56ymbjcjfa4m82pxw73khj032qw3j"; }; grsecurity_stable = grsecPatch { kversion = "3.2.60"; revision = "201406191345"; branch = "stable"; sha256 = "1zb2qxh2qhsrqi4gnslr3b6342ni9c6y20gb8jgh5plhnk5szx7v"; }; grsecurity_vserver = grsecPatch { kversion = "3.2.60"; revision = "vs2.3.2.16-201406191346"; branch = "vserver"; sha256 = "0qlbqpnh5wkgk8phh67bl4a25rb8n1k1hlq0kmcrnz6c3kflrsdz"; }; grsecurity_unstable = grsecPatch { kversion = "3.14.8"; revision = "201406191347"; branch = "test"; sha256 = "01kl89vhr3mrp7g4ypcf9xrv0i4f9d4sdq4a11qhwyf1w48qr7da"; }; grsec_fix_path = { name = "grsec-fix-path"; patch = ./grsec-path.patch; }; }