2015-06-08 11:58:33 +01:00
|
|
|
{ config, pkgs, lib, ... }:
|
|
|
|
|
|
|
|
with lib;
|
|
|
|
|
|
|
|
let
|
|
|
|
cfg = config.services.rippleRest;
|
|
|
|
|
|
|
|
configFile = pkgs.writeText "ripple-rest-config.json" (builtins.toJSON {
|
|
|
|
config_version = "2.0.3";
|
|
|
|
debug = cfg.debug;
|
|
|
|
port = cfg.port;
|
|
|
|
host = cfg.host;
|
|
|
|
ssl_enabled = cfg.ssl.enable;
|
|
|
|
ssl = {
|
|
|
|
key_path = cfg.ssl.keyPath;
|
|
|
|
cert_path = cfg.ssl.certPath;
|
|
|
|
reject_unathorized = cfg.ssl.rejectUnathorized;
|
|
|
|
};
|
|
|
|
db_path = cfg.dbPath;
|
|
|
|
max_transaction_fee = cfg.maxTransactionFee;
|
|
|
|
rippled_servers = cfg.rippleds;
|
|
|
|
});
|
|
|
|
|
|
|
|
in {
|
|
|
|
options.services.rippleRest = {
|
2015-06-21 16:19:46 +01:00
|
|
|
enable = mkEnableOption "ripple rest";
|
2015-06-08 11:58:33 +01:00
|
|
|
|
2015-06-21 16:19:46 +01:00
|
|
|
debug = mkEnableOption "debug for ripple-rest";
|
2015-06-08 11:58:33 +01:00
|
|
|
|
|
|
|
host = mkOption {
|
|
|
|
description = "Ripple rest host.";
|
|
|
|
default = "localhost";
|
|
|
|
type = types.str;
|
|
|
|
};
|
|
|
|
|
|
|
|
port = mkOption {
|
|
|
|
description = "Ripple rest port.";
|
|
|
|
default = 5990;
|
|
|
|
type = types.int;
|
|
|
|
};
|
|
|
|
|
|
|
|
ssl = {
|
2015-06-21 16:19:46 +01:00
|
|
|
enable = mkEnableOption "ssl";
|
2015-06-08 11:58:33 +01:00
|
|
|
|
|
|
|
keyPath = mkOption {
|
|
|
|
description = "Path to the ripple rest key file.";
|
|
|
|
default = null;
|
|
|
|
type = types.nullOr types.path;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
certPath = mkOption {
|
|
|
|
description = "Path to the ripple rest cert file.";
|
|
|
|
default = null;
|
|
|
|
type = types.nullOr types.path;
|
|
|
|
};
|
|
|
|
|
|
|
|
rejectUnathorized = mkOption {
|
|
|
|
description = "Whether to reject unatohroized.";
|
|
|
|
default = true;
|
|
|
|
type = types.bool;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
dbPath = mkOption {
|
|
|
|
description = "Ripple rest database path.";
|
|
|
|
default = "${cfg.dataDir}/ripple-rest.db";
|
|
|
|
type = types.path;
|
|
|
|
};
|
|
|
|
|
|
|
|
maxTransactionFee = mkOption {
|
|
|
|
description = "Ripple rest max transaction fee.";
|
|
|
|
default = 1000000;
|
|
|
|
type = types.int;
|
|
|
|
};
|
|
|
|
|
|
|
|
rippleds = mkOption {
|
|
|
|
description = "List of rippled servers.";
|
|
|
|
default = [
|
|
|
|
"wss://s1.ripple.com:443"
|
|
|
|
];
|
|
|
|
type = types.listOf types.str;
|
|
|
|
};
|
|
|
|
|
|
|
|
dataDir = mkOption {
|
|
|
|
description = "Ripple rest data directory.";
|
|
|
|
default = "/var/lib/ripple-rest";
|
|
|
|
type = types.path;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = mkIf (cfg.enable) {
|
|
|
|
systemd.services.ripple-rest = {
|
|
|
|
wantedBy = [ "multi-user.target"];
|
|
|
|
after = ["network.target" ];
|
|
|
|
environment.NODE_PATH="${pkgs.ripple-rest}/lib/node_modules/ripple-rest/node_modules";
|
|
|
|
serviceConfig = {
|
|
|
|
ExecStart = "${pkgs.nodejs}/bin/node ${pkgs.ripple-rest}/lib/node_modules/ripple-rest/server/server.js --config ${configFile}";
|
|
|
|
User = "ripple-rest";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
users.extraUsers.postgres = {
|
|
|
|
name = "ripple-rest";
|
|
|
|
uid = config.ids.uids.ripple-rest;
|
|
|
|
createHome = true;
|
|
|
|
home = cfg.dataDir;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|