Merge pull request #168292 from whentze/cockroach-module-improvements
nixos/cockroachdb: add `extraArgs` and properly escape systemd exec args
This commit is contained in:
commit
398973f7eb
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, utils, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
|
@ -6,46 +6,44 @@ let
|
||||||
cfg = config.services.cockroachdb;
|
cfg = config.services.cockroachdb;
|
||||||
crdb = cfg.package;
|
crdb = cfg.package;
|
||||||
|
|
||||||
escape = builtins.replaceStrings ["%"] ["%%"];
|
startupCommand = utils.escapeSystemdExecArgs
|
||||||
ifNotNull = v: s: optionalString (v != null) s;
|
([
|
||||||
|
# Basic startup
|
||||||
startupCommand = lib.concatStringsSep " "
|
"${crdb}/bin/cockroach"
|
||||||
[ # Basic startup
|
"start"
|
||||||
"${crdb}/bin/cockroach start"
|
|
||||||
"--logtostderr"
|
"--logtostderr"
|
||||||
"--store=/var/lib/cockroachdb"
|
"--store=/var/lib/cockroachdb"
|
||||||
(ifNotNull cfg.locality "--locality='${cfg.locality}'")
|
|
||||||
|
|
||||||
# WebUI settings
|
# WebUI settings
|
||||||
"--http-addr='${cfg.http.address}:${toString cfg.http.port}'"
|
"--http-addr=${cfg.http.address}:${toString cfg.http.port}"
|
||||||
|
|
||||||
# Cluster listen address
|
# Cluster listen address
|
||||||
"--listen-addr='${cfg.listen.address}:${toString cfg.listen.port}'"
|
"--listen-addr=${cfg.listen.address}:${toString cfg.listen.port}"
|
||||||
|
|
||||||
# Cluster configuration
|
# Cache and memory settings.
|
||||||
(ifNotNull cfg.join "--join=${cfg.join}")
|
"--cache=${cfg.cache}"
|
||||||
|
"--max-sql-memory=${cfg.maxSqlMemory}"
|
||||||
# Cache and memory settings. Must be escaped.
|
|
||||||
"--cache='${escape cfg.cache}'"
|
|
||||||
"--max-sql-memory='${escape cfg.maxSqlMemory}'"
|
|
||||||
|
|
||||||
# Certificate/security settings.
|
# Certificate/security settings.
|
||||||
(if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}")
|
(if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}")
|
||||||
];
|
]
|
||||||
|
++ lib.optional (cfg.join != null) "--join=${cfg.join}"
|
||||||
|
++ lib.optional (cfg.locality != null) "--locality=${cfg.locality}"
|
||||||
|
++ cfg.extraArgs);
|
||||||
|
|
||||||
addressOption = descr: defaultPort: {
|
addressOption = descr: defaultPort: {
|
||||||
address = mkOption {
|
address = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "localhost";
|
default = "localhost";
|
||||||
description = "Address to bind to for ${descr}";
|
description = "Address to bind to for ${descr}";
|
||||||
};
|
|
||||||
|
|
||||||
port = mkOption {
|
|
||||||
type = types.port;
|
|
||||||
default = defaultPort;
|
|
||||||
description = "Port to bind to for ${descr}";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = defaultPort;
|
||||||
|
description = "Port to bind to for ${descr}";
|
||||||
|
};
|
||||||
|
};
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -159,6 +157,16 @@ in
|
||||||
only contain open source features and open source code).
|
only contain open source features and open source code).
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraArgs = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
example = [ "--advertise-addr" "[fe80::f6f2:::]" ];
|
||||||
|
description = ''
|
||||||
|
Extra CLI arguments passed to <command>cockroach start</command>.
|
||||||
|
For the full list of supported argumemnts, check <link xlink:href="https://www.cockroachlabs.com/docs/stable/cockroach-start.html#flags"/>
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue