#!/bin/bash var_DEFAULTFS="/boot:32:ext2:+ swap:256:swap /:7500:ext3 /home:*:ext3" var_TARGET_DIR="/mnt" var_RUNTIME_PACKAGES= var_PKG_FILE=/home/arch/fifa/runtime/package-list var_UI_TYPE="cli" # set to cli or dia for dialog ###### Phases ( can be overridden by more specific procedures) ###### phase_preparation () { execute worker select_source execute worker runtime_network execute worker runtime_packages } phase_basics () { execute worker set_clock execute worker prepare_disks } phase_system () { execute worker package_list execute worker install_packages execute worker auto_fstab #TODO: exact names of these 3 execute worker auto_network execute worker auto_locale execute worker configure_system execute worker mkinitcpio execute worker locales execute worker install_bootloader } phase_finish () { true } ###### Workers ( can be overridden by more specific procedures) ###### worker_select_source () { var_PKG_SOURCE_TYPE='cd' var_FILE_URL="file:///src/core/pkg" var_SYNC_URL= var_MIRRORLIST="/etc/pacman.d/mirrorlist" # if you override to use ftp (or ask user and he chooses ftp) don't forget to configure the network and to select_mirrors } worker_runtime_network () { #network is assumed to be functional for now because we do it first with /arch/setup. once that falls away, we'll need to implement it here true } worker_runtime_packages () { for pkg in $var_RUNTIME_PACKAGES do $PACMAN -Sy --noconfirm --needed $pkg done } worker_set_clock () { HARDWARECLOCK=utc TIMEZONE=`tzselect` HWCLOCK_PARAMS=" --utc" if [ "$TIMEZONE" != "" -a -e "/usr/share/zoneinfo/$TIMEZONE" ] then cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime fi /sbin/hwclock --hctosys $HWCLOCK_PARAMS --noadjfile #TODO: user must set date/time and store it } worker_prepare_disks () { partition # use lib-archboot function by default # in official installer: autoprepare or diy first partitions, then mountpoints } # Put the list of packages to be installed in $var_PKG_FILE worker_package_list () { #TODO: sensible list of packages true } worker_install_packages () { target_special_fs on target_prepare_pacman [ ! -f $var_PKG_FILE ] && die_error "No package file available!" PKGLIST=`cat $var_PKG_FILE` #TODO: what if $var_PKG_FILE is empty? we should die_error because that's probably not what the user wants.. or can it? will pacman complain? $PACMAN_TARGET -Sy $PKGLIST || die_error "Package installation FAILED." target_special_fs off } worker_auto_fstab () { if [ "$S_MKFS" = "1" -o "$S_MKFSAUTO" = "1" ]; then target_configure_fstab fi } worker_auto_network () { [ "$S_DHCP" = 1 ] && target_configure_network dhcp "$PROXY_HTTP" "$PROXY_FTP" [ "$S_DHCP" != 1 ] && target_configure_network fixed "$PROXY_HTTP" "$PROXY_FTP" } worker_auto_locale () { target_configure_inital_locale } worker_configure_system () { #TODO: what to do here? true } worker_mkinitcpio () { #TODO:check that this is the right command when projects.archlinux.org is back up run_mkinitcpio } worker_locales () { #TODO:what to do here? didn't we already do them? true } worker_install_bootlader () { #TODO: ask which disk, install grub on it true }