feat: add scripts

This commit is contained in:
Nickolaj Jepsen 2026-01-20 01:02:28 +01:00
parent f1d4ea06fc
commit 4e8afa2dfc
3 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,25 @@
{
pkgs,
lib,
...
}: let
makeScript = {
path,
name ? lib.removeSuffix ".bash" (builtins.baseNameOf path),
runtimeInputs ? [],
}:
pkgs.writeShellApplication {
inherit name runtimeInputs;
text = builtins.readFile path;
};
in {
environment.systemPackages = [
(makeScript {
path = ./reboot-windows.bash;
runtimeInputs = with pkgs; [
jq
systemd # for bootctl and systemctl
];
})
];
}

View file

@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Find windows entry id using bootctl
WINDOWS_ID=$(bootctl list --json=short | jq -r '.[] | select(.title != null) | select(.title | ascii_downcase | contains("windows")) | .id' | head -n 1)
if [ -z "$WINDOWS_ID" ]; then
# Fallback to checking the ID itself
WINDOWS_ID=$(bootctl list --json=short | jq -r '.[] | select(.id | ascii_downcase | contains("windows")) | .id' | head -n 1)
fi
if [ -z "$WINDOWS_ID" ]; then
echo "Error: No Windows boot entry found in systemd-boot."
exit 1
fi
echo "Setting next boot to: $WINDOWS_ID"
# Check if we have root, if not, try to use sudo
if [ "$EUID" -ne 0 ]; then
sudo bootctl set-oneshot "$WINDOWS_ID"
echo "Rebooting..."
sudo systemctl reboot
else
bootctl set-oneshot "$WINDOWS_ID"
echo "Rebooting..."
systemctl reboot
fi