diff --git a/flake.nix b/flake.nix index 9e612b4..32097ba 100644 --- a/flake.nix +++ b/flake.nix @@ -22,22 +22,23 @@ { packages = { default = patosPkgs.image; - image = pkgs.callPackage ./image { + image = pkgs.callPackage ./pkgs/image { inherit patosPkgs; inherit version; }; - rootfs = pkgs.callPackage ./rootfs { + rootfs = pkgs.callPackage ./pkgs/rootfs { inherit patosPkgs; inherit version; }; - initrd = pkgs.callPackage ./rootfs/mkinitrd.nix { + initrd = pkgs.callPackage ./pkgs/rootfs/mkinitrd.nix { inherit patosPkgs; inherit version; }; - kernel = pkgs.callPackage ./kernel { }; - glibc = pkgs.callPackage ./glibc { }; - systemd = pkgs.callPackage ./systemd { }; - dbus-broker = pkgs.callPackage ./dbus-broker { }; + kernel = pkgs.callPackage ./pkgs/kernel { }; + glibc = pkgs.callPackage ./pkgs/glibc { }; + kexec = pkgs.callPackage ./pkgs/kexec-tools { }; + systemd = pkgs.callPackage ./pkgs/systemd { }; + dbus-broker = pkgs.callPackage ./pkgs/dbus-broker { }; qemu-uefi-tpm = pkgs.callPackage ./utils/qemu-uefi-tpm.nix { }; }; diff --git a/dbus-broker/default.nix b/pkgs/dbus-broker/default.nix similarity index 100% rename from dbus-broker/default.nix rename to pkgs/dbus-broker/default.nix diff --git a/glibc/default.nix b/pkgs/glibc/default.nix similarity index 100% rename from glibc/default.nix rename to pkgs/glibc/default.nix diff --git a/image/default.nix b/pkgs/image/default.nix similarity index 100% rename from image/default.nix rename to pkgs/image/default.nix diff --git a/image/mkimage.sh b/pkgs/image/mkimage.sh similarity index 100% rename from image/mkimage.sh rename to pkgs/image/mkimage.sh diff --git a/kernel/default.nix b/pkgs/kernel/default.nix similarity index 100% rename from kernel/default.nix rename to pkgs/kernel/default.nix diff --git a/kernel/generic.config b/pkgs/kernel/generic.config similarity index 100% rename from kernel/generic.config rename to pkgs/kernel/generic.config diff --git a/pkgs/kexec-tools/default.nix b/pkgs/kexec-tools/default.nix new file mode 100644 index 0000000..4ba15ba --- /dev/null +++ b/pkgs/kexec-tools/default.nix @@ -0,0 +1,62 @@ +{ + lib, + stdenv, + buildPackages, + fetchFromGitHub, + autoconf, + zlib, +}: + +stdenv.mkDerivation { + pname = "kexec-tools"; + version = "main"; + + src = fetchFromGitHub { + owner = "horms"; + repo = "kexec-tools"; + rev = "a7fcd424c4c80dea5a2fd5ffa274ffeb8129c790"; + hash = "sha256-QKE+KCkueA21zNunTMidP9OuZaw0IG5tFDF4UJITTTQ="; + }; + + dontPatchShebangs = true; + + hardeningDisable = [ + "format" + "pic" + "relro" + "pie" + ]; + + buildCommand = '' + unpackPhase + mkdir -p $out + cd source + ./bootstrap + ./configure --prefix=/ + make DESTDIR=$out install + ''; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + buildInputs = [ + zlib + autoconf + ]; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "http://horms.net/projects/kexec/kexec-tools"; + description = "Tools related to the kexec Linux feature"; + platforms = platforms.linux; + badPlatforms = [ + "microblaze-linux" + "microblazeel-linux" + "riscv64-linux" + "riscv32-linux" + "sparc-linux" + "sparc64-linux" + ]; + license = licenses.gpl2Only; + }; +} diff --git a/rootfs/default.nix b/pkgs/rootfs/default.nix similarity index 94% rename from rootfs/default.nix rename to pkgs/rootfs/default.nix index b206a0c..c6f6fa1 100644 --- a/rootfs/default.nix +++ b/pkgs/rootfs/default.nix @@ -26,6 +26,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { kmodBin = pkgs.kmod.out; libbpf = pkgs.libbpf.out; btrfs = pkgs.btrfs-progs.out; + kexec = patosPkgs.kexec.out; builder = ./mkrootfs.sh; }) diff --git a/rootfs/mkinitrd.nix b/pkgs/rootfs/mkinitrd.nix similarity index 100% rename from rootfs/mkinitrd.nix rename to pkgs/rootfs/mkinitrd.nix diff --git a/rootfs/mkinitrd.sh b/pkgs/rootfs/mkinitrd.sh similarity index 100% rename from rootfs/mkinitrd.sh rename to pkgs/rootfs/mkinitrd.sh diff --git a/rootfs/mkrootfs.sh b/pkgs/rootfs/mkrootfs.sh similarity index 98% rename from rootfs/mkrootfs.sh rename to pkgs/rootfs/mkrootfs.sh index ff19902..fb9efe8 100644 --- a/rootfs/mkrootfs.sh +++ b/pkgs/rootfs/mkrootfs.sh @@ -107,6 +107,9 @@ $out/usr/bin/busybox --list | xargs -I {} ln -sf busybox $out/usr/bin/{} ### install dbus broker cp -r $dbusBroker/* $out/ +### install kexec +cp -Pr ${kexec}/sbin/kexec $out/usr/bin/ + ### install btrfs progs cp -Pr ${btrfs}/bin/* $out/usr/bin/ cp -Pr ${btrfs}/lib/* $out/usr/lib/ diff --git a/systemd/default.nix b/pkgs/systemd/default.nix similarity index 100% rename from systemd/default.nix rename to pkgs/systemd/default.nix