From f008df3863548efaf2dce688fef9a314b9f3d744 Mon Sep 17 00:00:00 2001 From: Paul Meyer <49727155+katexochen@users.noreply.github.com> Date: Wed, 16 Aug 2023 16:48:04 +0200 Subject: [PATCH] mkosi: init at 15.2-pre Co-authored-by: Malte Poll Co-authored-by: Jonas Heinrich Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com> --- pkgs/tools/virtualization/mkosi/default.nix | 69 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 71 insertions(+) create mode 100644 pkgs/tools/virtualization/mkosi/default.nix diff --git a/pkgs/tools/virtualization/mkosi/default.nix b/pkgs/tools/virtualization/mkosi/default.nix new file mode 100644 index 000000000000..345e65d04881 --- /dev/null +++ b/pkgs/tools/virtualization/mkosi/default.nix @@ -0,0 +1,69 @@ +{ lib +, fetchFromGitHub +, setuptools +, buildPythonApplication +, pytestCheckHook +, bubblewrap +, systemd +, stdenv +}: +let + # For systemd features used by mkosi, see + # https://github.com/systemd/mkosi/blob/19bb5e274d9a9c23891905c4bcbb8f68955a701d/action.yaml#L64-L72 + systemdForMkosi = systemd.override { + # Will be added in #243242 + # withRepart = true; + # withBootloader = true; + withEfi = true; + withUkify = true; + }; +in +buildPythonApplication rec { + pname = "mkosi"; + version = "15.2-pre"; # 15.1 is the latest release, but we require a newer commit + format = "pyproject"; + + src = fetchFromGitHub { + owner = "systemd"; + repo = "mkosi"; + # Fix from the commit is needed to run on NixOS, + # see https://github.com/systemd/mkosi/issues/1792 + rev = "ca9673cbcbd9f293e5566cec4a1ba14bbcd075b8"; + hash = "sha256-y5gG/g33HBpH1pTXfjHae25bc5p/BvlCm9QxOIYtcA8="; + }; + + # Fix ctypes finding library + # https://github.com/NixOS/nixpkgs/issues/7307 + patchPhase = lib.optionalString stdenv.isLinux '' + substituteInPlace mkosi/run.py --replace \ + 'ctypes.util.find_library("c")' "'${stdenv.cc.libc}/lib/libc.so.6'" + ''; + + nativeBuildInputs = [ + setuptools + ]; + + + propagatedBuildInputs = [ + systemdForMkosi + bubblewrap + ]; + + postInstall = '' + wrapProgram $out/bin/mkosi \ + --prefix PYTHONPATH : "$PYTHONPATH" + ''; + + checkInputs = [ + pytestCheckHook + ]; + + meta = with lib; { + description = "Build legacy-free OS images"; + homepage = "https://github.com/systemd/mkosi"; + license = licenses.lgpl21Only; + mainProgram = "mkosi"; + maintainers = with maintainers; [ malt3 katexochen ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f9240c4306ca..c573913ef5a6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1846,6 +1846,8 @@ with pkgs; mgmt = callPackage ../applications/system/mgmt { }; + mkosi = python3Packages.callPackage ../tools/virtualization/mkosi { inherit systemd; }; + monica = callPackage ../servers/web-apps/monica { }; mprocs = callPackage ../tools/misc/mprocs { };