nixos/jotta-cli: init jotta-cli
See https://github.com/NixOS/nixpkgs/issues/300063.
This commit is contained in:
parent
0d28066770
commit
021a0ffe57
@ -113,6 +113,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
|||||||
|
|
||||||
- [mautrix-meta](https://github.com/mautrix/meta), a Matrix <-> Facebook and Matrix <-> Instagram hybrid puppeting/relaybot bridge. Available as services.mautrix-meta
|
- [mautrix-meta](https://github.com/mautrix/meta), a Matrix <-> Facebook and Matrix <-> Instagram hybrid puppeting/relaybot bridge. Available as services.mautrix-meta
|
||||||
|
|
||||||
|
- [Jottacloud Command-line Tool](https://docs.jottacloud.com/en/articles/1436834-jottacloud-command-line-tool), a CLI for the [Jottacloud](https://jottacloud.com/) cloud storage provider. Available as [user.services.jotta-cli](#opt-user.services.jotta-cli.enable).
|
||||||
|
|
||||||
- [transfer-sh](https://github.com/dutchcoders/transfer.sh), a tool that supports easy and fast file sharing from the command-line. Available as [services.transfer-sh](#opt-services.transfer-sh.enable).
|
- [transfer-sh](https://github.com/dutchcoders/transfer.sh), a tool that supports easy and fast file sharing from the command-line. Available as [services.transfer-sh](#opt-services.transfer-sh.enable).
|
||||||
|
|
||||||
- [MollySocket](https://github.com/mollyim/mollysocket) which allows getting Signal notifications via UnifiedPush.
|
- [MollySocket](https://github.com/mollyim/mollysocket) which allows getting Signal notifications via UnifiedPush.
|
||||||
|
@ -1015,6 +1015,7 @@
|
|||||||
./services/networking/jigasi.nix
|
./services/networking/jigasi.nix
|
||||||
./services/networking/jitsi-videobridge.nix
|
./services/networking/jitsi-videobridge.nix
|
||||||
./services/networking/jool.nix
|
./services/networking/jool.nix
|
||||||
|
./services/networking/jotta-cli.nix
|
||||||
./services/networking/kea.nix
|
./services/networking/kea.nix
|
||||||
./services/networking/keepalived/default.nix
|
./services/networking/keepalived/default.nix
|
||||||
./services/networking/keybase.nix
|
./services/networking/keybase.nix
|
||||||
|
27
nixos/modules/services/networking/jotta-cli.md
Normal file
27
nixos/modules/services/networking/jotta-cli.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Jottacloud Command-line Tool {#module-services-jotta-cli}
|
||||||
|
|
||||||
|
The [Jottacloud Command-line Tool](https://docs.jottacloud.com/en/articles/1436834-jottacloud-command-line-tool) is a headless [Jottacloud](https://jottacloud.com) client.
|
||||||
|
|
||||||
|
## Quick Start {#module-services-jotta-cli-quick-start}
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
user.services.jotta-cli.enable = true;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This adds `jotta-cli` to `environment.systemPackages` and starts a user service that runs `jottad` with the default options.
|
||||||
|
|
||||||
|
## Example Configuration {#module-services-jotta-cli-example-configuration}
|
||||||
|
|
||||||
|
```nix
|
||||||
|
user.services.jotta-cli = {
|
||||||
|
enable = true;
|
||||||
|
options = [ "slow" ];
|
||||||
|
package = pkgs.jotta-cli;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
This uses `jotta-cli` and `jottad` from the `pkgs.jotta-cli` package and starts `jottad` in low memory mode.
|
||||||
|
|
||||||
|
`jottad` is also added to `environment.systemPackages`, so `jottad --help` can be used to explore options.
|
43
nixos/modules/services/networking/jotta-cli.nix
Normal file
43
nixos/modules/services/networking/jotta-cli.nix
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let cfg = config.user.services.jotta-cli;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
user.services.jotta-cli = {
|
||||||
|
|
||||||
|
enable = mkEnableOption "Jottacloud Command-line Tool";
|
||||||
|
|
||||||
|
options = mkOption {
|
||||||
|
default = [ "stdoutlog" "datadir" "%h/.jottad/" ];
|
||||||
|
example = [ ];
|
||||||
|
type = with types; listOf str;
|
||||||
|
description = "Command-line options passed to jottad.";
|
||||||
|
};
|
||||||
|
|
||||||
|
package = lib.mkPackageOption pkgs "jotta-cli" { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.user.services.jottad = {
|
||||||
|
|
||||||
|
description = "Jottacloud Command-line Tool daemon";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "notify";
|
||||||
|
EnvironmentFile = "-%h/.config/jotta-cli/jotta-cli.env";
|
||||||
|
ExecStart = "${lib.getExe' cfg.package "jottad"} ${concatStringsSep " " cfg.options}";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
|
||||||
|
wantedBy = [ "default.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
};
|
||||||
|
environment.systemPackages = [ pkgs.jotta-cli ];
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with lib.maintainers; [ evenbrenden ];
|
||||||
|
meta.doc = ./jotta-cli.md;
|
||||||
|
}
|
@ -446,6 +446,7 @@ in {
|
|||||||
jirafeau = handleTest ./jirafeau.nix {};
|
jirafeau = handleTest ./jirafeau.nix {};
|
||||||
jitsi-meet = handleTest ./jitsi-meet.nix {};
|
jitsi-meet = handleTest ./jitsi-meet.nix {};
|
||||||
jool = import ./jool.nix { inherit pkgs runTest; };
|
jool = import ./jool.nix { inherit pkgs runTest; };
|
||||||
|
jotta-cli = handleTest ./jotta-cli.nix {};
|
||||||
k3s = handleTest ./k3s {};
|
k3s = handleTest ./k3s {};
|
||||||
kafka = handleTest ./kafka.nix {};
|
kafka = handleTest ./kafka.nix {};
|
||||||
kanidm = handleTest ./kanidm.nix {};
|
kanidm = handleTest ./kanidm.nix {};
|
||||||
|
25
nixos/tests/jotta-cli.nix
Normal file
25
nixos/tests/jotta-cli.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
|
|
||||||
|
name = "jotta-cli";
|
||||||
|
meta.maintainers = with pkgs.lib.maintainers; [ evenbrenden ];
|
||||||
|
|
||||||
|
nodes.machine = { pkgs, ... }: {
|
||||||
|
user.services.jotta-cli.enable = true;
|
||||||
|
imports = [ ./common/user-account.nix ];
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = { nodes, ... }:
|
||||||
|
let uid = toString nodes.machine.users.users.alice.uid;
|
||||||
|
in ''
|
||||||
|
machine.start()
|
||||||
|
|
||||||
|
machine.succeed("loginctl enable-linger alice")
|
||||||
|
machine.wait_for_unit("user@${uid}.service")
|
||||||
|
|
||||||
|
machine.wait_for_unit("jottad.service", "alice")
|
||||||
|
machine.wait_for_open_unix_socket("/run/user/${uid}/jottad/jottad.socket")
|
||||||
|
|
||||||
|
# "jotta-cli version" should fail if jotta-cli cannot connect to jottad
|
||||||
|
machine.succeed('XDG_RUNTIME_DIR=/run/user/${uid} su alice -c "jotta-cli version"')
|
||||||
|
'';
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user