From 3e9decc557f1372afbaf6010d831c3333357bd00 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 18 Apr 2021 11:10:42 +0000 Subject: [PATCH 1/3] netbsd.cksum: init at 8.0 We need the source directory of this package for config(1), so we might as well just package it. --- pkgs/os-specific/bsd/netbsd/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix index 910e5044c59..26d4685cbfc 100644 --- a/pkgs/os-specific/bsd/netbsd/default.nix +++ b/pkgs/os-specific/bsd/netbsd/default.nix @@ -386,6 +386,13 @@ let sha256 = "00a3zmh15pg4vx6hz0kaa5mi8d2b1sj4h512d7p6wbvxq6mznwcn"; NIX_CFLAGS_COMPILE = lib.optional stdenv.isLinux "-DNO_BASE64"; }; + + cksum = mkDerivation { + path = "usr.bin/cksum"; + version = "8.0"; + sha256 = "0327820171djn9dzb2q1arypxw2zsxiixnd1ahy34dagd9cwcphj"; + meta.platforms = lib.platforms.netbsd; + }; ## ## END COMMAND LINE TOOLS ## From 37ac32a351f3ce93bd731e9fbf5f54f1c37829f1 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 18 Apr 2021 11:13:22 +0000 Subject: [PATCH 2/3] netbsd.config: init at 8.0 Needed to build the NetBSD kernel. --- pkgs/os-specific/bsd/netbsd/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix index 26d4685cbfc..c94f00f4782 100644 --- a/pkgs/os-specific/bsd/netbsd/default.nix +++ b/pkgs/os-specific/bsd/netbsd/default.nix @@ -393,6 +393,16 @@ let sha256 = "0327820171djn9dzb2q1arypxw2zsxiixnd1ahy34dagd9cwcphj"; meta.platforms = lib.platforms.netbsd; }; + + config = mkDerivation { + path = "usr.bin/config"; + version = "8.0"; + sha256 = "0piyn8lgdqxwz9wkgc2plzp2xpj93fs4xncri8l0jfas9rv5j2m5"; + NIX_CFLAGS_COMPILE = [ "-DMAKE_BOOTSTRAP" ]; + buildInputs = [ compat ]; + nativeBuildInputs = [ makeMinimal install mandoc byacc flex ]; + extraPaths = [ cksum.src ]; + }; ## ## END COMMAND LINE TOOLS ## From ddcb48cc3d176bae330a3d9fd0dfcc4038f1085b Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 18 Apr 2021 16:53:11 +0000 Subject: [PATCH 3/3] netbsd.sys: actually build the kernel Before, we were only building the headers, firmware, and bootloader. CONFIG could be overridden to use another pre-defined kernel, but there's no way to pass a custom kernel configuration yet. Tested booting the built kernel in a NetBSD VM. --- pkgs/os-specific/bsd/netbsd/default.nix | 29 ++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix index c94f00f4782..112a70917cf 100644 --- a/pkgs/os-specific/bsd/netbsd/default.nix +++ b/pkgs/os-specific/bsd/netbsd/default.nix @@ -433,12 +433,35 @@ let path = "sys"; version = "8.0"; sha256 = "123ilg8fqmp69bw6bs6nh98fpi1v2n9lamrzar61p27ji6sj7g0w"; + + CONFIG = "GENERIC"; + propagatedBuildInputs = [ include ]; - nativeBuildInputs = [ makeMinimal install tsort lorder statHook uudecode ]; + nativeBuildInputs = [ + makeMinimal install tsort lorder statHook uudecode config genassym + ]; + + postConfigure = '' + pushd arch/$MACHINE/conf + config $CONFIG + popd + ''; + + makeFlags = [ "FIRMWAREDIR=$(out)/libdata/firmware" ]; + hardeningDisable = [ "pic" ]; + MKKMOD = "no"; + NIX_CFLAGS_COMPILE = [ "-Wa,--no-warn" ]; + + postBuild = '' + make -C arch/$MACHINE/compile/$CONFIG $makeFlags + ''; + + postInstall = '' + cp arch/$MACHINE/compile/$CONFIG/netbsd $out + ''; + meta.platforms = lib.platforms.netbsd; extraPaths = [ common.src ]; - MKKMOD = "no"; - makeFlags = [ "FIRMWAREDIR=$(out)/libdata/firmware" ]; }; headers = symlinkJoin {