Rename to Arkanium

This commit is contained in:
Dennis ten Hoove 2023-08-09 08:09:20 +02:00
parent 14f6f930c1
commit c3d03747a5
8 changed files with 193 additions and 188 deletions

View file

@ -8,7 +8,7 @@
# Print manual if no parameters provided or invalid amount of parameters is provided # Print manual if no parameters provided or invalid amount of parameters is provided
if [[ ! -n $1 || -n $2 ]]; then if [[ ! -n $1 || -n $2 ]]; then
cat <<- END cat <<- END
Usage: bttrfs-build [variant] Usage: arkanium-build [variant]
Variants: Variants:
archlinux Plain Arch Linux TTY image archlinux Plain Arch Linux TTY image
arkanelinux Arkane Linux GNOME image arkanelinux Arkane Linux GNOME image
@ -16,7 +16,7 @@ if [[ ! -n $1 || -n $2 ]]; then
Variants are loaded based on their directory names, the ones listed here Variants are loaded based on their directory names, the ones listed here
are included by default. For information on the exact configuration of are included by default. For information on the exact configuration of
these variants or to create your own see /etc/bttrfs/variants. these variants or to create your own see /etc/arkanium/variants.
END END
exit 0 exit 0
fi fi
@ -24,9 +24,9 @@ fi
## Set common variables ## Set common variables
# #
declare -r workdir='/var/tmp/rootfs' declare -r workdir='/var/tmp/rootfs'
declare -r configs_dir='./bttrfs/' declare -r configs_dir='./arkanium/'
declare -r variant="$configs_dir/variants/$1" declare -r variant="$configs_dir/variants/$1"
declare -r type=$(cat $variant/type) declare -r type=$(cat .arkanium-build.d/$variant/type)
declare -r output_target="$(pwd)/" declare -r output_target="$(pwd)/"
## Common functions ## Common functions
@ -42,7 +42,7 @@ cleanup_and_quit () {
btrfs property set -ts $workdir/var ro false btrfs property set -ts $workdir/var ro false
# Remove temporary btrfs volumes # Remove temporary btrfs volumes
[[ ! -n $BTTRFS_NO_CLEANUP ]] && btrfs subvolume delete $workdir/etc \ [[ ! -n $arkanium_NO_CLEANUP ]] && btrfs subvolume delete $workdir/etc \
$workdir/var \ $workdir/var \
$workdir 2> /dev/null $workdir 2> /dev/null
@ -70,7 +70,7 @@ for prog in btrfs pacstrap; do
done done
# Check if requested variant exists # Check if requested variant exists
[[ ! -d $variant ]] && [[ ! -d arkanium-build.d/$variant ]] &&
printf '\e[1;31m<#>\e[0m\e[1m The requested variant does not exist\e[0m\n' && printf '\e[1;31m<#>\e[0m\e[1m The requested variant does not exist\e[0m\n' &&
exit 1 exit 1
@ -80,13 +80,13 @@ done
if [[ $type == 'archlinux' ]]; then if [[ $type == 'archlinux' ]]; then
# Ensure base.list exists, if not error and quit # Ensure base.list exists, if not error and quit
[[ ! -e $variant/base.list ]] && [[ ! -e arkanium-build.d/$variant/base.list ]] &&
printf "\e[1;31m<#>\e[0m\e[1m The required file 'base.list' is not preset in $(readlink -m $variant)\e[0m\n" && printf "\e[1;31m<#>\e[0m\e[1m The required file 'base.list' is not preset in arkanium-build.d/$(readlink -m $variant)\e[0m\n" &&
exit 1 exit 1
# Check if optional packages.list file exists, if not notify and continue # Check if optional packages.list file exists, if not notify and continue
[[ ! -e $variant/packages.list ]] && [[ ! -e arkanium-build.d/$variant/packages.list ]] &&
printf "\e[1;34m-->\e[0m\e[1m The optional file 'packages.list' is not preset in $(readlink -m $variant), running without it\e[0m\n" && printf "\e[1;34m-->\e[0m\e[1m The optional file 'packages.list' is not preset in arkanium-build.d/$(readlink -m $variant), running without it\e[0m\n" &&
skip_secondary_package_installation=1 skip_secondary_package_installation=1
printf '\e[1;34m-->\e[0m\e[1m Started Arch linux image build\e[0m\n' printf '\e[1;34m-->\e[0m\e[1m Started Arch linux image build\e[0m\n'
@ -98,22 +98,36 @@ if [[ $type == 'archlinux' ]]; then
btrfs subvolume create $workdir/var || cleanup_and_quit "Failed to create btrfs subvolume $(readlink -m $workdir/var)" btrfs subvolume create $workdir/var || cleanup_and_quit "Failed to create btrfs subvolume $(readlink -m $workdir/var)"
# Read base package list and install base system # Read base package list and install base system
readarray base_packages < $variant/base.list readarray base_packages < arkanium-build.d/$variant/base.list
printf "\e[1;34m-->\e[0m\e[1m Installing base packages\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Installing base packages\e[0m\n"
pacstrap $workdir ${base_packages[*]} || cleanup_and_quit 'Failed to install secondary package list' pacstrap $workdir ${base_packages[*]} || cleanup_and_quit 'Failed to install secondary package list'
# Read package list and install secondary system components, skip if not used # Read package list and install secondary system components, skip if not used
if [[ ! -n skip_secondary_package_installation ]]; then if [[ ! -n skip_secondary_package_installation ]]; then
printf '\e[1;34m-->\e[0m\e[1m Installing secondary packages...\e[0m\n' printf '\e[1;34m-->\e[0m\e[1m Installing secondary packages...\e[0m\n'
readarray packages < $variant/packages.list readarray packages < arkanium-build.d/$variant/packages.list
arch-chroot $workdir pacman -S --noconfirm ${packages[*]} || cleanup_and_quit 'Failed to install base packages' arch-chroot $workdir pacman -S --noconfirm ${packages[*]} || cleanup_and_quit 'Failed to install base packages'
fi fi
# If rootfs directory exists in variant copy it to the temporary subvolume # If overlay directory exists in variant copy it to the temporary subvolume
if [[ -d $variant/rootfs ]]; then if [[ -d arkanium-build.d/$variant/overlay ]]; then
cp -rv $variant/rootfs/* $workdir/ cp -rv arkanium-build.d/$variant/overlay/* $workdir/
fi fi
# Enable systemd services if requested
if [[ -e arkanium-build.d/$variant/systemd.services ]]; then
readarray services < "arkanium-build.d/$variant/systemd.services"
for service in services; do
arch-chroot $workdir systemctl enable $service
done
fi
# Clear pacman cache
arch-chroot $workdir pacman --noconfirm -Scc
# Remove subvolumes created by systemd # Remove subvolumes created by systemd
[[ -d $workdir/var/lib/portables ]] && [[ -d $workdir/var/lib/portables ]] &&
printf "\e[1;34m-->\e[0m\e[1m Removing systemd subvolume var/lib/portables\e[0m\n" && printf "\e[1;34m-->\e[0m\e[1m Removing systemd subvolume var/lib/portables\e[0m\n" &&

View file

@ -0,0 +1,6 @@
base
linux
linux-firmware
amd-ucode
intel-ucode
arkane-keyring

View file

@ -0,0 +1,92 @@
amberol
apparmor
arch-install-scripts
arkane-application-cleaner
arkane-wallpapers
baobab
bluez
bluez-cups
bluez-plugins
bluez-utils
btrfs-progs
celluloid
cheese
cups
cups-pdf
dosfstools
evince
f2fs-tools
firefox
firefox-tweaks-arkane
flatpak
gdm
gnome-backgrounds
gnome-boxes
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-connections
gnome-console
gnome-console
gnome-contacts
gnome-control-center
gnome-disk-utility
gnome-firmware
gnome-font-viewer
gnome-logs
gnome-maps
gnome-photos
gnome-screenshot
gnome-shell
gnome-software
gnome-sound-recorder
gnome-system-monitor
gnome-text-editor
gnome-weather
gst-plugin-pipewire
gst-plugins-base
gst-plugins-good
ibus-typing-booster
libva-mesa-driver
loupe
man-db
mesa
mesa-tweaks-arkane
mesa-vdpau
mkinitcpio
mkinitcpio-archiso
nautilus
neovim
networkmanager
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
openssh
pacman-contrib
pipewire
pipewire-alsa
pipewire-audio
pipewire-jack
pipewire-pulse
plymouth
power-profiles-daemon
pv
qemu-guest-agent
simple-scan
skel-arkane
sof-firmware
spice-vdagent
sudo
switcheroo-control
terminus-font
vulkan-intel
vulkan-mesa-layers
vulkan-radeon
wireplumber
xdg-desktop-portal-gnome
xdg-user-dirs
zsh
zsh-autosuggestions
zsh-completions
zsh-syntax-highlighting

View file

@ -0,0 +1,8 @@
NetworkManager.service
apparmor.service
bluetooth.service
cups.service
fstrim.timer
gdm.service
paccache.timer
systemd-boot-update.service

View file

@ -8,12 +8,12 @@
# Print manual if no parameters provided or invalid amount of parameters is provided # Print manual if no parameters provided or invalid amount of parameters is provided
if [[ ! -n $1 || -n $2 ]]; then if [[ ! -n $1 || -n $2 ]]; then
cat <<- END cat <<- END
Usage: bttrfs-deploy <action> [target] Usage: arkanium-deploy <action> [target]
Actions: Actions:
update Check for updates, optionally provide a target, if no target provided it defaults to primary update Check for updates, optionally provide a target, if no target provided it defaults to primary
deploy Deploy a new or update an existing deployment deploy Deploy a new or update an existing deployment
init Initialize bttrfs on a new system init Initialize Arkanium on a new system
teardown Remove all bttrfs-deploy related files and folders teardown Remove all Arkanium-deploy related files and folders
get-available List available packages in repo get-available List available packages in repo
END END
exit 0 exit 0
@ -21,10 +21,10 @@ fi
## Set common variables ## Set common variables
# #
declare -r bttrfs_dir='/bttrfs/' declare -r arkanium_dir='/arkanium/'
declare -r bttrfs_deployment_dir="$bttrfs_dir/deployments" declare -r arkanium_deployment_dir="$arkanium_dir/deployments"
# FIXME: Automatically filter trailing / # FIXME: Automatically filter trailing /
declare -r repo_url='https://repo.arkanelinux.org/bttrfs-test' declare -r repo_url='https://repo.arkanelinux.org/arkanium-test'
declare -r repo_default_image='arkanelinux' declare -r repo_default_image='arkanelinux'
declare -r os_name='arkane' declare -r os_name='arkane'
@ -38,7 +38,7 @@ cleanup_and_quit () {
# Remove temporary btrfs volumes # Remove temporary btrfs volumes
# ONLY IF CUSTOM DEFINED? # ONLY IF CUSTOM DEFINED?
#[[ ! -n $BTTRFS_NO_CLEANUP || ! -n $subvol_created ]] && #[[ ! -n $arkanium_NO_CLEANUP || ! -n $subvol_created ]] &&
# btrfs subvolume delete $workdir 2> /dev/null # btrfs subvolume delete $workdir 2> /dev/null
# Quit program if argument provided to function # Quit program if argument provided to function
@ -66,41 +66,41 @@ done
## Core functions ## Core functions
# #
# Initialize the system for bttrfs # Initialize the system for arkanium
init () { init () {
# Ensure systemd-boot is installed before continuing, for it is the only thing we support # Ensure systemd-boot is installed before continuing, for it is the only thing we support
bootctl is-installed || cleanup_and_quit 'systemd-boot seems to not be installed' bootctl is-installed || cleanup_and_quit 'systemd-boot seems to not be installed'
printf '\e[1;34m-->\e[0m\e[1m Initializing bttrfs\e[0m\n' printf '\e[1;34m-->\e[0m\e[1m Initializing arkanium\e[0m\n'
[[ -d $bttrfs_dir ]] && cleanup_and_quit "$bttrfs_dir already exists" [[ -d $arkanium_dir ]] && cleanup_and_quit "$arkanium_dir already exists"
# Create the /bttrfs subvolume # Create the /arkanium subvolume
printf "\e[1;34m-->\e[0m\e[1m Creating $(readlink -m $bttrfs_dir) subvolume\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Creating $(readlink -m $arkanium_dir) subvolume\e[0m\n"
btrfs subvolume create $bttrfs_dir || cleanup_and_quit "Failed to create btrfs subvolume" btrfs subvolume create $arkanium_dir || cleanup_and_quit "Failed to create btrfs subvolume"
# Create directory structure # Create directory structure
printf "\e[1;34m-->\e[0m\e[1m Creating directory structure\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Creating directory structure\e[0m\n"
mkdir -pv $(readlink -m $bttrfs_dir/deployments) \ mkdir -pv $(readlink -m $arkanium_dir/deployments) \
$(readlink -m $bttrfs_dir/deployments/primary_a) \ $(readlink -m $arkanium_dir/deployments/primary_a) \
$(readlink -m $bttrfs_dir/deployments/primary_b) \ $(readlink -m $arkanium_dir/deployments/primary_b) \
$(readlink -m $bttrfs_dir/data) \ $(readlink -m $arkanium_dir/data) \
$(readlink -m $bttrfs_dir/cache) \ $(readlink -m $arkanium_dir/cache) \
$(readlink -m $bttrfs_dir/shared) || $(readlink -m $arkanium_dir/shared) ||
cleanup_and_quit "Failed to create /bttrfs and related directories" cleanup_and_quit "Failed to create /arkanium and related directories"
# Add home shared subvolume and make writable # Add home shared subvolume and make writable
btrfs subvolume create $(readlink -m ${bttrfs_dir}/shared/home) || cleanup_and_quit "Failed to create home subvolume" btrfs subvolume create $(readlink -m ${arkanium_dir}/shared/home) || cleanup_and_quit "Failed to create home subvolume"
btrfs property set -f -ts $(readlink -m ${bttrfs_dir}/shared/home) btrfs property set -f -ts $(readlink -m ${arkanium_dir}/shared/home)
# Write default config file # Write default config file
printf "\e[1;34m-->\e[0m\e[1m Adding default config file\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Adding default config file\e[0m\n"
cat <<- END > $bttrfs_dir/config cat <<- END > $arkanium_dir/config
# Primary filesystem operating system # Primary filesystem operating system
primary_os='${repo_default_image}' primary_os='${repo_default_image}'
# Write /bttrfs/overlay overlay to root or etc # Write /arkanium/overlay overlay to root or etc
enable_overlay=0 enable_overlay=0
# Do not install additional packages defined customize # Do not install additional packages defined customize
@ -116,7 +116,7 @@ init () {
initrd /amd-ucode.img initrd /amd-ucode.img
initrd /intel-ucode.img initrd /intel-ucode.img
initrd /initramfs-linux.img initrd /initramfs-linux.img
options root="LABEL=arkane_root" rootflags=subvol=bttrfs/deployments/primary_a/rootfs rw options root="LABEL=arkane_root" rootflags=subvol=arkanium/deployments/primary_a/rootfs rw
END END
cat <<- END > /boot/loader/entries/${os_name}-primary-b.conf cat <<- END > /boot/loader/entries/${os_name}-primary-b.conf
@ -125,7 +125,7 @@ init () {
initrd /amd-ucode.img initrd /amd-ucode.img
initrd /intel-ucode.img initrd /intel-ucode.img
initrd /initramfs-linux.img initrd /initramfs-linux.img
options root="LABEL=arkane_root" rootflags=subvol=bttrfs/deployments/primary_b/rootfs rw options root="LABEL=arkane_root" rootflags=subvol=arkanium/deployments/primary_b/rootfs rw
END END
exit 0 exit 0
@ -135,12 +135,12 @@ init () {
teardown () { teardown () {
cat <<- END cat <<- END
WARNING: Removing bttrfs may leave your system in an unbootable state and you WARNING: Removing arkanium may leave your system in an unbootable state and you
may have to manually reconfigure your bootloader etc.. Only proceed if you know may have to manually reconfigure your bootloader etc.. Only proceed if you know
what you are doing! what you are doing!
The following changes will be made to your system; The following changes will be made to your system;
- All subvolumes under $bttrfs_dir will be deleted - All subvolumes under $arkanium_dir will be deleted
END END
@ -149,23 +149,23 @@ teardown () {
if [[ $input_confirm == 'I KNOW WHAT I AM DOING' ]]; then if [[ $input_confirm == 'I KNOW WHAT I AM DOING' ]]; then
printf '\e[1;34m-->\e[0m\e[1m Tearing down bttrfs\e[0m\n' printf '\e[1;34m-->\e[0m\e[1m Tearing down arkanium\e[0m\n'
# Quit with error if $bttrfs_dir does not exist # Quit with error if $arkanium_dir does not exist
if [[ ! -d $bttrfs_dir ]]; then if [[ ! -d $arkanium_dir ]]; then
printf "\e[1;31m<#>\e[0m $(readlink -m $bttrfs_dir) does not exist, there is nothing to tear down" printf "\e[1;31m<#>\e[0m $(readlink -m $arkanium_dir) does not exist, there is nothing to tear down"
exit 1 exit 1
fi fi
# Remove all nested subvolumes in $bttrfs_dir # Remove all nested subvolumes in $arkanium_dir
for volume in $(btrfs subvolume list $bttrfs_dir | grep -oE '[^ ]+$'); do for volume in $(btrfs subvolume list $arkanium_dir | grep -oE '[^ ]+$'); do
btrfs property set -f -ts $(readlink -m $bttrfs_dir/$volume) ro false btrfs property set -f -ts $(readlink -m $arkanium_dir/$volume) ro false
btrfs subvolume delete $(readlink -m $bttrfs_dir/$volume) btrfs subvolume delete $(readlink -m $arkanium_dir/$volume)
done done
# Remove $bttrfs_dir itself # Remove $arkanium_dir itself
btrfs property set -f -ts $(readlink -m $bttrfs_dir) ro false btrfs property set -f -ts $(readlink -m $arkanium_dir) ro false
btrfs subvolume delete $(readlink -m $bttrfs_dir) btrfs subvolume delete $(readlink -m $arkanium_dir)
# Remove bootloader files # Remove bootloader files
rm -v /boot/loader/entries/${os_name}-* rm -v /boot/loader/entries/${os_name}-*
@ -190,7 +190,7 @@ get_available () {
deploy () { deploy () {
# Load defaults from config file # Load defaults from config file
source $bttrfs_dir/config source $arkanium_dir/config
# target and version are optional, if not defined default to primary latest # target and version are optional, if not defined default to primary latest
[[ -n $2 ]] && declare -r deploy_target=$2 || declare -r deploy_target="$primary_os" [[ -n $2 ]] && declare -r deploy_target=$2 || declare -r deploy_target="$primary_os"
@ -207,20 +207,20 @@ deploy () {
data[2]=${data[2]//[$'\t\r\n']} data[2]=${data[2]//[$'\t\r\n']}
# Check if requested version is already downloaded # Check if requested version is already downloaded
if [[ -e $(readlink -m $bttrfs_dir/cache/${data[0]}.tar.${data[1]}) ]]; then if [[ -e $(readlink -m $arkanium_dir/cache/${data[0]}.tar.${data[1]}) ]]; then
printf "\e[1;34m-->\e[0m\e[1m ${data[0]} already in cache, skipping download\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m ${data[0]} already in cache, skipping download\e[0m\n"
else else
# Download the tarball # Download the tarball
wget -P $(readlink -m $bttrfs_dir/cache/) "${repo_url}/${repo_default_image}/${data[0]}.tar.${data[1]}" || wget -P $(readlink -m $arkanium_dir/cache/) "${repo_url}/${repo_default_image}/${data[0]}.tar.${data[1]}" ||
(printf "\e[1;31m<#>\e[0m Failed to download tarball\e[0m\n"; exit 1) (printf "\e[1;31m<#>\e[0m Failed to download tarball\e[0m\n"; exit 1)
fi fi
printf "\e[1;34m-->\e[0m\e[1m Validating integrity\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Validating integrity\e[0m\n"
sha1sum "$(readlink -m ${bttrfs_dir}/cache/${data[0]}.tar.${data[1]})" | sha1sum "$(readlink -m ${arkanium_dir}/cache/${data[0]}.tar.${data[1]})" |
grep "${data[3]}" || grep "${data[3]}" ||
cleanup_and_quit "Checksum does not match repo file, got $chksum\e[0m\n" cleanup_and_quit "Checksum does not match repo file, got $chksum\e[0m\n"
@ -229,52 +229,52 @@ deploy () {
# #
# Extract the root image if not yet extracted # Extract the root image if not yet extracted
printf "\e[1;34m-->\e[0m\e[1m Writing root\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Writing root\e[0m\n"
[[ ! -e $(readlink -m ${bttrfs_dir}/cache/${data[0]}.img) ]] && [[ ! -e $(readlink -m ${arkanium_dir}/cache/${data[0]}.img) ]] &&
tar -xf $(readlink -m ${bttrfs_dir}/cache/${data[0]}.tar.${data[1]}) -C $(readlink -m ${bttrfs_dir}/cache/) "${data[0]}.img" || tar -xf $(readlink -m ${arkanium_dir}/cache/${data[0]}.tar.${data[1]}) -C $(readlink -m ${arkanium_dir}/cache/) "${data[0]}.img" ||
cleanup_and_quit 'Failed to extract root' cleanup_and_quit 'Failed to extract root'
# Write the root image # Write the root image
btrfs receive -f $(readlink -m ${bttrfs_dir}/cache/${data[0]}.img) $(readlink -m ${bttrfs_dir}/deployments/primary_a/) || btrfs receive -f $(readlink -m ${arkanium_dir}/cache/${data[0]}.img) $(readlink -m ${arkanium_dir}/deployments/primary_a/) ||
cleanup_and_quit 'Failed to receive root' cleanup_and_quit 'Failed to receive root'
# Cleanup root image # Cleanup root image
rm $(readlink -m ${bttrfs_dir}/cache/${data[0]}.img) rm $(readlink -m ${arkanium_dir}/cache/${data[0]}.img)
# Ensure /var exists for mounting # Ensure /var exists for mounting
mkdir $(readlink -m ${bttrfs_dir}/) mkdir $(readlink -m ${arkanium_dir}/)
# Extract the etc image if not yet extracted # Extract the etc image if not yet extracted
printf "\e[1;34m-->\e[0m\e[1m Writing etc\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Writing etc\e[0m\n"
[[ ! -e $(readlink -m ${bttrfs_dir}/cache/${data[0]}-etc.img) ]] && [[ ! -e $(readlink -m ${arkanium_dir}/cache/${data[0]}-etc.img) ]] &&
tar -xf $(readlink -m ${bttrfs_dir}/cache/${data[0]}.tar.${data[1]}) -C $(readlink -m ${bttrfs_dir}/cache/) "${data[0]}-etc.img" || tar -xf $(readlink -m ${arkanium_dir}/cache/${data[0]}.tar.${data[1]}) -C $(readlink -m ${arkanium_dir}/cache/) "${data[0]}-etc.img" ||
cleanup_and_quit 'failed to extract etc' cleanup_and_quit 'failed to extract etc'
# Write the etc image, we have to unlock rootfs temporarily to do this # Write the etc image, we have to unlock rootfs temporarily to do this
btrfs property set -f -ts $(readlink -m ${bttrfs_dir}/deployments/primary_a/rootfs) ro false || btrfs property set -f -ts $(readlink -m ${arkanium_dir}/deployments/primary_a/rootfs) ro false ||
cleanup_and_quit 'Failed to unlock root to write etc' cleanup_and_quit 'Failed to unlock root to write etc'
btrfs receive -f $(readlink -m ${bttrfs_dir}/cache/${data[0]}-etc.img) $(readlink -m ${bttrfs_dir}/deployments/primary_a/rootfs/) || btrfs receive -f $(readlink -m ${arkanium_dir}/cache/${data[0]}-etc.img) $(readlink -m ${arkanium_dir}/deployments/primary_a/rootfs/) ||
cleanup_and_quit 'Failed to receive etc' cleanup_and_quit 'Failed to receive etc'
btrfs property set -f -ts $(readlink -m ${bttrfs_dir}/deployments/primary_a/rootfs) ro true || btrfs property set -f -ts $(readlink -m ${arkanium_dir}/deployments/primary_a/rootfs) ro true ||
cleanup_and_quit 'Failed to lock root' cleanup_and_quit 'Failed to lock root'
# Cleanup etc image # Cleanup etc image
rm $(readlink -m ${bttrfs_dir}/cache/${data[0]}-etc.img) rm $(readlink -m ${arkanium_dir}/cache/${data[0]}-etc.img)
# Overlay customizations to etc # Overlay customizations to etc
# TODO: overlay here if enabled in config file # TODO: overlay here if enabled in config file
# Extract the var image if not yet extracted # Extract the var image if not yet extracted
printf "\e[1;34m-->\e[0m\e[1m Writing var\e[0m\n" printf "\e[1;34m-->\e[0m\e[1m Writing var\e[0m\n"
[[ ! -e $(readlink -m ${bttrfs_dir}/cache/${data[0]}-var.img) ]] && [[ ! -e $(readlink -m ${arkanium_dir}/cache/${data[0]}-var.img) ]] &&
tar -xf $(readlink -m ${bttrfs_dir}/cache/${data[0]}.tar.${data[1]}) -C $(readlink -m ${bttrfs_dir}/cache/) "${data[0]}-var.img" || tar -xf $(readlink -m ${arkanium_dir}/cache/${data[0]}.tar.${data[1]}) -C $(readlink -m ${arkanium_dir}/cache/) "${data[0]}-var.img" ||
cleanup_and_quit 'failed to extract etc' cleanup_and_quit 'failed to extract etc'
# Write the var image # Write the var image
btrfs receive -f $(readlink -m ${bttrfs_dir}/cache/${data[0]}-var.img) $(readlink -m ${bttrfs_dir}/shared/) || btrfs receive -f $(readlink -m ${arkanium_dir}/cache/${data[0]}-var.img) $(readlink -m ${arkanium_dir}/shared/) ||
cleanup_and_quit 'Failed to receive var' cleanup_and_quit 'Failed to receive var'
# Make var writable # Make var writable
btrfs property set -f -ts $(readlink -m ${bttrfs_dir}/shared/var) ro false || btrfs property set -f -ts $(readlink -m ${arkanium_dir}/shared/var) ro false ||
cleanup_and_quit 'Failed to unlock var' cleanup_and_quit 'Failed to unlock var'
} }

View file

@ -1 +0,0 @@
base

View file

@ -1,114 +0,0 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
Color
#NoProgressBar
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
ParallelDownloads = 5
ILoveCandy
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[arkane]
Server = https://repo.arkanelinux.org/$repo/os/$arch
[arkane-core]
Server = https://repo.arkanelinux.org/$repo/os/$arch
[arkane-extra]
Server = https://repo.arkanelinux.org/$repo/os/$arch
[arkane-cauldron]
Server = https://repo.arkanelinux.org/$repo/os/$arch
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[testing]
#Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
#[community]
#Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs