From 2f26f7adfd68629f5301db6a58d51ddf92b86791 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Mon, 8 Jul 2024 02:47:49 +0200 Subject: [PATCH] Convert Arch setup script to `fish` --- profiles/ManuSurface/Arch/setup.fish | 7 +++ profiles/ManuSurface/Arch/setup.sh | 11 ---- scripts/Arch/OS/setup.fish | 79 ++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 11 deletions(-) create mode 100755 profiles/ManuSurface/Arch/setup.fish delete mode 100755 profiles/ManuSurface/Arch/setup.sh create mode 100644 scripts/Arch/OS/setup.fish diff --git a/profiles/ManuSurface/Arch/setup.fish b/profiles/ManuSurface/Arch/setup.fish new file mode 100755 index 00000000..5ea3d860 --- /dev/null +++ b/profiles/ManuSurface/Arch/setup.fish @@ -0,0 +1,7 @@ +#!/bin/env fish +CONFIG_MODULE="$(status dirname)/config.nix" \ +ARCH_HOSTNAME="manu-surface" \ +USER_DISPLAYNAME="Manuel Thalmann" \ + . "$(status dirname)/../../../scripts/Arch/OS/setup.fish"; + +pacstrap -K "/mnt" linux-firmware-marvell; diff --git a/profiles/ManuSurface/Arch/setup.sh b/profiles/ManuSurface/Arch/setup.sh deleted file mode 100755 index a57fadd8..00000000 --- a/profiles/ManuSurface/Arch/setup.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -e -pushd "${BASH_SOURCE%/*}" > /dev/null; - -CONFIG_MODULE="./config.nix" \ -ARCH_HOSTNAME="manu-surface" \ -USER_DISPLAYNAME="Manuel Thalmann" \ - . "../../../scripts/Arch/OS/setup.sh"; - -pacstrap -K "/mnt" linux-firmware-marvell; - -popd > /dev/null; diff --git a/scripts/Arch/OS/setup.fish b/scripts/Arch/OS/setup.fish new file mode 100644 index 00000000..151dcabb --- /dev/null +++ b/scripts/Arch/OS/setup.fish @@ -0,0 +1,79 @@ +#!/bin/env fish +begin + set -l dir (status dirname) + + set -q CONFIG_MODULE || set -l CONFIG_MODULE "$dir/config.nix" + set -q ARCH_TIMEZONE || set -l ARCH_TIMEZONE "Europe/Zurich" + set -q ARCH_MOUNT_ROOT || set -l ARCH_MOUNT_ROOT ("$dir/../../eval-module.sh" "$CONFIG_MODULE" partition.rootDir --raw) + set -q ARCH_LANG || set -l ARCH_LANG en_US.UTF-8 + set -q ARCH_KEYMAP || set -l ARCH_KEYMAP de_CH-latin1 + set -q ARCH_X11_KEYMAP || set -l ARCH_X11_KEYMAP ch + set -q LOCALE_PATTERN || set -l LOCALE_PATTERN "\(de_CH\|en_US\)" + + set -q USER_NAME || set -l USER_NAME manuel + set -q USER_DISPLAYNAME + and set -q USER_GROUPS || set -l USER_GROUPS + and begin + set -l projectRoot (realpath "$dir/../../..") + set -l projectName (basename "$projectRoot") + set -l relativeDir (realpath --relative-to "$projectRoot" "$dir") + set -l tempRoot "/opt/$(basename "$projectName")" + set -l tempDir "$tempRoot/$relativeDir" + + loadkeys "$ARCH_KEYMAP" + and timedatectl set-timezone "$ARCH_TIMEZONE" + + and CONFIG_MODULE=$CONFIG_MODULE bash "$dir/../../Common/OS/partition.sh" + + and pacman-key --init + and pacman-key --populate + + and pacstrap -K "$ARCH_MOUNT_ROOT" \ + base \ + linux \ + linux-firmware \ + networkmanager \ + man-db \ + man-pages \ + texinfo \ + ; + + and "$dir/../../copy-repo.fish" "$ARCH_MOUNT_ROOT$tempRoot" + and genfstab -U "$ARCH_MOUNT_ROOT" >> "$ARCH_MOUNT_ROOT/etc/fstab" + + and arch-chroot "$ARCH_MOUNT_ROOT" systemctl enable NetworkManager + + and arch-chroot "$ARCH_MOUNT_ROOT" ln -sf "/usr/share/zoneinfo/$ARCH_TIMEZONE" /etc/localtime + and arch-chroot "$ARCH_MOUNT_ROOT" hwclock --systohc + + and arch-chroot "$ARCH_MOUNT_ROOT" sed -i "s/^#\?\($LOCALE_PATTERN.*\)\$/\1/" /etc/locale.gen + and arch-chroot "$ARCH_MOUNT_ROOT" locale-gen + + and begin + echo "LANG=de_CH.UTF-8" + echo "LANGUAGE=en_US.UTF-8" + echo "LC_MESSAGES=en_US.UTF-8" + end | arch-chroot "$ARCH_MOUNT_ROOT" tee /etc/locale.conf > /dev/null + + and echo "KEYMAP=$ARCH_KEYMAP" | arch-chroot "$ARCH_MOUNT_ROOT" tee /etc/vconsole.conf > /dev/null + and echo "$ARCH_HOSTNAME" | arch-chroot "$ARCH_MOUNT_ROOT" tee /etc/hostname > /dev/null + + and arch-chroot "$ARCH_MOUNT_ROOT" mkinitcpio -P + and arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/../Software/GRUB/install.sh" + and arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/../Software/sudo/install.sh" + and pacstrap -K "$ARCH_MOUNT_ROOT" git + + and USER_NAME="$USER_NAME" \ + USER_DISPLAYNAME="$USER_DISPLAYNAME" \ + USER_GROUPS="$USER_GROUPS" \ + arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/user.sh" + + and set -l serviceName set-keymap.service + and set -l serviceFile "$ARCH_MOUNT_ROOT/etc/systemd/system/$serviceName" + and cp "$dir/$serviceName" "$serviceFile" + and systemd-nspawn -D "$ARCH_MOUNT_ROOT" systemctl enable "$serviceName" + and systemd-nspawn -bD "$ARCH_MOUNT_ROOT" -E "ARCH_X11_KEYMAP=$ARCH_X11_KEYMAP" + and systemd-nspawn -D "$ARCH_MOUNT_ROOT" systemctl disable "$serviceName" + and rm "$serviceFile" + end +end