diff options
author | Jonas Heinrich <onny@project-insanity.org> | 2022-09-16 13:40:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-16 13:40:17 +0200 |
commit | 22c17bd5f3ec1f2c49f9afee4c7f9d99fcd45827 (patch) | |
tree | 2a9a9b18769365f2beb93085810d0d082803fb15 | |
parent | 594b981f7019ffd5a34b278eabe5f732abb96094 (diff) | |
parent | 6ec928d73d0580692e75c54c79a0f5a69c1edcf2 (diff) |
Merge pull request #186940 from NickCao/stratis-cli
stratis-cli: init at 3.2.0
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/tasks/stratis.nix | 18 | ||||
-rw-r--r-- | nixos/tests/all-tests.nix | 1 | ||||
-rw-r--r-- | nixos/tests/stratis/default.nix | 7 | ||||
-rw-r--r-- | nixos/tests/stratis/simple.nix | 39 | ||||
-rw-r--r-- | pkgs/development/python-modules/dbus-python-client-gen/default.nix | 34 | ||||
-rw-r--r-- | pkgs/development/python-modules/dbus-signature-pyparsing/default.nix | 34 | ||||
-rw-r--r-- | pkgs/development/python-modules/hs-dbus-signature/default.nix | 28 | ||||
-rw-r--r-- | pkgs/development/python-modules/into-dbus-python/default.nix | 38 | ||||
-rw-r--r-- | pkgs/tools/filesystems/stratis-cli/default.nix | 36 | ||||
-rw-r--r-- | pkgs/tools/filesystems/stratisd/default.nix | 3 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 | ||||
-rw-r--r-- | pkgs/top-level/python-packages.nix | 8 |
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 { }; |