#/bin/sh #@info #@strict #@include core ## colored logging #@include color #@include network ## for tor hidden service #@include tor ## for ncdc #@include filehooker pass=lolwut.aidsballs # 20gig #min_netshare_size=20000000000 admin=pimp extra_pkg="vim sudo grub-bios ntp tor openssh btrfs-progs tmux" info "writing stdout to /tmp/install.log" installer_disk(){ find /dev/disk/by-label/ -name ARCH_\* 2>/dev/null | xargs readlink } find_rootdisk(){ for i in sd vd hd;do for j in a b c;do dsk="/dev/$i$j" test ! -e "$dsk" && continue test "$(installer_disk)" == "$dsk" && continue test "$(get_disksize $dsk)" -gt "$min_netshare_size" && info "not using $dsk as it is too big" && continue echo "$dsk" && return done done } rootdisk=$(find_rootdisk) test "$rootdisk" || die "cannot find your root disk" info "Your rootdisk is $rootdisk" sleep 3 umount /mnt/boot ||: umount /mnt ||: info "overwriting partitioning" dd if=/dev/zero of=$rootdisk bs=2k count=10 info "starting partitioning" (printf "o\nn\np\n\n\n+128M\n\a\nn\np\n\n\n\nw\n\n") |fdisk $rootdisk ||: partprobe $rootdisk info "done partitioning" sleep 1 info "generating filesystem on /boot" mkfs.ext2 ${rootdisk}1 info "Done" sleep 3 sync vgchange -an info "generating filesystems" mkfs.btrfs -f ${rootdisk}2 sleep 1 info "finished generating filesystems" sleep 1 info "mounting" mount ${rootdisk}2 /mnt mkdir /mnt/boot mount ${rootdisk}1 /mnt/boot info "finished mounting!" sleep 1 info "installing!" info "Setting http proxy" info "Installing the following packages: $extra_pkg" if [ -n "${user_pkg:-}" ] ;then info "User chooses additional packages: $user_pkg" else info "No additional packages set by user (\$user_pkg unset)" fi pacstrap /mnt base $extra_pkg ${user_pkg:-} info "installation done" sleep 1 info "generating configs" genfstab -U -p /mnt > /mnt/etc/fstab info "beginning chroot!" ########### BEGIN CHROOT ##### arch-chroot /mnt << EOF #@strict msg() { printf "\$*\n" >&2; } info() { msg "$green\$*$nc"; } error() { msg "$green\$*$nc"; } info "generating locales" ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime echo "LANG=en_US.UTF-8" >> /etc/locale.conf echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen locale-gen echo "filehooker$RANDOM" > /etc/hostname info "Done! " mkinitcpio -p linux || info "setting root password" printf "${pass}\n${pass}\n" | (passwd ) info "adding user" useradd -m -G audio,video,wheel $admin printf "${pass}\n${pass}\n" | (passwd $admin) info "editing sudoers" printf "root ALL=(ALL) ALL\n%s ALL=(ALL)NOPASSWD: ALL\n" %wheel >> /etc/sudoers for i in dhcpcd ntpd tor sshd ; do info "enabling \$i" systemctl enable \$i done info "installing grub" grub-install ${rootdisk} 2>/dev/null #echo "GRUB_DISABLE_LINUX_UUID=true" >> /etc/default/grub grub-mkconfig > /boot/grub/grub.cfg 2>/dev/null # prepare ncdc useradd -m hooker exit EOF ######## END CHROOT ########## sync info "configuring tor" torrc=/mnt/etc/tor/torrc hidden_service_dir=/var/lib/tor/hidden_service/ configure_hidden_service #info "publishing hidden service address" #cat $hidden_service_dir/hostname | send_irc info "configure ncdc" curl conf.krebsco.de/filehooker_configure_ncdc | arch-chroot /mnt info "configuring netshares" ( curl conf.krebsco.de/filehooker_configure_netshare )| arch-chroot /mnt info "configuring tor announce" curl conf.krebsco.de/install_tor_announce | arch-chroot /mnt info "We're all done, rebooting!" sync sleep 5 reboot