Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
18 changes: 18 additions & 0 deletions nixos/modules/tasks/stratis.nix
Original file line number Diff line number Diff line change
@@ -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" ];
};
}
1 change: 1 addition & 0 deletions nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 {};
Expand Down
7 changes: 7 additions & 0 deletions nixos/tests/stratis/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{ system ? builtins.currentSystem
, pkgs ? import ../../.. { inherit system; }
}:

{
simple = import ./simple.nix { inherit system pkgs; };
}
39 changes: 39 additions & 0 deletions nixos/tests/stratis/simple.nix
Original file line number Diff line number Diff line change
@@ -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")
'';
})
34 changes: 34 additions & 0 deletions pkgs/development/python-modules/dbus-python-client-gen/default.nix
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
28 changes: 28 additions & 0 deletions pkgs/development/python-modules/hs-dbus-signature/default.nix
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
38 changes: 38 additions & 0 deletions pkgs/development/python-modules/into-dbus-python/default.nix
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
36 changes: 36 additions & 0 deletions pkgs/tools/filesystems/stratis-cli/default.nix
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
3 changes: 3 additions & 0 deletions pkgs/tools/filesystems/stratisd/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
, tpm2-tools
, coreutils
, clevisSupport ? false
, nixosTests
}:

stdenv.mkDerivation rec {
Expand Down Expand Up @@ -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";
Expand Down
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5918,6 +5918,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 {
Expand Down
8 changes: 8 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2299,6 +2299,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 { };
Expand Down Expand Up @@ -4232,6 +4236,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 { };
Expand Down Expand Up @@ -4520,6 +4526,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 { };
Expand Down