2019-11-27 13:04:26 +00:00
|
|
|
{
|
2018-11-13 23:44:54 +00:00
|
|
|
network.description = "Bitcoin Core node";
|
|
|
|
|
2018-12-06 11:33:13 +00:00
|
|
|
bitcoin-node =
|
2019-11-27 13:04:19 +00:00
|
|
|
{ config, pkgs, lib, ... }: {
|
2019-11-27 13:04:18 +00:00
|
|
|
imports = [ ../configuration.nix ];
|
|
|
|
|
2020-01-12 19:52:38 +00:00
|
|
|
deployment.keys = builtins.mapAttrs (n: v: {
|
|
|
|
keyFile = "${toString ../secrets}/${n}";
|
2020-01-12 19:52:39 +00:00
|
|
|
destDir = config.nix-bitcoin.secretsDir;
|
2020-01-12 19:52:38 +00:00
|
|
|
inherit (v) user group permissions;
|
|
|
|
}) config.nix-bitcoin.secrets;
|
2019-11-27 13:04:19 +00:00
|
|
|
|
|
|
|
# nixops makes the secrets directory accessible only for users with group 'key'.
|
|
|
|
# For compatibility with other deployment methods besides nixops, we forego the
|
|
|
|
# use of the 'key' group and make the secrets dir world-readable instead.
|
|
|
|
# This is safe because all containing files have their specific private
|
|
|
|
# permissions set.
|
|
|
|
systemd.services.allowSecretsDirAccess = {
|
|
|
|
requires = [ "keys.target" ];
|
|
|
|
after = [ "keys.target" ];
|
2020-01-12 19:52:39 +00:00
|
|
|
script = "chmod o+x ${config.nix-bitcoin.secretsDir}";
|
2019-11-27 13:04:19 +00:00
|
|
|
serviceConfig.Type = "oneshot";
|
|
|
|
};
|
|
|
|
|
|
|
|
systemd.targets.nix-bitcoin-secrets = {
|
|
|
|
requires = [ "allowSecretsDirAccess.service" ];
|
|
|
|
after = [ "allowSecretsDirAccess.service" ];
|
|
|
|
};
|
2019-11-27 13:04:18 +00:00
|
|
|
};
|
2018-11-13 23:44:54 +00:00
|
|
|
}
|