feat(scripts): Add a script to easily launch a vm with port forwarding #7
4 changed files with 62 additions and 2 deletions
|
@ -1,5 +1,6 @@
|
|||
# Copyright :
|
||||
# - Tom Hubrecht <tom.hubrecht@dgnum.eu> 2023
|
||||
# - Tom Hubrecht <tom.hubrecht@dgnum.eu> 2023
|
||||
# - Maurice Debray <maurice.debray@dgnum.eu> 2023
|
||||
#
|
||||
# Ce logiciel est un programme informatique servant à déployer des
|
||||
# configurations de serveurs via NixOS.
|
||||
|
@ -44,6 +45,7 @@
|
|||
"dgn-secrets"
|
||||
"dgn-ssh"
|
||||
"dgn-web"
|
||||
"dgn-vm-variant"
|
||||
]) ++ [
|
||||
"${sources.agenix}/modules/age.nix"
|
||||
"${sources.attic}/nixos/atticd.nix"
|
||||
|
|
19
modules/dgn-vm-variant.nix
Normal file
19
modules/dgn-vm-variant.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkIf;
|
||||
|
||||
cfg = config.dgn-vmVariant;
|
||||
in
|
||||
|
||||
{
|
||||
options.dgn-vmVariant.enable = mkEnableOption "ACME settings." // { default = true; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
virtualisation.vmVariant = {
|
||||
services.resolved.dnssec = "false";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -6,7 +6,8 @@ let
|
|||
bash
|
||||
colmena
|
||||
coreutils
|
||||
git;
|
||||
git
|
||||
jq;
|
||||
};
|
||||
|
||||
mkShellScript = name: (pkgs.substituteAll ({
|
||||
|
@ -22,6 +23,7 @@ let
|
|||
|
||||
scripts = [
|
||||
"ns-update"
|
||||
"launch-vm"
|
||||
# "mk-backup-key"
|
||||
# "wg-setup"
|
||||
];
|
||||
|
|
37
scripts/launch-vm.sh
Executable file
37
scripts/launch-vm.sh
Executable file
|
@ -0,0 +1,37 @@
|
|||
#!@bash@/bin/bash
|
||||
# shellcheck shell=bash
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
MACHINE=""
|
||||
HOSTFWD=""
|
||||
|
||||
while getopts 'p:o:h' opt; do
|
||||
case "$opt" in
|
||||
p)
|
||||
HOSTFWD=",hostfwd=tcp::$OPTARG$HOSTFWD"
|
||||
;;
|
||||
|
||||
o)
|
||||
MACHINE="$OPTARG"
|
||||
;;
|
||||
|
||||
h|?)
|
||||
echo "Usage: $(basename "$0") [-p hostport-:guestport] -o MACHINE"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift "$((OPTIND -1))"
|
||||
|
||||
if [ -z "$MACHINE" ]; then echo "-o option needed"; exit 1; fi
|
||||
|
||||
DRV_PATH=$(@colmena@/bin/colmena eval --instantiate -E "{nodes, ...}: nodes.$MACHINE.config.system.build.vm")
|
||||
|
||||
echo "Realising $DRV_PATH"
|
||||
RESULT=$(nix-store -r "$DRV_PATH")
|
||||
|
||||
echo "Built $RESULT, launching VM ..."
|
||||
|
||||
"$RESULT/bin/run-$MACHINE-vm" -device e1000,netdev=net0 -netdev "user,id=net0$HOSTFWD"
|
Loading…
Reference in a new issue