summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoNicks2021-05-15 21:04:26 +0300
committerKoNicks2021-05-15 21:04:26 +0300
commitbd9af5ef1937fb5b08ebedc6e6ce6077a3c43053 (patch)
tree32c6c7c1e9eee47a209231f177b8795295cd1b7a
parente3c48ba04d0d96574a51801a8a9a3bf5a8bea8ca (diff)
downloadaur-bd9af5ef1937fb5b08ebedc6e6ce6077a3c43053.tar.gz
remade package
-rw-r--r--.SRCINFO8
-rw-r--r--PKGBUILD5
-rwxr-xr-xinstall53
-rwxr-xr-xkoffe184
-rw-r--r--pi.is71
5 files changed, 316 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index f4dd199e8a4e..574c7357d4da 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -12,8 +12,12 @@ pkgbase = koffe
depends = libnewt
depends = wget
depends = git
- source = koffe.tar.gz
- md5sums = 792944180ce500acd738e00c7ec08ba3
+ source = koffe
+ source = pi.is
+ source = install
+ md5sums = SKIP
+ md5sums = SKIP
+ md5sums = SKIP
pkgname = koffe
diff --git a/PKGBUILD b/PKGBUILD
index e6ebac027099..d433f39e62ec 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -19,13 +19,12 @@ backup=()
options=()
install=
changelog=
-source=('koffe.tar.gz')
+source=('koffe' 'pi.is' 'install')
noextract=()
-md5sums=('792944180ce500acd738e00c7ec08ba3')
+md5sums=('SKIP' 'SKIP' 'SKIP')
validpgpkeys=()
package() {
- tar xzf $srcdir/koffe.tar.gz -C $srcdir/
mkdir $pkgdir/usr/
mkdir $pkgdir/usr/bin/
mkdir $pkgdir/usr/share/
diff --git a/install b/install
new file mode 100755
index 000000000000..bd1daf0ea8aa
--- /dev/null
+++ b/install
@@ -0,0 +1,53 @@
+#!/bin/bash
+whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Welcome screen" --msgbox "Welcome to Koffe, the offline arch installer, with your permission we'll get started :)" 0 0
+echo "Unpacking linux and the other stuff:"
+echo '' > /etc/pacman.conf
+echo '[options]' >> /etc/pacman.conf
+echo 'Architecture = auto' >> /etc/pacman.conf
+echo 'SigLevel = Never' >> /etc/pacman.conf
+echo 'LocalFileSigLevel = Never' >> /etc/pacman.conf
+echo '[koffe]' >> /etc/pacman.conf
+echo 'Server = file:///root/pkg' >> /etc/pacman.conf
+pacman -Sy
+whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "CFdisk" --msgbox "So, we need to partition the disk. I'll launch cfdisk for you in just a sec, just choose the disk to partition" 0 0
+lsblk -r | grep disk | cut -f 1 -d ' ' > drvs
+sed -e 's/$/ disk/' -i drvs
+declare -a disks
+disks=(`cat drvs`)
+drv=$(whiptail --title "Select drive to partition" --menu "Select drive to partition" 16 78 10 "${disks[@]}" 3>&1 1>&2 2>&3 3>&-)
+cfdisk /dev/$drv
+lsblk -r | grep part | cut -f 1 -d ' ' > drvs
+sed -e 's/$/ part/' -i drvs
+declare -a parts
+parts=(`cat drvs`)
+ppart=$(whiptail --title "Select the partiton to install linux to:" --menu "Select the partiton to install linux to (this will wipe the partition):" 16 78 10 "${parts[@]}" 3>&1 1>&2 2>&3 3>&-)
+mkfs.ext4 /dev/$ppart
+mount /dev/$ppart /mnt
+echo no disk >> drvs
+parts=(`cat drvs`)
+pswap=$(whiptail --title "Select the partiton to install swap to:" --menu "Select the partiton to install swap to (no disk if none):" 16 78 10 "${parts[@]}" 3>&1 1>&2 2>&3 3>&-)
+mkswap /dev/$pswap
+swapon /dev/$pswap
+pefi=$(whiptail --title "Select the partiton to install EFI to:" --menu "Select the partiton to install EFI to (no disk if you have legacy bios):" 16 78 10 "${parts[@]}" 3>&1 1>&2 2>&3 3>&-)
+mkdir /mnt/boot
+mkfs.fat -F32 /dev/$pefi
+mount /dev/$pefi /mnt/boot
+extraparts=$(whiptail --inputbox "If you want to mount any other partition manually, enter the commands here like this: command 1 ; command 2 ; command 3" 0 0 0 3>&1 1>&2 2>&3 3>&-)
+echo $extraparts > coms
+bash coms
+whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Initial setup ready" --msgbox "Well, that was it for the initial setup, now press ok, grab a cup of coffee and wait for linux to install. Be sure to stick around for the post-install configurations tho." 0 0
+#if one package errors out for whatever reason the whole pacstrap fails so i removed this implementation
+#pacstrap /mnt - < install.list
+for pac in $(cat install.list)
+do
+ pacstrap /mnt $pac
+done
+genfstab -U /mnt >> /mnt/etc/fstab
+cp pi.is /mnt/root/
+echo 'bash /root/pi.is' > /mnt/root/.bashrc
+echo 'echo "" > /root/.bashrc' >> /mnt/root/.bashrc
+arch-chroot /mnt
+whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Goodbye screen" --msgbox "Well, that was everything. Use reboot or poweroff to exit" 0 0
+umount -a
+clear
+echo "use poweroff or reboot to exit"
diff --git a/koffe b/koffe
new file mode 100755
index 000000000000..9777171b1915
--- /dev/null
+++ b/koffe
@@ -0,0 +1,184 @@
+#!/bin/bash
+x=1
+pts=/usr/share/koffe/
+pathto=$(realpath ./)
+if [ $1 ];
+then
+ for argument in $@
+ do
+ if [[ $argument == "--help" ]];
+ then
+ echo "koffe is a tool for making simple and intuitive offline archlinux installers"
+ echo "with support for most packages, package groups or aur packages."
+ echo
+ echo "The programs you select are the only ones getting installed"
+ echo "(and the dependencies, of course), so make sure to include packages that are needed for a"
+ echo "healthy arch install. So smthng like "
+ echo "'koffe --pacs=base,linux,linux-firmware,sudo,grub,xorg,gnome,minecraft-launcher,code,yay'"
+ echo "and any other packages you want to install,"
+ echo "you can also use whatever WM or DE you want, just keep in mind if the greeter is anything"
+ echo "other than gdm, sddm or lightdm you need to enable it yourself. Also, if you're"
+ echo "making an archiso to be used on many computers and include multiple sets of drivers,"
+ echo "in the live disk you can edit 'install.list' to manage what programs to install"
+ echo
+ echo "Once you're done with the iso, to install arch just boot from it and do 'bash install'"
+ echo ---------------------------------------------------
+ echo
+ echo Flags:
+ echo "koffe --pacs=Prog1,Prog2 -----> starts koffe and creates"
+ echo " an iso with the programs Prog1 and Prog2"
+ echo " IMPORTANT: Separate the progs with commas"
+ echo " and do not use spaces"
+ echo
+ echo "koffe --clean ----------------> cleans building dirs after unexpected"
+ echo " exit or unsuccesful iso generation. Will"
+ echo " nullify any other args parsed with it and will"
+ echo " not create an iso"
+ echo
+ echo "koffe --scripts=/path/path/ --> copies the scripts in the specified path"
+ echo " and uses them instead of the default koffe"
+ echo " scripts in /usr/share/koffe/. Avoid paths with spaces"
+ exit
+ fi
+ if [[ $(echo $argument | cut -f 1 -d '=') == "--pacs" ]];
+ then
+ declare -a prog
+ x=0
+ prog=$(echo $argument | cut -f 2 -d '=')
+ prog=${prog//,/ }
+ echo $prog
+ fi
+ if [[ $(echo $argument | cut -f 1 -d '=') == "--scripts" ]];
+ then
+ pts=$(echo $argument | cut -f 2 -d '=')
+ fi
+ if [[ $argument == "--clean" ]];
+ then
+ if [[ $(whoami) == root ]];
+ then
+ rm -rf ~/koffeiso
+ rm -rf /usr/share/archiso/configs/releng/airootfs/root/*
+ rm -rf /tmp/koffe/
+ exit
+ fi
+ fi
+ done
+fi
+if [ $(whoami) != root ];
+then
+ echo
+ echo WARNING: the program needs to be ran as root
+ echo $prog
+fi
+if [ $(whoami) == root ];
+then
+ cp $pts/* /usr/share/archiso/configs/releng/airootfs/root/
+ echo '' > /usr/share/archiso/configs/releng/airootfs/root/install.list
+ pacman -Sy
+ mkdir /tmp/koffe/
+ mkdir /tmp/koffe/l/
+ mkdir /tmp/koffe/n/
+ mkdir /tmp/koffe/aur/
+ mkdir /tmp/koffe/aurbg/
+ mkdir /usr/share/archiso/configs/releng/airootfs/root/pkg/
+ mkdir ~/koffeiso
+ mkdir ~/out
+ rm -rf /var/cache/pacman/pkg/*
+ pactree -u -s libnewt > /tmp/koffe/n/libnewt
+ pacman -Sp --noconfirm - < /tmp/koffe/n/libnewt > /tmp/koffe/l/libnewt
+ echo libnewt >> /usr/share/archiso/configs/releng/airootfs/root/install.list
+ wget -nc -i /tmp/koffe/l/libnewt -P /usr/share/archiso/configs/releng/airootfs/root/pkg/
+
+ pactree -u -s efibootmgr > /tmp/koffe/n/efibootmgr
+ pacman -Sp --noconfirm - < /tmp/koffe/n/efibootmgr > /tmp/koffe/l/efibootmgr
+ echo efibootmgr >> /usr/share/archiso/configs/releng/airootfs/root/install.list
+ wget -nc -i /tmp/koffe/l/efibootmgr -P /usr/share/archiso/configs/releng/airootfs/root/pkg/
+
+
+ pactree -u -s grub > /tmp/koffe/n/grub
+ pacman -Sp --noconfirm - < /tmp/koffe/n/grub > /tmp/koffe/l/grub
+ echo grub >> /usr/share/archiso/configs/releng/airootfs/root/install.list
+ wget -nc -i /tmp/koffe/l/grub -P /usr/share/archiso/configs/releng/airootfs/root/pkg/
+ if [[ x == 1 ]];
+ then
+ declare -a prog
+ prog=$(whiptail --inputbox "Please enter all the programs to be included in the installer separated by a space, you can also include package groups like gnome or xorg or AUR packages" 0 0 4 3>&1 1>&2 2>&3 3>&-)
+ fi
+ for app in $prog
+ do
+ PACAUR=0
+ clear
+ echo $app
+ variable=$(pacman -Sg $app)
+ if [[ $variable == '' ]];
+ then
+ #base
+ aurornot=$(pactree -s -u $app 2>&1 >/dev/null | cut -f 1 -d ':')
+ if [[ $auronnot != "error" ]];
+ then
+ pactree -u -s $app > /tmp/koffe/n/$app
+ pacman -Sp --noconfirm - < /tmp/koffe/n/$app > /tmp/koffe/l/$app
+ echo $app >> /usr/share/archiso/configs/releng/airootfs/root/install.list
+ wget -nc -i /tmp/koffe/l/$app -P /usr/share/archiso/configs/releng/airootfs/root/pkg/
+ fi
+
+ if [[ $aurornot == "error" ]];
+ then
+ PACAUR=1
+ fi
+ fi
+ if [[ $variable != '' ]];
+ then
+ #gnome
+ pacman -Sg $app > /tmp/koffe/generaltemp
+ cut -f 2- -d ' ' /tmp/koffe/generaltemp > /tmp/koffe/grlist
+ grlist=$(cat /tmp/koffe/grlist)
+ echo '' > /tmp/koffe/grtree
+ for component in $grlist
+ do
+ pactree -s -u $component >> /tmp/koffe/grtree
+ echo $component >> /usr/share/archiso/configs/releng/airootfs/root/install.list
+ done
+ pacman -Sp --noconfirm - < /tmp/koffe/grtree > /tmp/koffe/grlinks
+ wget -nc -i /tmp/koffe/grlinks -P /usr/share/archiso/configs/releng/airootfs/root/pkg/
+ fi
+ if [[ $PACAUR == 1 ]];
+ then
+ echo "AUR PACKAGE! BEWARE"
+ mkdir /tmp/koffe/home
+ sudo usermod -d /tmp/koffe/home/ nobody
+ git clone https://aur.archlinux.org/$app /tmp/koffe/aurbg/$app
+ chown -hR nobody /tmp/koffe/
+ cd /tmp/koffe/aurbg/$app
+ sudo -u nobody makepkg --noconfirm --skippgpcheck
+ cp /tmp/koffe/aurbg/$app/*.pkg.tar.zst /usr/share/archiso/configs/releng/airootfs/root/pkg
+ echo $app >> /usr/share/archiso/configs/releng/airootfs/root/install.list
+ declare -a bb
+ bb=$(cat /tmp/koffe/aurbg/$app/.SRCINFO | grep depends | cut -f 2 -d '=' | cut -f 1 -d '>' | cut -f 1 -d ':')
+ for depend in $bb
+ do
+ aurdep_aur=$(pactree -s -u $depend 2>&1 >/dev/null | cut -f 1 -d ':')
+ if [[ $aurdep_aur != "error" ]];
+ then
+ pactree -u -s $depend > /tmp/koffe/n/$depend
+ pacman -Sp --noconfirm - < /tmp/koffe/n/$depend > /tmp/koffe/l/$depend
+ wget -nc -i /tmp/koffe/l/$depend -P /usr/share/archiso/configs/releng/airootfs/root/pkg/
+ fi
+ if [[ $aurdep_aur == "error" ]];
+ then
+ git clone https://aur.archlinux.org/$depend /tmp/koffe/aurbg/$depend
+ chown -hR nobody /tmp/koffe/$depend
+ cd /tmp/koffe/aurbg/$depend
+ sudo -u nobody makepkg --noconfirm --skippgpcheck
+ cp /tmp/koffe/aurbg/$depend/*.pkg.tar.zst /usr/share/archiso/configs/releng/airootfs/root/pkg
+ fi
+ done
+ fi
+ done
+ repo-add /usr/share/archiso/configs/releng/airootfs/root/pkg/koffe.db.tar.gz /usr/share/archiso/configs/releng/airootfs/root/pkg/*
+ mkarchiso -v -w ~/koffeiso -o $pathto/ /usr/share/archiso/configs/releng
+ rm -rf ~/koffeiso
+ rm -rf /usr/share/archiso/configs/releng/airootfs/root/*
+ rm -rf /tmp/koffe/
+fi
+
diff --git a/pi.is b/pi.is
new file mode 100644
index 000000000000..98d8c1c2cfff
--- /dev/null
+++ b/pi.is
@@ -0,0 +1,71 @@
+systemctl enable NetworkManager
+systemctl enable sddm.service
+systemctl enable gdm.service
+systemctl enable lightdm
+whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Finishing setup" --msgbox "Well, linux is installed (kinda), let's go through the final setup and configure it a bit" 0 0
+cd /usr/share/zoneinfo
+echo */ | tr " " "\n" > ~/reg
+sed -e 's/$/ region/' -i ~/reg
+declare -a regs
+regs=(`cat ~/reg`)
+region_vague=$(whiptail --title "Finishing setup" --menu "Let's start with the region, select your region from below" 0 0 0 "${regs[@]}" 3>&1 1>&2 2>&3 3>&-)
+echo $region_vague
+cd /usr/share/zoneinfo/$region_vague
+echo * | tr " " "\n" > ~/reg
+sed -e 's/$/ region/' -i ~/reg
+declare -a regs
+regs=(`cat ~/reg`)
+region_close=$(whiptail --title "Finishing setup" --menu "Select your city from below" 0 0 0 "${regs[@]}" 3>&1 1>&2 2>&3 3>&-)
+ln -sf /usr/share/zoneinfo/$region_vague/$region_close /etc/localtime
+hwclock --systohc
+touch /etc/locale.conf
+echo "LANG=en_US.UTF-8" > /etc/locale.conf
+echo en_US.UTF-8 UTF-8 >> /etc/locale.gen
+rm ~/reg
+locale-gen
+cd /
+myhostname=$(whiptail --inputbox "Now choose a name for your computer" 0 0 4 3>&1 1>&2 2>&3 3>&-)
+echo "127.0.0.1 localhost
+::1 localhost
+127.0.1.1 $myhostname.localdomain $myhostname" > /etc/hosts
+echo "$myhostname" > /etc/hostname
+archit=$(whiptail --backtitle "Koffe" --title "Architecture selector" --menu "Choose the bit count of your x86 chip" 0 0 4 \
+ 64 "BIT" \
+ 32 "BIT" 3>&1 1>&2 2>&3 3>&-)
+ efiornot=$(whiptail --backtitle "Koffe" --title "Boot selector" --menu "Is your soon-to-be-arch computer legacy or EUFI?" 0 0 4 \
+ 1 "Bios/Legacy" \
+ 2 "UEFI" 3>&1 1>&2 2>&3 3>&-)
+ if [[ "$efiornot" == "2" ]]
+ then
+ if [[ "$archit" == "64" ]]
+ then
+ grub-install --target=x86_64-efi --efi-directory=/boot
+ grub-mkconfig -o /boot/grub/grub.cfg
+ fi
+ if [[ "$archit" == "32" ]]
+ then
+ grub-install --target=i386-efi --efi-directory=/boot
+ grub-mkconfig -o /boot/grub/grub.cfg
+ fi
+ fi
+ if [[ "$efiornot" == "1" ]]
+ then
+ lsblk | grep disk | cut -f 1 -d ' ' > ~/drvs
+ sed -e 's/$/ disk/' -i ~/drvs
+ declare -a lname
+ disks=(`cat ~/drvs`)
+ lname=$(whiptail --title "Select drive to install grub to" --menu "Select drive to install grub to" 16 78 10 "${disks[@]}" 3>&1 1>&2 2>&3 3>&-)
+ grub-install --recheck /dev/$lname
+ grub-mkconfig -o /boot/grub/grub.cfg
+ fi
+clear
+echo Now choose a root password
+passwd
+myusername1=$(whiptail --inputbox "Now lets create a user, pick a username: " 0 0 4 3>&1 1>&2 2>&3 3>&-)
+echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers
+useradd -m -G wheel $myusername1
+echo "and a password"
+passwd $myusername1
+clear
+echo "If you need to run any special commands to enable or configure something in chroot do so now"
+echo "Then type 'exit' to go back to the installer"