This way to get an mkosi that works for building Debian stuff from
nixpkgs is a bit cursed but it mostly works.
---
flake.nix | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/flake.nix b/flake.nix
index 8b38ba19..23e14946 100644
--- a/flake.nix
+++ b/flake.nix
@@ -74,6 +74,39 @@
rev = self.shortRev or self.dirtyShortRev or (lib.substring 0 8
self.lastModifiedDate);
version = "${cargoToml.package.version}+${rev}";
+
+ # this is somewhat insane
+ mkosiFhs =
+ let
+ keyringDeb = pkgs.fetchurl {
+ url =
"https://deb.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2025.1_all.deb";
+ hash = "sha256-nqd3jkQxRMpJBmhzeoqyLdPnSLuZ6AXiLsBVq+s8f6w=";
+ };
+ debian-archive-keyring =
+ pkgs.runCommandNoCCLocal "debian-archive-keyring"
+ {
+ nativeBuildInputs = with pkgs; [ binutils ];
+ }
+ ''
+ ar vx ${keyringDeb}
+ mkdir "$out"
+ tar -xf data.tar.xz --transform "s|/usr||" -C "$out"
+ '';
+ in
+ pkgs.buildFHSEnv {
+ name = "mkosi";
+ runScript = "mkosi";
+ targetPkgs =
+ pkgs: with pkgs; [
+ apt
+ debian-archive-keyring
+ dpkg
+ e2fsprogs
+ gnupg
+ jq
+ mkosi
+ ];
+ };
in
{
packages =
@@ -143,6 +176,7 @@
cargo-audit
cargo-outdated
clang-tools
+ mkosiFhs
(rust-bin.stable.latest.minimal.override {
extensions = [
"rust-analyzer"
--
2.51.0