diff --git a/default.nix b/default.nix index da65a1d..fac6fe3 100644 --- a/default.nix +++ b/default.nix @@ -23,6 +23,8 @@ in synapse-admin = pkgs.callPackage ./pkgs/synapse-admin { }; matrix-wug = pkgs.callPackage ./pkgs/matrix-wug { }; + matrix-corporal = pkgs.callPackage ./pkgs/matrix-corporal { }; + rank_photos = pkgs.callPackage ./pkgs/rank_photos { }; vcsi = pkgs.callPackage ./pkgs/vcsi {}; diff --git a/modules/matrix-corporal.nix b/modules/matrix-corporal.nix new file mode 100644 index 0000000..ffdca63 --- /dev/null +++ b/modules/matrix-corporal.nix @@ -0,0 +1,34 @@ +{ lib, pkgs, config, ... }: +let + cfg = config.services.matrix-corporal; +in +{ + options.services.matrix-corporal = { + enable = lib.mkEnableOption "Start matrix-corporal"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nur.repos.dandellion.matrix-corporal; + }; + + settings = lib.mkOption { + default = {}; + description = '' + Configuration for matrix-corporal, see + for supported values. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.pantalaimon = { + wantedBy = [ "default.target" ]; + after = [ "network-online.target" ]; + serviceConfig = { + Type = "simple"; + DynamicUser="yes"; + ExecStart = "${cfg.package}/bin/matrix-corporal -c ${pkgs.writeTextFile {name = "matrix-corporal-config.json"; text = lib.generators.toJSON {} cfg.settings;}}"; + }; + }; + }; +} diff --git a/pkgs/matrix-corporal/default.nix b/pkgs/matrix-corporal/default.nix new file mode 100644 index 0000000..755aae2 --- /dev/null +++ b/pkgs/matrix-corporal/default.nix @@ -0,0 +1,22 @@ +{lib, fetchFromGitHub, buildGoModule }: + +buildGoModule { + pname = "matrix-corporal"; + version = "1.9.0"; + + src = fetchFromGitHub { + owner = "devture"; + repo = "matrix-corporal"; + rev = "1.9.0"; + sha256 = "0zwfvlhp9j3skz6ryi01d7ps3wm8kb3njcbjf0bl1gv2h0cjhlji"; + }; + + vendorSha256 = "1fghbl0b418ld5szjafbiz3vp773skc0l6kaif5c2vsh2ivgr6hl"; + + meta = with lib; { + homepage = "https://github.com/devture/matrix-corporal"; + description = "Reconciliator and gateway for a managed Matrix server"; + license = licenses.agpl3; + platforms = platforms.linux; + }; +}