diff options
author | Maximilian Bosch <maximilian@mbosch.me> | 2019-10-25 15:14:57 +0200 |
---|---|---|
committer | Maximilian Bosch <maximilian@mbosch.me> | 2019-10-25 16:19:41 +0200 |
commit | 3461ec2ffdd51f298d9dd520974d998b153b3b6f (patch) | |
tree | 82d10bb0a991d10cd4a411bdb02130275d8893f4 | |
parent | a66e5106fd07bbf1d240dec02d9e50da153fe983 (diff) | |
download | nixpkgs-3461ec2ffdd51f298d9dd520974d998b153b3b6f.tar nixpkgs-3461ec2ffdd51f298d9dd520974d998b153b3b6f.tar.gz nixpkgs-3461ec2ffdd51f298d9dd520974d998b153b3b6f.tar.bz2 nixpkgs-3461ec2ffdd51f298d9dd520974d998b153b3b6f.tar.lz nixpkgs-3461ec2ffdd51f298d9dd520974d998b153b3b6f.tar.xz nixpkgs-3461ec2ffdd51f298d9dd520974d998b153b3b6f.tar.zst nixpkgs-3461ec2ffdd51f298d9dd520974d998b153b3b6f.zip |
nixos/gotify: init module and test
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/web-apps/gotify-server.nix | 49 | ||||
-rw-r--r-- | nixos/tests/all-tests.nix | 1 | ||||
-rw-r--r-- | nixos/tests/gotify-server.nix | 45 |
4 files changed, 96 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 5214126ff7e..13a7867b772 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -793,6 +793,7 @@ ./services/web-apps/cryptpad.nix ./services/web-apps/documize.nix ./services/web-apps/frab.nix + ./services/web-apps/gotify-server.nix ./services/web-apps/icingaweb2/icingaweb2.nix ./services/web-apps/icingaweb2/module-monitoring.nix ./services/web-apps/limesurvey.nix diff --git a/nixos/modules/services/web-apps/gotify-server.nix b/nixos/modules/services/web-apps/gotify-server.nix new file mode 100644 index 00000000000..03e01f46a94 --- /dev/null +++ b/nixos/modules/services/web-apps/gotify-server.nix @@ -0,0 +1,49 @@ +{ pkgs, lib, config, ... }: + +with lib; + +let + cfg = config.services.gotify; +in { + options = { + services.gotify = { + enable = mkEnableOption "Gotify webserver"; + + port = mkOption { + type = types.port; + description = '' + Port the server listens to. + ''; + }; + + stateDirectoryName = mkOption { + type = types.str; + default = "gotify-server"; + description = '' + The name of the directory below <filename>/var/lib</filename> where + gotify stores its runtime data. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + systemd.services.gotify-server = { + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + description = "Simple server for sending and receiving messages"; + + environment = { + GOTIFY_SERVER_PORT = toString cfg.port; + }; + + serviceConfig = { + WorkingDirectory = "/var/lib/${cfg.stateDirectoryName}"; + StateDirectory = cfg.stateDirectoryName; + Restart = "always"; + DynamicUser = "yes"; + ExecStart = "${pkgs.gotify-server}/bin/server"; + }; + }; + }; +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index e94c9712cbf..694376b9d36 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -93,6 +93,7 @@ in fsck = handleTest ./fsck.nix {}; fwupd = handleTestOn ["x86_64-linux"] ./fwupd.nix {}; # libsmbios is unsupported on aarch64 gdk-pixbuf = handleTest ./gdk-pixbuf.nix {}; + gotify-server = handleTest ./gotify-server.nix {}; gitea = handleTest ./gitea.nix {}; gitlab = handleTest ./gitlab.nix {}; gitolite = handleTest ./gitolite.nix {}; diff --git a/nixos/tests/gotify-server.nix b/nixos/tests/gotify-server.nix new file mode 100644 index 00000000000..0ffc3138d5a --- /dev/null +++ b/nixos/tests/gotify-server.nix @@ -0,0 +1,45 @@ +import ./make-test.nix ({ pkgs, lib, ...} : { + name = "gotify-server"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ ma27 ]; + }; + + machine = { pkgs, ... }: { + environment.systemPackages = [ pkgs.jq ]; + + services.gotify = { + enable = true; + port = 3000; + }; + }; + + testScript = '' + startAll; + + $machine->waitForUnit("gotify-server"); + $machine->waitForOpenPort(3000); + + my $token = $machine->succeed( + "curl --fail -sS -X POST localhost:3000/application -F name=nixos " . + '-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" ' . + '| jq .token | xargs echo -n' + ); + + my $usertoken = $machine->succeed( + "curl --fail -sS -X POST localhost:3000/client -F name=nixos " . + '-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" ' . + '| jq .token | xargs echo -n' + ); + + $machine->succeed( + "curl --fail -sS -X POST 'localhost:3000/message?token=$token' -H 'Accept: application/json' " . + '-F title=Gotify -F message=Works' + ); + + my $title = $machine->succeed( + "curl --fail -sS 'localhost:3000/message?since=0&token=$usertoken' | jq '.messages|.[0]|.title' | xargs echo -n" + ); + + $title eq "Gotify" or die "Wrong title ($title), expected 'Gotify'!"; + ''; +}) |