From 1813aaf111ab4db2b59b7b7fddf7bc5a2eb1e645 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 24 Dec 2023 15:01:41 +0000 Subject: [PATCH] blivet: init at 3.10.1 --- .../python-modules/blivet/default.nix | 109 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 111 insertions(+) create mode 100644 pkgs/development/python-modules/blivet/default.nix diff --git a/pkgs/development/python-modules/blivet/default.nix b/pkgs/development/python-modules/blivet/default.nix new file mode 100644 index 000000000000..e3ca43c8cd22 --- /dev/null +++ b/pkgs/development/python-modules/blivet/default.nix @@ -0,0 +1,109 @@ +{ + lib, + pkgs, + python, + buildPythonPackage, + fetchFromGitHub, + pygobject3, + libblockdev, + bytesize, + pyudev, + dbus-python, + util-linux, + kmod, + libndctl, + nvme-cli, + dosfstools, + e2fsprogs, + hfsprogs, + xfsprogs, + f2fs-tools, + ntfs3g, + btrfs-progs, + reiserfsprogs, + mdadm, + lvm2, + gfs2-utils, + cryptsetup, + multipath-tools, + dracut, + stratisd, +}: + +let + libblockdevPython = (libblockdev.override { python3 = python; }).python; +in +buildPythonPackage rec { + pname = "blivet"; + version = "3.10.1"; + format = "setuptools"; + + src = fetchFromGitHub { + owner = "storaged-project"; + repo = "blivet"; + rev = "blivet-${version}"; + hash = "sha256-Ooc63mf03ZO7zxm8s/Tm8jSQg5LWyKnHAqbyvn1UHB8="; + }; + + postPatch = '' + find blivet -name '*.py' | while IFS= read -r i ; do + substituteInPlace "$i" \ + --replace \ + 'gi.require_version("BlockDev",' \ + 'import gi.repository + gi.require_version("GIRepository", "2.0") + from gi.repository import GIRepository + GIRepository.Repository.prepend_search_path("${libblockdev}/lib/girepository-1.0") + gi.require_version("BlockDev",' + done + ''; + + propagatedBuildInputs = [ + pygobject3 + libblockdevPython + bytesize + pyudev + dbus-python + util-linux + kmod + libndctl + nvme-cli + pkgs.systemd + dosfstools + e2fsprogs + hfsprogs + xfsprogs + f2fs-tools + ntfs3g + btrfs-progs + reiserfsprogs + mdadm + lvm2 + gfs2-utils + cryptsetup + multipath-tools + dracut + stratisd + ]; + + pythonImportsCheck = [ "blivet" ]; + + # Even unit tests require a system D-Bus. + # TODO: Write a NixOS VM test? + doCheck = false; + + # Fails with: TypeError: don't know how to make test from: + # + dontUseSetuptoolsCheck = true; + + meta = { + description = "Python module for system storage configuration"; + homepage = "https://github.com/storaged-project/blivet"; + license = [ + lib.licenses.gpl2Plus + lib.licenses.lgpl2Plus + ]; + maintainers = with lib.maintainers; [ cybershadow ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index dadaea76efec..84ce5b5e84a8 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1686,6 +1686,8 @@ self: super: with self; { blis = callPackage ../development/python-modules/blis { }; + blivet = callPackage ../development/python-modules/blivet { }; + blobfile = callPackage ../development/python-modules/blobfile { }; blockchain = callPackage ../development/python-modules/blockchain { };