52 lines
1.2 KiB
Nix
52 lines
1.2 KiB
Nix
{
|
|
description = "bpfbox";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "nixpkgs/nixos-25.05";
|
|
};
|
|
|
|
outputs = { self, nixpkgs }:
|
|
let
|
|
pkgs = import nixpkgs { system = "x86_64-linux"; };
|
|
lib = pkgs.lib;
|
|
init = pkgs.buildGoModule {
|
|
name = "init";
|
|
|
|
vendorHash = null;
|
|
|
|
src = ./init;
|
|
};
|
|
initrdEnv = pkgs.buildEnv {
|
|
name = "initrd-env";
|
|
paths = with pkgs; [
|
|
pkgsStatic.busybox
|
|
bpftrace
|
|
init
|
|
];
|
|
pathsToLink = [
|
|
"/bin"
|
|
];
|
|
};
|
|
kernel = pkgs.linuxPackages.kernel;
|
|
initrd = pkgs.makeInitrdNG {
|
|
name = "initramfs";
|
|
contents = [
|
|
{ source = "${initrdEnv}/bin"; target = "/bin"; }
|
|
{ source = ./flag.txt; target = "/flag.txt"; }
|
|
{ source = "${initrdEnv}/bin/init"; target = "/init"; }
|
|
];
|
|
};
|
|
in
|
|
{
|
|
packages.x86_64-linux.default = pkgs.stdenvNoCC.mkDerivation {
|
|
name = "bpfbox";
|
|
phases = [ "installPhase" ];
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp ${initrd}/initrd.gz $out/
|
|
cp ${kernel}/bzImage $out/
|
|
'';
|
|
};
|
|
};
|
|
}
|