Skip to content

Commit f766034

Browse files
authored
Merge pull request #129 from mlabs-haskell/avnik/indirection-layer-for-node
Indirection layer for node
2 parents 997e455 + 68bc427 commit f766034

File tree

14 files changed

+333
-9
lines changed

14 files changed

+333
-9
lines changed

docs/render.nix

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,11 @@ in
209209
evaluated = lib.evalModules {
210210
modules = modules ++ [
211211
{
212-
imports = builtins.import "${inputs.nixpkgs}/nixos/modules/module-list.nix";
212+
# We need standard NixOS modules _plus_ `cardano.providers` inside context of evaluation, because lof of modules
213+
# refers to them in `default` statement.
214+
# Also we couldn't use `builtins.import`, because it raise a conflict in option definitions,
215+
# so use nested module with `imports = []` statement.
216+
imports = builtins.import "${inputs.nixpkgs}/nixos/modules/module-list.nix" ++ [ { imports = [ ../modules/providers.nix ]; } ];
213217
nixpkgs.system = system;
214218
}
215219
];

flake.lock

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
url = "github:txpipe/oura/v1.9.4";
2525
inputs.crane.follows = "crane";
2626
};
27+
demeter-run-cli = {
28+
url = "github:demeter-run/cli";
29+
flake = false;
30+
};
2731
crane = {
2832
url = "github:ipetkov/crane";
2933
};

modules/db-sync.nix

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ in
4646
services.cardano-db-sync = {
4747
enable = true;
4848
environment = config.services.cardano-node.environments.${config.cardano.network};
49-
inherit (config.cardano.node) socketPath;
49+
inherit (config.cardano.providers.node) socketPath;
5050
postgres = {
5151
user = "cardano-db-sync";
5252
# use first socket from postgresql settings or default to /run/postgresql
@@ -59,6 +59,8 @@ in
5959
systemd.services.cardano-db-sync = {
6060
serviceConfig = {
6161
User = "cardano-db-sync";
62+
# Default db-sync service hardcode "cardano-node"
63+
SupplementaryGroups = config.cardano.providers.node.accessGroup;
6264
# Security
6365
UMask = "0077";
6466
CapabilityBoundingSet = "";
@@ -90,10 +92,10 @@ in
9092
};
9193
};
9294
})
93-
(mkIf (cfg.enable && config.cardano.node.enable or false) {
95+
(mkIf (cfg.enable && config.cardano.providers.node.active) {
9496
systemd.services.cardano-db-sync = {
95-
after = [ "cardano-node-socket.service" ];
96-
requires = [ "cardano-node-socket.service" ];
97+
after = [ config.cardano.providers.node.after ];
98+
requires = [ config.cardano.providers.node.requires ];
9799
};
98100
})
99101
(mkIf (cfg.enable && cfg.postgres.enable) {

modules/default.nix

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
cardano = {
1111
imports = [
1212
./cardano.nix
13+
./providers.nix
1314
];
1415
};
1516
cli = {
@@ -72,6 +73,12 @@
7273
./monitoring.nix
7374
];
7475
};
76+
demeter-run = {
77+
imports = [
78+
./demeter-run.nix
79+
./services/demeter-run.nix
80+
];
81+
};
7582
# the default module imports all modules
7683
default = {
7784
imports = [

modules/demeter-run.nix

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{ config, lib, ... }:
2+
3+
let
4+
cfg = config.cardano.demeter-run;
5+
dmtr_cfg = config.services.demeter-run;
6+
inherit (lib)
7+
mkEnableOption
8+
mkIf
9+
mkOption
10+
types
11+
;
12+
in
13+
{
14+
options.cardano.demeter-run = {
15+
node = {
16+
enable = mkEnableOption "Demeter run tunnel";
17+
instance = mkOption {
18+
type = types.str;
19+
};
20+
21+
configFile = mkOption {
22+
type = types.str;
23+
description = ''
24+
Config file for demeter setup (contain secrets, use agenix or sops)
25+
26+
This is config file generated by dmtrctl init ... command invocation,
27+
contains random generated id, and token is obviously a secret obtained from demeter service during init.
28+
'';
29+
};
30+
};
31+
32+
# FIXME: not implemented yet
33+
kupo = { };
34+
35+
# FIXME: not implemented yet
36+
ogmios = { };
37+
};
38+
39+
config = mkIf cfg.node.enable {
40+
services.demeter-run = {
41+
enable = true;
42+
inherit (cfg.node) instance;
43+
inherit (cfg.node) configFile;
44+
};
45+
46+
# Register as cardano-node socket provider
47+
cardano.providers.node = {
48+
socketPath = dmtr_cfg.socket;
49+
accessGroup = dmtr_cfg.group;
50+
requires = "demeter-run.service";
51+
after = "demeter-run.service";
52+
};
53+
};
54+
}

modules/kupo.nix

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,13 @@ in
2424
after = lib.optional (config.cardano.node.enable or false) "cardano-node-socket.service" ++ lib.optional (config.cardano.ogmios.enable or false) "ogmios.service";
2525
requires = lib.optional (config.cardano.node.enable or false) "cardano-node-socket.service" ++ lib.optional (config.cardano.ogmios.enable or false) "ogmios.service";
2626
};
27+
28+
# Register as default Kupo provider for others `cardano.nix` consumers
29+
cardano.providers.kupo = {
30+
active = true;
31+
inherit (config.service.kupo) host port;
32+
after = "kupo.service";
33+
requires = "kupo.service";
34+
};
2735
};
2836
}

modules/node.nix

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,5 +111,14 @@ in
111111
chmod g+rw ${cfg.socketPath}
112112
'';
113113
};
114+
115+
# Register as default node socket for others `cardano.nix` consumers
116+
cardano.providers.node = {
117+
active = true;
118+
inherit (cfg) socketPath;
119+
accessGroup = "cardano-node";
120+
requires = "cardano-node-socket.service";
121+
after = "cardano-node-socket.service";
122+
};
114123
};
115124
}

modules/ogmios.nix

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,13 @@ in
2222
after = [ "cardano-node-socket.service" ];
2323
requires = [ "cardano-node-socket.service" ];
2424
};
25+
26+
# Register as default Ogmios provider for others `cardano.nix` consumers
27+
cardano.providers.ogmios = {
28+
active = true;
29+
inherit (config.service.ogmios) host port;
30+
after = "ogmios.service";
31+
requires = "ogmios.service";
32+
};
2533
};
2634
}

modules/oura.nix

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ in
3131
type = "N2C";
3232
address = [
3333
"Unix"
34-
config.cardano.node.socketPath
34+
config.cardano.providers.node.socketPath
3535
];
3636
magic = config.cardano.network;
3737
};
3838
metrics.address = lib.mkIf cfg.prometheusExporter.enable "0.0.0.0:${builtins.toString cfg.prometheusExporter.port}";
3939
};
4040
};
4141

42-
systemd.services.oura = lib.mkIf (config.cardano.node.enable or false) {
43-
after = [ "cardano-node-socket.service" ];
44-
requires = [ "cardano-node-socket.service" ];
42+
systemd.services.oura = lib.mkIf config.cardano.providers.node.active {
43+
after = [ config.cardano.providers.node.after ];
44+
requires = [ config.cardano.providers.node.requires ];
4545
};
4646
};
4747
}

0 commit comments

Comments
 (0)