summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Heinrich <onny@project-insanity.org>2022-09-16 13:40:17 +0200
committerGitHub <noreply@github.com>2022-09-16 13:40:17 +0200
commit22c17bd5f3ec1f2c49f9afee4c7f9d99fcd45827 (patch)
tree2a9a9b18769365f2beb93085810d0d082803fb15
parent594b981f7019ffd5a34b278eabe5f732abb96094 (diff)
parent6ec928d73d0580692e75c54c79a0f5a69c1edcf2 (diff)
Merge pull request #186940 from NickCao/stratis-cli
stratis-cli: init at 3.2.0
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/tasks/stratis.nix18
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/stratis/default.nix7
-rw-r--r--nixos/tests/stratis/simple.nix39
-rw-r--r--pkgs/development/python-modules/dbus-python-client-gen/default.nix34
-rw-r--r--pkgs/development/python-modules/dbus-signature-pyparsing/default.nix34
-rw-r--r--pkgs/development/python-modules/hs-dbus-signature/default.nix28
-rw-r--r--pkgs/development/python-modules/into-dbus-python/default.nix38
-rw-r--r--pkgs/tools/filesystems/stratis-cli/default.nix36
-rw-r--r--pkgs/tools/filesystems/stratisd/default.nix3
-rw-r--r--pkgs/top-level/all-packages.nix2
-rw-r--r--pkgs/top-level/python-packages.nix8
13 files changed, 249 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 6fd0bacc5f57..d5ab997bda38 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -1266,6 +1266,7 @@
./tasks/network-interfaces-scripted.nix
./tasks/scsi-link-power-management.nix
./tasks/snapraid.nix
+ ./tasks/stratis.nix
./tasks/swraid.nix
./tasks/trackpoint.nix
./tasks/powertop.nix
diff --git a/nixos/modules/tasks/stratis.nix b/nixos/modules/tasks/stratis.nix
new file mode 100644
index 000000000000..9a85fe23f248
--- /dev/null
+++ b/nixos/modules/tasks/stratis.nix
@@ -0,0 +1,18 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.services.stratis;
+in
+{
+ options.services.stratis = {
+ enable = lib.mkEnableOption (lib.mdDoc "Stratis Storage - Easy to use local storage management for Linux");
+ };
+
+ config = lib.mkIf cfg.enable {
+ environment.systemPackages = [ pkgs.stratis-cli ];
+ systemd.packages = [ pkgs.stratisd ];
+ services.dbus.packages = [ pkgs.stratisd ];
+ services.udev.packages = [ pkgs.stratisd ];
+ systemd.services.stratisd.wantedBy = [ "sysinit.target" ];
+ };
+}
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 2464ec4d404b..e0121fe6b6b8 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -533,6 +533,7 @@ in {
sssd-ldap = handleTestOn ["x86_64-linux"] ./sssd-ldap.nix {};
starship = handleTest ./starship.nix {};
step-ca = handleTestOn ["x86_64-linux"] ./step-ca.nix {};
+ stratis = handleTest ./stratis {};
strongswan-swanctl = handleTest ./strongswan-swanctl.nix {};
stunnel = handleTest ./stunnel.nix {};
sudo = handleTest ./sudo.nix {};
diff --git a/nixos/tests/stratis/default.nix b/nixos/tests/stratis/default.nix
new file mode 100644
index 000000000000..6964852e30a0
--- /dev/null
+++ b/nixos/tests/stratis/default.nix
@@ -0,0 +1,7 @@
+{ system ? builtins.currentSystem
+, pkgs ? import ../../.. { inherit system; }
+}:
+
+{
+ simple = import ./simple.nix { inherit system pkgs; };
+}
diff --git a/nixos/tests/stratis/simple.nix b/nixos/tests/stratis/simple.nix
new file mode 100644
index 000000000000..7357d71fc52b
--- /dev/null
+++ b/nixos/tests/stratis/simple.nix
@@ -0,0 +1,39 @@
+import ../make-test-python.nix ({ pkgs, ... }:
+ {
+ name = "stratis";
+
+ meta = with pkgs.lib.maintainers; {
+ maintainers = [ nickcao ];
+ };
+
+ nodes.machine = { pkgs, ... }: {
+ services.stratis.enable = true;
+ virtualisation.emptyDiskImages = [ 1024 1024 1024 1024 ];
+ };
+
+ testScript = ''
+ machine.wait_for_unit("stratisd")
+ # test pool creation
+ machine.succeed("stratis pool create testpool /dev/vdb")
+ machine.succeed("stratis pool add-data testpool /dev/vdc")
+ machine.succeed("stratis pool init-cache testpool /dev/vdd")
+ machine.succeed("stratis pool add-cache testpool /dev/vde")
+ # test filesystem creation and rename
+ machine.succeed("stratis filesystem create testpool testfs0")
+ machine.succeed("stratis filesystem rename testpool testfs0 testfs1")
+ # test snapshot
+ machine.succeed("mkdir -p /mnt/testfs1 /mnt/testfs2")
+ machine.wait_for_file("/dev/stratis/testpool/testfs1")
+ machine.succeed("mount /dev/stratis/testpool/testfs1 /mnt/testfs1")
+ machine.succeed("echo test0 > /mnt/testfs1/test0")
+ machine.succeed("echo test1 > /mnt/testfs1/test1")
+ machine.succeed("stratis filesystem snapshot testpool testfs1 testfs2")
+ machine.succeed("echo test2 > /mnt/testfs1/test1")
+ machine.wait_for_file("/dev/stratis/testpool/testfs2")
+ machine.succeed("mount /dev/stratis/testpool/testfs2 /mnt/testfs2")
+ assert "test0" in machine.succeed("cat /mnt/testfs1/test0")
+ assert "test0" in machine.succeed("cat /mnt/testfs2/test0")
+ assert "test2" in machine.succeed("cat /mnt/testfs1/test1")
+ assert "test1" in machine.succeed("cat /mnt/testfs2/test1")
+ '';
+ })
diff --git a/pkgs/development/python-modules/dbus-python-client-gen/default.nix b/pkgs/development/python-modules/dbus-python-client-gen/default.nix
new file mode 100644
index 000000000000..100144c152e4
--- /dev/null
+++ b/pkgs/development/python-modules/dbus-python-client-gen/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, into-dbus-python
+, dbus-python
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+ pname = "dbus-python-client-gen";
+ version = "0.8";
+
+ src = fetchFromGitHub {
+ owner = "stratis-storage";
+ repo = pname;
+ rev = "v${version}";
+ hash = "sha256-nSzxT65WHBVct5pGHmIAHJXftd0tKZeK/argN+V9xcs=";
+ };
+
+ propagatedBuildInputs = [
+ into-dbus-python
+ dbus-python
+ ];
+ checkInputs = [
+ pytestCheckHook
+ ];
+
+ meta = with lib; {
+ description = "A Python library for generating dbus-python client code";
+ homepage = "https://github.com/stratis-storage/dbus-python-client-gen";
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ nickcao ];
+ };
+}
diff --git a/pkgs/development/python-modules/dbus-signature-pyparsing/default.nix b/pkgs/development/python-modules/dbus-signature-pyparsing/default.nix
new file mode 100644
index 000000000000..659fcc3ed59d
--- /dev/null
+++ b/pkgs/development/python-modules/dbus-signature-pyparsing/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pyparsing
+, pytestCheckHook
+, hypothesis
+, hs-dbus-signature
+}:
+
+buildPythonPackage rec {
+ pname = "dbus-signature-pyparsing";
+ version = "0.04";
+
+ src = fetchFromGitHub {
+ owner = "stratis-storage";
+ repo = pname;
+ rev = "v${version}";
+ hash = "sha256-IXyepfq7pLTRkTolKWsKGrYDoxukVC9JTrxS9xV7s2I=";
+ };
+
+ propagatedBuildInputs = [ pyparsing ];
+ checkInputs = [
+ pytestCheckHook
+ hypothesis
+ hs-dbus-signature
+ ];
+
+ meta = with lib; {
+ description = "A Parser for a D-Bus Signature";
+ homepage = "https://github.com/stratis-storage/dbus-signature-pyparsing";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ nickcao ];
+ };
+}
diff --git a/pkgs/development/python-modules/hs-dbus-signature/default.nix b/pkgs/development/python-modules/hs-dbus-signature/default.nix
new file mode 100644
index 000000000000..7d071b75c3b1
--- /dev/null
+++ b/pkgs/development/python-modules/hs-dbus-signature/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, hypothesis
+}:
+
+buildPythonPackage rec {
+ pname = "hs-dbus-signature";
+ version = "0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ hash = "sha256-NNnTcSX+K8zU+sj1QBd13h7aEXN9VqltJMNWCuhgZ6I=";
+ };
+
+ checkInputs = [
+ pytestCheckHook
+ hypothesis
+ ];
+
+ meta = with lib; {
+ description = "A Hypothesis Strategy for Generating Arbitrary DBus Signatures";
+ homepage = "https://github.com/stratis-storage/hs-dbus-signature";
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ nickcao ];
+ };
+}
diff --git a/pkgs/development/python-modules/into-dbus-python/default.nix b/pkgs/development/python-modules/into-dbus-python/default.nix
new file mode 100644
index 000000000000..1d893cd69692
--- /dev/null
+++ b/pkgs/development/python-modules/into-dbus-python/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, dbus-signature-pyparsing
+, dbus-python
+, pytestCheckHook
+, hypothesis
+, hs-dbus-signature
+}:
+
+buildPythonPackage rec {
+ pname = "into-dbus-python";
+ version = "0.08";
+
+ src = fetchFromGitHub {
+ owner = "stratis-storage";
+ repo = pname;
+ rev = "v${version}";
+ hash = "sha256-Z8e6oAvRMIisMjG4HcS5jSH1znGVc7pGpMITo5fXYVs=";
+ };
+
+ propagatedBuildInputs = [
+ dbus-signature-pyparsing
+ dbus-python
+ ];
+ checkInputs = [
+ pytestCheckHook
+ hypothesis
+ hs-dbus-signature
+ ];
+
+ meta = with lib; {
+ description = "A transformer to dbus-python types";
+ homepage = "https://github.com/stratis-storage/into-dbus-python";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ nickcao ];
+ };
+}
diff --git a/pkgs/tools/filesystems/stratis-cli/default.nix b/pkgs/tools/filesystems/stratis-cli/default.nix
new file mode 100644
index 000000000000..813ecfa22c6d
--- /dev/null
+++ b/pkgs/tools/filesystems/stratis-cli/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, python3Packages
+, fetchFromGitHub
+, nixosTests
+}:
+
+python3Packages.buildPythonApplication rec {
+ pname = "stratis-cli";
+ version = "3.2.0";
+
+ src = fetchFromGitHub {
+ owner = "stratis-storage";
+ repo = pname;
+ rev = "v${version}";
+ hash = "sha256-JQXTzvm4l/pl2T4djZ3HEdDQJdFE+I9doe8Iv5q34kw=";
+ };
+
+ propagatedBuildInputs = with python3Packages; [
+ psutil
+ python-dateutil
+ wcwidth
+ justbytes
+ dbus-client-gen
+ dbus-python-client-gen
+ packaging
+ ];
+
+ passthru.tests = nixosTests.stratis;
+
+ meta = with lib; {
+ description = "CLI for the Stratis project";
+ homepage = "https://stratis-storage.github.io";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ nickcao ];
+ };
+}
diff --git a/pkgs/tools/filesystems/stratisd/default.nix b/pkgs/tools/filesystems/stratisd/default.nix
index 1302c10ea8c1..b37c46c4e2d8 100644
--- a/pkgs/tools/filesystems/stratisd/default.nix
+++ b/pkgs/tools/filesystems/stratisd/default.nix
@@ -18,6 +18,7 @@
, tpm2-tools
, coreutils
, clevisSupport ? false
+, nixosTests
}:
stdenv.mkDerivation rec {
@@ -95,6 +96,8 @@ stdenv.mkDerivation rec {
rm -r "$out/lib/systemd/system-generators"
'';
+ passthru.tests = nixosTests.stratis;
+
meta = with lib; {
description = "Easy to use local storage management for Linux";
homepage = "https://stratis-storage.github.io";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c5ceab27e574..efb71a1b39e6 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5940,6 +5940,8 @@ with pkgs;
stratisd = callPackage ../tools/filesystems/stratisd { };
+ stratis-cli = callPackage ../tools/filesystems/stratis-cli { };
+
strawberry = libsForQt5.callPackage ../applications/audio/strawberry { };
schildichat-desktop = callPackage ../applications/networking/instant-messengers/schildichat/schildichat-desktop.nix {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 63218f729214..6d95f5c4beec 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -2302,6 +2302,10 @@ in {
inherit (pkgs) dbus;
};
+ dbus-python-client-gen = callPackage ../development/python-modules/dbus-python-client-gen { };
+
+ dbus-signature-pyparsing = callPackage ../development/python-modules/dbus-signature-pyparsing { };
+
dbutils = callPackage ../development/python-modules/dbutils { };
db-dtypes = callPackage ../development/python-modules/db-dtypes { };
@@ -4235,6 +4239,8 @@ in {
hpccm = callPackage ../development/python-modules/hpccm { };
+ hs-dbus-signature = callPackage ../development/python-modules/hs-dbus-signature { };
+
hsaudiotag3k = callPackage ../development/python-modules/hsaudiotag3k { };
hsluv = callPackage ../development/python-modules/hsluv { };
@@ -4523,6 +4529,8 @@ in {
intervaltree = callPackage ../development/python-modules/intervaltree { };
+ into-dbus-python = callPackage ../development/python-modules/into-dbus-python { };
+
intreehooks = callPackage ../development/python-modules/intreehooks { };
invocations = callPackage ../development/python-modules/invocations { };