Merge pull request 'add serial module to vms' (#621) from Mic92-main into main
All checks were successful
assets1 / test (push) Successful in 18s
checks-impure / test (push) Successful in 1m6s
checks / test (push) Successful in 1m36s

This commit is contained in:
clan-bot 2023-12-08 11:37:50 +00:00
commit 76c3c77886
2 changed files with 33 additions and 0 deletions

View File

@ -0,0 +1,32 @@
{ pkgs, ... }:
let
# Based on https://unix.stackexchange.com/questions/16578/resizable-serial-console-window
resize = pkgs.writeShellScriptBin "resize" ''
export PATH=${pkgs.coreutils}/bin
if [ ! -t 0 ]; then
# not a interactive...
exit 0
fi
TTY="$(tty)"
if [[ "$TTY" != /dev/ttyS* ]] && [[ "$TTY" != /dev/ttyAMA* ]] && [[ "$TTY" != /dev/ttySIF* ]]; then
# probably not a known serial console, we could make this check more
# precise by using `setserial` but this would require some additional
# dependency
exit 0
fi
old=$(stty -g)
stty raw -echo min 0 time 5
printf '\0337\033[r\033[999;999H\033[6n\0338' > /dev/tty
IFS='[;R' read -r _ rows cols _ < /dev/tty
stty "$old"
stty cols "$cols" rows "$rows"
'';
in
{
environment.loginShellInit = "${resize}/bin/resize";
# default is something like vt220... however we want to get alt least some colors...
systemd.services."serial-getty@".environment.TERM = "xterm-256color";
}

View File

@ -3,6 +3,7 @@ let
vmConfig = extendModules {
modules = [
(modulesPath + "/virtualisation/qemu-vm.nix")
./serial.nix
{
virtualisation.fileSystems.${config.clanCore.secretsUploadDirectory} = lib.mkForce {
device = "secrets";