mirror of
https://github.com/SebastianStork/nixos-config.git
synced 2026-03-22 23:29:08 +01:00
Compare commits
3 commits
a96b31d4e1
...
ec0d5b839e
| Author | SHA1 | Date | |
|---|---|---|---|
| ec0d5b839e | |||
| 2c76d23692 | |||
| d45f8cd297 |
5 changed files with 60 additions and 16 deletions
|
|
@ -30,6 +30,7 @@ _: {
|
||||||
pkgs.nebula
|
pkgs.nebula
|
||||||
pkgs.bitwarden-cli
|
pkgs.bitwarden-cli
|
||||||
self'.packages.nebula-regen-host-cert
|
self'.packages.nebula-regen-host-cert
|
||||||
|
self'.packages.nebula-regen-all-host-certs
|
||||||
];
|
];
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,18 @@
|
||||||
{ self, ... }:
|
{ self, ... }:
|
||||||
{
|
{
|
||||||
perSystem =
|
perSystem =
|
||||||
{ pkgs, lib, ... }:
|
{
|
||||||
|
self',
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
packages =
|
packages =
|
||||||
"${self}/scripts"
|
"${self}/scripts"
|
||||||
|> builtins.readDir
|
|> builtins.readDir
|
||||||
|> lib.attrNames
|
|> lib.attrNames
|
||||||
|> lib.map (name: name |> lib.removeSuffix ".nix")
|
|> lib.map (name: name |> lib.removeSuffix ".nix")
|
||||||
|> self.lib.genAttrs (name: import "${self}/scripts/${name}.nix" { inherit pkgs; });
|
|> self.lib.genAttrs (name: import "${self}/scripts/${name}.nix" { inherit self' pkgs lib; });
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs }:
|
{ pkgs, ... }:
|
||||||
pkgs.writeShellApplication {
|
pkgs.writeShellApplication {
|
||||||
name = "install-anywhere";
|
name = "install-anywhere";
|
||||||
|
|
||||||
|
|
@ -17,6 +17,7 @@ pkgs.writeShellApplication {
|
||||||
host="$1"
|
host="$1"
|
||||||
destination="$2"
|
destination="$2"
|
||||||
root="$(mktemp --directory)"
|
root="$(mktemp --directory)"
|
||||||
|
trap 'rm -rf "$root"' EXIT
|
||||||
|
|
||||||
impermanence="$(nix eval ".#nixosConfigurations.$host.config.custom.persistence.enable")"
|
impermanence="$(nix eval ".#nixosConfigurations.$host.config.custom.persistence.enable")"
|
||||||
if [ "$impermanence" = true ]; then
|
if [ "$impermanence" = true ]; then
|
||||||
|
|
@ -51,7 +52,5 @@ pkgs.writeShellApplication {
|
||||||
--extra-files "$root" \
|
--extra-files "$root" \
|
||||||
--flake ".#$host" \
|
--flake ".#$host" \
|
||||||
--target-host "$destination"
|
--target-host "$destination"
|
||||||
|
|
||||||
rm -rf "$root"
|
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
35
scripts/nebula-regen-all-host-certs.nix
Normal file
35
scripts/nebula-regen-all-host-certs.nix
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
self',
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "nebula-regen-all-host-certs";
|
||||||
|
|
||||||
|
runtimeInputs = [
|
||||||
|
pkgs.bitwarden-cli
|
||||||
|
pkgs.jq
|
||||||
|
];
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
hosts="$(nix eval .#nixosConfigurations --apply 'builtins.attrNames' --json | jq -r '.[]')"
|
||||||
|
|
||||||
|
if ! declare -px BW_SESSION >/dev/null 2>&1; then
|
||||||
|
BW_SESSION="$(bw unlock --raw || bw login --raw)"
|
||||||
|
export BW_SESSION
|
||||||
|
fi
|
||||||
|
|
||||||
|
ca_key="$(mktemp)"
|
||||||
|
chmod 600 "$ca_key"
|
||||||
|
trap 'rm -f "$ca_key"' EXIT
|
||||||
|
bw get notes 'nebula ca-key' > "$ca_key"
|
||||||
|
|
||||||
|
for host in $hosts; do
|
||||||
|
echo "Regenerating certificate for $host..."
|
||||||
|
${lib.getExe self'.packages.nebula-regen-host-cert} "$host" "$ca_key"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Done!"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs }:
|
{ pkgs, ... }:
|
||||||
pkgs.writeShellApplication {
|
pkgs.writeShellApplication {
|
||||||
name = "nebula-regen-host-cert";
|
name = "nebula-regen-host-cert";
|
||||||
|
|
||||||
|
|
@ -8,8 +8,8 @@ pkgs.writeShellApplication {
|
||||||
];
|
];
|
||||||
|
|
||||||
text = ''
|
text = ''
|
||||||
if [[ $# -ne 1 ]]; then
|
if [[ $# -lt 1 ]] || [[ $# -gt 2 ]]; then
|
||||||
echo "Usage: $0 <host>"
|
echo "Usage: $0 <host> [<ca-key-path>]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -20,15 +20,19 @@ pkgs.writeShellApplication {
|
||||||
host_cert="$(nix eval --raw ".#nixosConfigurations.$host.config.custom.services.nebula.certificatePath")"
|
host_cert="$(nix eval --raw ".#nixosConfigurations.$host.config.custom.services.nebula.certificatePath")"
|
||||||
host_cert="''${host_cert#*-source/}"
|
host_cert="''${host_cert#*-source/}"
|
||||||
|
|
||||||
if ! declare -px BW_SESSION >/dev/null 2>&1; then
|
if [[ $# -eq 2 ]]; then
|
||||||
BW_SESSION="$(bw unlock --raw || bw login --raw)"
|
ca_key="$2"
|
||||||
export BW_SESSION
|
else
|
||||||
fi
|
if ! declare -px BW_SESSION >/dev/null 2>&1; then
|
||||||
|
BW_SESSION="$(bw unlock --raw || bw login --raw)"
|
||||||
|
export BW_SESSION
|
||||||
|
fi
|
||||||
|
|
||||||
ca_key="$(mktemp)"
|
ca_key="$(mktemp)"
|
||||||
chmod 600 "$ca_key"
|
chmod 600 "$ca_key"
|
||||||
trap 'rm -f "$ca_key"' EXIT
|
trap 'rm -f "$ca_key"' EXIT
|
||||||
bw get notes 'nebula ca-key' > "$ca_key"
|
bw get notes 'nebula ca-key' > "$ca_key"
|
||||||
|
fi
|
||||||
|
|
||||||
rm -f "$host_cert"
|
rm -f "$host_cert"
|
||||||
nebula-cert sign -name "$host" -networks "$address" -ca-crt "$ca_cert" -ca-key "$ca_key" -in-pub "$host_pub" -out-crt "$host_cert"
|
nebula-cert sign -name "$host" -networks "$address" -ca-crt "$ca_cert" -ca-key "$ca_key" -in-pub "$host_pub" -out-crt "$host_cert"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue