Skip to content

Commit d538ea3

Browse files
committed
secrets: expose generateSecretsScript
This is particularly helpful for Flake users. Contents in `secretsScriptLib` are reused by the next commit.
1 parent e504def commit d538ea3

File tree

2 files changed

+63
-2
lines changed

2 files changed

+63
-2
lines changed

helper/makeShell.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ pkgs.stdenv.mkDerivation {
8585
config="${cfgDir}/configuration.nix"
8686
fi
8787
genSecrets=$(nix-build --no-out-link -I nixos-config="$config" \
88-
'<nixpkgs/nixos>' -A config.nix-bitcoin.generateSecretsScript)
88+
'<nixpkgs/nixos>' -A config.nix-bitcoin.generateSecretsScriptImpl)
8989
mkdir -p "${cfgDir}/secrets"
9090
(cd "${cfgDir}/secrets"; $genSecrets)
9191
)}

modules/secrets/secrets.nix

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,67 @@ let
7171
};
7272

7373
generateSecretsScript = mkOption {
74+
readOnly = true;
75+
76+
description = mdDoc cfg.secretsScriptLib.scriptHelp;
77+
78+
default = pkgs.writers.writeBashBin "generate-secrets" ''
79+
${cfg.secretsScriptLib.gotoDestDir}
80+
${cfg.generateSecretsScriptImpl}
81+
'';
82+
defaultText = "(See source)";
83+
};
84+
85+
# Snippets for assembling generate secrets scripts
86+
secretsScriptLib = mkOption {
87+
internal = true;
88+
readOnly = true;
89+
default = {
90+
scriptHelp = ''
91+
Script to generate secrets.
92+
93+
Usage:
94+
generate-secrets
95+
96+
Writes secrets to ./secrets, if dir ./.git exists.
97+
Writes secrets to the working directory, otherwise.
98+
99+
generate-secrets <destdir>
100+
101+
Writes secrets to <destdir>
102+
'';
103+
gotoDestDir = ''
104+
set -euo pipefail
105+
106+
case ''${1:-} in
107+
-h|--help)
108+
echo '${cfg.secretsScriptLib.scriptHelp}'
109+
exit 0
110+
;;
111+
esac
112+
113+
destDir=''${1:-}
114+
115+
if [[ ! $destDir ]]; then
116+
if [[ -d .git ]]; then
117+
destDir=./secrets
118+
else
119+
destDir=.
120+
fi
121+
fi
122+
123+
echo "Writing secrets to $destDir" >&2
124+
125+
if [[ $destDir != . ]]; then
126+
${pkgs.coreutils}/bin/mkdir -p "$destDir"
127+
cd "$destDir"
128+
fi
129+
'';
130+
};
131+
};
132+
133+
# Writes secrets to PWD
134+
generateSecretsScriptImpl = mkOption {
74135
internal = true;
75136
default = let
76137
rpcauthSrc = pkgs.fetchurl {
@@ -182,7 +243,7 @@ in {
182243
cd "${cfg.secretsDir}"
183244
chown root: .
184245
chmod 0700 .
185-
${cfg.generateSecretsScript}
246+
${cfg.generateSecretsScriptImpl}
186247
''}
187248
188249
setupSecret() {

0 commit comments

Comments
 (0)