Merge pull request #89327 from mweinelt/go-neb-module

nixos/go-neb: init
This commit is contained in:
Aaron Andersen 2020-06-16 06:30:29 -04:00 committed by GitHub
commit b6108e021b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 102 additions and 1 deletions

View File

@ -623,6 +623,7 @@
./services/networking/gdomap.nix
./services/networking/git-daemon.nix
./services/networking/gnunet.nix
./services/networking/go-neb.nix
./services/networking/go-shadowsocks2.nix
./services/networking/gogoclient.nix
./services/networking/gvpe.nix

View File

@ -0,0 +1,53 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.go-neb;
configFile = pkgs.writeText "config.yml" (builtins.toJSON cfg.config);
in {
options.services.go-neb = {
enable = mkEnableOption "Extensible matrix bot written in Go";
bindAddress = mkOption {
type = types.str;
description = "Port (and optionally address) to listen on.";
default = ":4050";
};
baseUrl = mkOption {
type = types.str;
description = "Public-facing endpoint that can receive webhooks.";
};
config = mkOption {
type = types.uniq types.attrs;
description = ''
Your <filename>config.yaml</filename> as a Nix attribute set.
See <link xlink:href="https://github.com/matrix-org/go-neb/blob/master/config.sample.yaml">config.sample.yaml</link>
for possible options.
'';
};
};
config = mkIf cfg.enable {
systemd.services.go-neb = {
description = "Extensible matrix bot written in Go";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment = {
BASE_URL = cfg.baseUrl;
BIND_ADDRESS = cfg.bindAddress;
CONFIG_FILE = configFile;
};
serviceConfig = {
ExecStart = "${pkgs.go-neb}/bin/go-neb";
DynamicUser = true;
};
};
};
meta.maintainers = with maintainers; [ hexa maralorn ];
}

View File

@ -119,6 +119,7 @@ in
installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});
gocd-agent = handleTest ./gocd-agent.nix {};
gocd-server = handleTest ./gocd-server.nix {};
go-neb = handleTest ./go-neb.nix {};
google-oslogin = handleTest ./google-oslogin {};
grafana = handleTest ./grafana.nix {};
graphite = handleTest ./graphite.nix {};

44
nixos/tests/go-neb.nix Normal file
View File

@ -0,0 +1,44 @@
import ./make-test-python.nix ({ pkgs, ... }:
{
name = "go-neb";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ hexa maralorn ];
};
nodes = {
server = {
services.go-neb = {
enable = true;
baseUrl = "http://localhost";
config = {
clients = [ {
UserId = "@test:localhost";
AccessToken = "changeme";
HomeServerUrl = "http://localhost";
Sync = false;
AutoJoinRooms = false;
DisplayName = "neverbeseen";
} ];
services = [ {
ID = "wikipedia_service";
Type = "wikipedia";
UserID = "@test:localhost";
Config = { };
} ];
};
};
};
};
testScript = ''
start_all()
server.wait_for_unit("go-neb.service")
server.wait_until_succeeds(
"curl -L http://localhost:4050/services/hooks/d2lraXBlZGlhX3NlcnZpY2U"
)
server.wait_until_succeeds(
"journalctl -eu go-neb -o cat | grep -q service_id=wikipedia_service"
)
'';
})

View File

@ -1,4 +1,4 @@
{ lib, buildGoModule, fetchFromGitHub }:
{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
buildGoModule {
pname = "go-neb";
@ -16,6 +16,8 @@ buildGoModule {
vendorSha256 = "1k3980yf6zl00dkd1djwhm2f9nnffzrsbs3kq3alpw2gm0aln739";
passthru.tests.go-neb = nixosTests.go-neb;
meta = with lib; {
description = "Extensible matrix bot written in Go";
homepage = "https://github.com/matrix-org/go-neb";