Merge pull request #215696 from fee1-dead-contrib/matrix-appservice-discord.customize-package

nixos/appservice-discord: customizable `package`

Nick Cao 48d6418a 0fdc4871

Changed files
+12 -4
nixos
modules
services
+12 -4
nixos/modules/services/matrix/appservice-discord.nix
···
let
dataDir = "/var/lib/matrix-appservice-discord";
registrationFile = "${dataDir}/discord-registration.yaml";
-
appDir = "${pkgs.matrix-appservice-discord}/${pkgs.matrix-appservice-discord.passthru.nodeAppDir}";
cfg = config.services.matrix-appservice-discord;
opt = options.services.matrix-appservice-discord;
# TODO: switch to configGen.json once RFC42 is implemented
···
options = {
services.matrix-appservice-discord = {
enable = mkEnableOption (lib.mdDoc "a bridge between Matrix and Discord");
settings = mkOption rec {
# TODO: switch to types.config.json as prescribed by RFC42 once it's implemented
···
preStart = ''
if [ ! -f '${registrationFile}' ]; then
-
${pkgs.matrix-appservice-discord}/bin/matrix-appservice-discord \
--generate-registration \
--url=${escapeShellArg cfg.url} \
${optionalString (cfg.localpart != null) "--localpart=${escapeShellArg cfg.localpart}"} \
···
DynamicUser = true;
PrivateTmp = true;
-
WorkingDirectory = appDir;
StateDirectory = baseNameOf dataDir;
UMask = "0027";
EnvironmentFile = cfg.environmentFile;
ExecStart = ''
-
${pkgs.matrix-appservice-discord}/bin/matrix-appservice-discord \
--file='${registrationFile}' \
--config='${settingsFile}' \
--port='${toString cfg.port}'
···
let
dataDir = "/var/lib/matrix-appservice-discord";
registrationFile = "${dataDir}/discord-registration.yaml";
cfg = config.services.matrix-appservice-discord;
opt = options.services.matrix-appservice-discord;
# TODO: switch to configGen.json once RFC42 is implemented
···
options = {
services.matrix-appservice-discord = {
enable = mkEnableOption (lib.mdDoc "a bridge between Matrix and Discord");
+
+
package = mkOption {
+
type = types.package;
+
default = pkgs.matrix-appservice-discord;
+
defaultText = literalExpression "pkgs.matrix-appservice-discord";
+
description = lib.mdDoc ''
+
Which package of matrix-appservice-discord to use.
+
'';
+
};
settings = mkOption rec {
# TODO: switch to types.config.json as prescribed by RFC42 once it's implemented
···
preStart = ''
if [ ! -f '${registrationFile}' ]; then
+
${cfg.package}/bin/matrix-appservice-discord \
--generate-registration \
--url=${escapeShellArg cfg.url} \
${optionalString (cfg.localpart != null) "--localpart=${escapeShellArg cfg.localpart}"} \
···
DynamicUser = true;
PrivateTmp = true;
+
WorkingDirectory = "${cfg.package}/${cfg.package.passthru.nodeAppDir}";
StateDirectory = baseNameOf dataDir;
UMask = "0027";
EnvironmentFile = cfg.environmentFile;
ExecStart = ''
+
${cfg.package}/bin/matrix-appservice-discord \
--file='${registrationFile}' \
--config='${settingsFile}' \
--port='${toString cfg.port}'