diff --git a/projects/PeerTube/default.nix b/projects/PeerTube/default.nix index 7c37e1571..da9211120 100644 --- a/projects/PeerTube/default.nix +++ b/projects/PeerTube/default.nix @@ -27,14 +27,34 @@ }; }; - nixos.modules.services = { - peertube = { - name = "peertube"; - module = ./services/peertube/module.nix; - examples.basic = { - module = ./services/peertube/examples/basic.nix; - description = "Basic configuration mainly used for testing purposes."; - tests.peertube-plugins = import ./services/peertube/tests/peertube-plugins.nix args; + nixos.modules = { + programs = { + peertube-cli = { + module = ./programs/peertube-cli/module.nix; + examples.basic-cli = { + module = ./programs/peertube-cli/examples/basic.nix; + description = '' + Enable peertube-cli, a tool for remotely managing PeerTube instances + ''; + tests.basic-cli = import ./programs/peertube-cli/tests/basic.nix args; + }; + links = { + docs = { + text = "Documentation"; + url = "https://docs.joinpeertube.org/maintain/tools#remote-peertube-cli"; + }; + }; + }; + }; + + services = { + peertube = { + module = ./services/peertube/module.nix; + examples.basic = { + module = ./services/peertube/examples/basic.nix; + description = "Basic configuration mainly used for testing purposes"; + tests.peertube-plugins = import ./services/peertube/tests/peertube-plugins.nix args; + }; }; }; }; diff --git a/projects/PeerTube/programs/peertube-cli/examples/basic.nix b/projects/PeerTube/programs/peertube-cli/examples/basic.nix new file mode 100644 index 000000000..87f12c777 --- /dev/null +++ b/projects/PeerTube/programs/peertube-cli/examples/basic.nix @@ -0,0 +1,3 @@ +{ + programs.peertube-cli.enable = true; +} diff --git a/projects/PeerTube/programs/peertube-cli/module.nix b/projects/PeerTube/programs/peertube-cli/module.nix new file mode 100644 index 000000000..f4135626f --- /dev/null +++ b/projects/PeerTube/programs/peertube-cli/module.nix @@ -0,0 +1,20 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.programs.peertube-cli; +in +{ + options.programs.peertube-cli = { + enable = lib.mkEnableOption "peertube-cli"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + peertube.cli + ]; + }; +} diff --git a/projects/PeerTube/programs/peertube-cli/tests/basic.nix b/projects/PeerTube/programs/peertube-cli/tests/basic.nix new file mode 100644 index 000000000..9222b9484 --- /dev/null +++ b/projects/PeerTube/programs/peertube-cli/tests/basic.nix @@ -0,0 +1,28 @@ +{ + sources, + ... +}: + +{ + name = "peertube-cli"; + + nodes = { + machine = + { ... }: + { + imports = [ + sources.modules.ngipkgs + sources.modules.programs.peertube-cli + sources.examples.PeerTube.basic-cli + ]; + }; + }; + + testScript = + { nodes, ... }: + '' + start_all() + + machine.succeed("peertube-cli --version") + ''; +}