diff options
| author | Miquel Sabaté Solà <mssola@mssola.com> | 2025-10-24 11:59:28 +0200 |
|---|---|---|
| committer | Miquel Sabaté Solà <mssola@mssola.com> | 2025-10-24 11:59:28 +0200 |
| commit | 7e52878f0aaad5256a01581f11338c47d69d5fbb (patch) | |
| tree | 22a2a56cf93260b9370438a548c2e772c83ad238 /.config | |
| parent | cd2a1bb748ad0f8ba255f136e81afb6676ffad4c (diff) | |
| download | dotfiles-7e52878f0aaad5256a01581f11338c47d69d5fbb.tar.gz dotfiles-7e52878f0aaad5256a01581f11338c47d69d5fbb.zip | |
kbuild: move profiles into .config/kbuild
Instead of inlining shell scripts inside of the `kbuild` one, move them
into subdirectories inside of the new $HOME/.config/kbuild
directory. Each subdirectory will match a profile (i.e. no more hacky
hardcoded values on `kbuild`), and it will contain the relevant
install.sh/uninstall.sh files which matter for that profile.
This also allows us more flexibility when it comes to GRUB
configuration (e.g. picking the right UUID value without having to
re-invent the wheel via esoteric new parameters).
Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Diffstat (limited to '.config')
| -rw-r--r-- | .config/kbuild/vf2/install.sh | 78 | ||||
| -rw-r--r-- | .config/kbuild/vf2/uninstall.sh | 42 |
2 files changed, 120 insertions, 0 deletions
diff --git a/.config/kbuild/vf2/install.sh b/.config/kbuild/vf2/install.sh new file mode 100644 index 0000000..355e5dd --- /dev/null +++ b/.config/kbuild/vf2/install.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +# Copyright (C) 2025-Ω Miquel Sabaté Solà <mikisabate@gmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -ex + +## +# Ensure you are root and dependencies are met. + +if [ "$EUID" -ne 0 ];then + echo "kbuild (error): run this as root." + exit 1 +fi + +if [ ! -f /usr/bin/dracut ]; then + echo "kbuild (error): you need either 'dracut'." + exit 1 +fi + +## +# Copy files into filesystem and generate initramfs. + +# Regular installs. +cp -rv usr / +cp -rv boot / + +# Some environments like 'update-initramfs' on Ubuntu expect files to be placed +# under a special directory in /usr/lib/firmware. Pull this trick now. +mkdir -p /usr/lib/firmware/$name/device-tree/ +cp -rv boot/dtbs/$name/* /usr/lib/firmware/$name/device-tree/ + +# And run dracut/update-initramfs. +dracut --kver=$name -f + +## +# Provide hints on how to configure the bootloader. + +if [ -z "$EDITOR" ]; then + EDITOR=vi +fi + +cat <<EXT >/etc/grub.d/40_custom +#!/bin/sh +exec tail -n +3 \$0 + +### +### NOTE: generated by kbuild. +### + +menuentry 'openSUSE on Linux $name' --class opensuse --class gnu-linux --class gnu --class os \$menuentry_id_option 'gnulinux-simple-22391c4c-ad76-c05c-84b3-535dc2efaf97' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_gpt + insmod btrfs + search --no-floppy --fs-uuid --set=root 22391c4c-ad76-c05c-84b3-535dc2efaf97 + echo 'Loading Linux $name ...' + linux /boot/vmlinuz-$name root=UUID=22391c4c-ad76-c05c-84b3-535dc2efaf97 \${extra_cmdline} security=selinux selinux=1 loglevel=3 splash=silent systemd.show_status=1 + echo 'Loading initial ramdisk ...' + initrd /boot/initrd-$name +} +EXT + +# Edit the configuration file we just produced just in case and update it. +$EDITOR /etc/grub.d/40_custom +grub2-mkconfig -o /boot/grub2/grub.cfg diff --git a/.config/kbuild/vf2/uninstall.sh b/.config/kbuild/vf2/uninstall.sh new file mode 100644 index 0000000..4227b52 --- /dev/null +++ b/.config/kbuild/vf2/uninstall.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# Copyright (C) 2025-Ω Miquel Sabaté Solà <mikisabate@gmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -ex + +if [ "$EUID" -ne 0 ];then + echo "kbuild (error): run this as root." + exit 1 +fi + +if [ ! -f files.txt ]; then + echo "kbuild (error): there must be a 'files.txt' file." + exit 1 +fi + +xargs rm -f < files.txt +rm -rf /usr/lib/modules/$name +rm -rf /boot/dtbs/$name +rm -rf /usr/lib/firmware/$name +rm -f /boot/initrd-$name +rm -f /boot/initrd.img-$name + +if [ -z "$EDITOR" ]; then + EDITOR=vi +fi + +# Edit the configuration file we just produced just in case and update it. +$EDITOR /etc/grub.d/40_custom +grub2-mkconfig -o /boot/grub2/grub.cfg |
