Skip to content

Commit

Permalink
blivet-gui: init at 2.5.0 (#276662)
Browse files Browse the repository at this point in the history
  • Loading branch information
Aleksanaa authored Nov 8, 2024
2 parents efab9a3 + 052b265 commit a87d070
Show file tree
Hide file tree
Showing 5 changed files with 203 additions and 3 deletions.
73 changes: 73 additions & 0 deletions pkgs/by-name/bl/blivet-gui/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Notes for using this package outside of NixOS:
# 1. --pure cannot be used (as pkexec will be used from the path,
# and we can't use nixpkgs polkit due to lack of setuid bit)
# 2. You must prefix the blivet-gui command with "SHELL=/bin/bash"
# (otherwise your system polkit will reject the SHEL Lfrom nixpkgs).

{
lib,
python3,
fetchFromGitHub,
gtk3,
util-linux,
gobject-introspection,
adwaita-icon-theme,
hicolor-icon-theme,
wrapGAppsHook3,
pkexecPath ? "pkexec",
testers,
blivet-gui,
}:

python3.pkgs.buildPythonApplication rec {
pname = "blivet-gui";
version = "2.5.0";
format = "setuptools";

src = fetchFromGitHub {
owner = "storaged-project";
repo = "blivet-gui";
rev = version;
hash = "sha256-fKd2Vj8clZ6Q7bZipfN5umyMW2rBXMUnpAuDE70p67U=";
};

postPatch = ''
substituteInPlace blivetgui/gui_utils.py --replace-fail /usr/share $out/share
substituteInPlace blivet-gui --replace-fail "pkexec blivet-gui-daemon" "pkexec $out/bin/blivet-gui-daemon"
substituteInPlace blivet-gui --replace-fail "pkexec" "${pkexecPath}"
'';

nativeBuildInputs = [
util-linux
gobject-introspection
wrapGAppsHook3
];

buildInputs = [ gtk3 ];

dependencies = [
python3.pkgs.blivet
python3.pkgs.pyparted
python3.pkgs.pid
];

dontWrapGApps = true;

preFixup = ''
makeWrapperArgs+=(
''${gappsWrapperArgs[@]}
--prefix XDG_DATA_DIRS : ${adwaita-icon-theme}/share
)
'';

passthru.tests.version = testers.testVersion { package = blivet-gui; };

meta = {
description = "GUI tool for storage configuration using blivet library";
homepage = "https://fedoraproject.org/wiki/Blivet";
license = lib.licenses.gpl2Plus;
mainProgram = "blivet-gui";
maintainers = with lib.maintainers; [ cybershadow ];
platforms = lib.platforms.linux;
};
}
12 changes: 10 additions & 2 deletions pkgs/by-name/li/libbytesize/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
mpfr,
pcre2,
pkg-config,
python3,
python3Packages,
stdenv,
}:

Expand Down Expand Up @@ -41,7 +41,8 @@ stdenv.mkDerivation (finalAttrs: {
gtk-doc
libxslt
pkg-config
python3
python3Packages.python
python3Packages.pythonImportsCheckHook
];

buildInputs = [
Expand All @@ -52,6 +53,13 @@ stdenv.mkDerivation (finalAttrs: {

strictDeps = true;

postInstall = ''
substituteInPlace $out/${python3Packages.python.sitePackages}/bytesize/bytesize.py \
--replace-fail 'CDLL("libbytesize.so.1")' "CDLL('$out/lib/libbytesize.so.1')"
'';

pythonImportsCheck = [ "bytesize" ];

meta = {
homepage = "https://github.com/storaged-project/libbytesize";
description = "Tiny library providing a C 'class' for working with arbitrary big sizes in bytes";
Expand Down
8 changes: 7 additions & 1 deletion pkgs/development/libraries/libblockdev/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,18 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-WCMedMkaMMhZbB3iJu3c+CTT3AvOjzOSYP45J+NQEDQ=";
};

outputs = [ "out" "dev" "devdoc" ];
outputs = [ "out" "dev" "devdoc" "python" ];

postPatch = ''
patchShebangs scripts
substituteInPlace src/python/gi/overrides/Makefile.am \
--replace-fail ''\'''${exec_prefix}' '@PYTHON_EXEC_PREFIX@'
'';

configureFlags = [
"--with-python_prefix=${placeholder "python"}"
];

nativeBuildInputs = [
autoconf-archive
autoreconfHook
Expand Down
109 changes: 109 additions & 0 deletions pkgs/development/python-modules/blivet/default.nix
Original file line number Diff line number Diff line change
@@ -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:
# <blivet.static_data.luks_data.LUKS_Data object at 0x7ffff4a34b90>
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;
};
}
4 changes: 4 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -1711,6 +1711,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 { };
Expand Down Expand Up @@ -1950,6 +1952,8 @@ self: super: with self; {

bytecode = callPackage ../development/python-modules/bytecode { };

bytesize = toPythonModule (pkgs.libbytesize.override { python3Packages = self; });

bytewax = callPackage ../development/python-modules/bytewax { };

bz2file = callPackage ../development/python-modules/bz2file { };
Expand Down

0 comments on commit a87d070

Please sign in to comment.