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


Reply via email to