diff --git a/auto_clone.sh b/configs/auto_clone.sh similarity index 58% rename from auto_clone.sh rename to configs/auto_clone.sh index a7d62e4..bef4591 100644 --- a/auto_clone.sh +++ b/configs/auto_clone.sh @@ -1,17 +1,12 @@ #!/bin/bash -# repos="$(curl \ -# -X 'GET' 'https://gitea.finnvanreenen.nl/api/v1/user/repos?token=' \ -# -H 'accept: application/json'\ -# )" - -token="b0e7fd2acc222a84e94a81c8de743a8e2a866d80" +token="$1" page=1 project_dir="$HOME/projects" base_url="https://gitea.finnvanreenen.nl/api/v1" -while [ "$page" -le 20 ] +while [[ $page < 21 ]] do echo echo "## get repo list page $page" @@ -19,10 +14,11 @@ do if [[ "$repos" != "[]" ]] then - for repo in $(echo "$repos" | sed -e 's/^\[{//' -e 's/}]$//' -e 's/},{/\n/g' -e 's/ /%20/g') + for repo in $(echo "$repos" | sed -e 's/^\[{//' -e 's/}]$//' -e 's/},{/\n/g' -e 's/%/%p/g' -e 's/ /%20/g') do - full_name="$(echo "$repo" | sed -e 's/^.*"full_name":"\([^"]*\)".*$/\1/' -e 's/%20/ /g')" - ssh_url="$(echo "$repo" | sed -e 's/^.*"ssh_url":"\([^"]*\)".*$/\1/' -e 's/%20/ /g')" + repo_json="$(echo "$repo" | sed -e 's/%20/ /g' -e 's/%p/%/g')" + full_name="$(echo "$repo_json" | sed -e 's/^.*"full_name":"\([^"]*\)".*$/\1/')" + ssh_url="$(echo "$repo_json" | sed -e 's/^.*"ssh_url":"\([^"]*\)".*$/\1/')" echo echo "### $full_name" @@ -30,7 +26,6 @@ do then cd "$project_dir/$full_name" git fetch - git status else git clone "$ssh_url" "$project_dir/$full_name" fi @@ -38,7 +33,7 @@ do done else echo "No more repositories found." - page=200 + page=999 fi page=$(( $page + 1 )) diff --git a/elfDesktop.sh b/elfDesktop.sh new file mode 100644 index 0000000..8ce50ed --- /dev/null +++ b/elfDesktop.sh @@ -0,0 +1,12 @@ + +HOSTNAME="ELFDesktop" +UEFI_DISK="/dev/sdb" +DISK="/dev/sdb" +USERNAME="freenen" + +SFDISK_FILE="./elfDesktop.sfdisk" +UEFI_PARTITION="${UEFI_DISK}1" +SWAP_PARTITION="${DISK}2" +ROOT_PARTITION="${DISK}3" + +bash ./elf_os.sh diff --git a/elfLaptop.sfdisk b/elfLaptop.sfdisk index ef96ba3..85d9a2e 100644 --- a/elfLaptop.sfdisk +++ b/elfLaptop.sfdisk @@ -8,4 +8,4 @@ sector-size: 512 /dev/sdb1 : start= 2048, size= 2097152, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=486DA8A9-47F3-469D-9458-F29776D786A3, name="boot" /dev/sdb2 : start= 2099200, size= 16777216, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=DCA4D33F-2283-48EE-98BF-739D527ABBBB -/dev/sdb3 : start= 18876416, size= 231192576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=ACF561E3-BE4F-479A-A9EF-2C82B324E35E, name="root" +/dev/sdb3 : start= 18876416, size= 231192576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=ACF561E3-BE4F-479A-A9EF-2C82B324E35E, name="elfroot" diff --git a/elfLaptop.sh b/elfLaptop.sh index cb5899f..f413703 100644 --- a/elfLaptop.sh +++ b/elfLaptop.sh @@ -4,169 +4,9 @@ UEFI_DISK="/dev/sdb" DISK="/dev/sdb" USERNAME="freenen" +SFDISK_FILE="./elfLaptop.sfdisk" UEFI_PARTITION="${UEFI_DISK}1" SWAP_PARTITION="${DISK}2" ROOT_PARTITION="${DISK}3" -function run(){ - echo "[ ] $1" - echo "# $1" >>install.log - echo "> $2" >>install.log - bash -c "$2" &>>install.log \ - && echo -e "\e[1A\e[K[ \e[32mOK\e[0m ] $1" \ - || { - echo -e "\e[1A\e[K[\e[31mFAIL\e[0m] $1" - bash -c "$3" - exit 10 - } - echo >>install.log -} - -function run-chroot(){ - echo "[ ] $1" - echo "# $1" >>install.log - echo "> chroot /mnt $2" >>install.log - arch-chroot /mnt bash -c "$2" &>>install.log \ - && echo -e "\e[1A\e[K[ \e[32mOK\e[0m ] $1" \ - || { - echo -e "\e[1A\e[K[\e[31mFAIL\e[0m] $1" - bash -c "$3" - exit 20 - } - echo >>install.log -} - -echo "" >install.log - -echo -n "disk encryption password: " -read -s PASS -echo -echo -n "retype password: " -read -s PASSRE -echo - -if [ "$PASS" != "$PASSRE" ]; then - echo "password do not match" - exit 1 -fi - -echo -n "password for freenen: " -read -s PASS_USER -echo -echo -n "retype password: " -read -s PASSRE_USER -echo - -if [ "$PASS_USER" != "$PASSRE_USER" ]; then - echo "password do not match" - exit 2 -fi -echo - -echo -echo === setup localisation -echo - -run "enable ntp" "timedatectl set-ntp true" -run "set timezone" "timedatectl set-timezone Europe/Amsterdam" - -echo -echo === setup partitions -echo - -run "applly partion table" "sfdisk $DISK <./elfLaptop.sfdisk" -run "format boot partition" "mkfs.fat -F 32 ${UEFI_PARTITION}" -run "format swap partition" "mkswap ${SWAP_PARTITION}" -echo -n "$PASS" >keyfile.luks -run "encrypt root partition" "cryptsetup luksFormat --batch-mode --key-file keyfile.luks ${ROOT_PARTITION}" "rm keyfile.luks" -run "map root partitaion" "cryptsetup open --batch-mode --key-file keyfile.luks ${ROOT_PARTITION} cryptroot" "rm keyfile.luks" -rm keyfile.luks -run "format root partition" "mkfs.btrfs /dev/mapper/cryptroot" - -run "mount root partition" "mount /dev/mapper/cryptroot /mnt" -run "create root btrfs subvolume" "btrfs subvolume create /mnt/@" -run "create home btrfs subvolume" "btrfs subvolume create /mnt/@home" -run "unmount btrfs" "umount /mnt" -run "mount root subvolume" "mount -o subvol=@ /dev/mapper/cryptroot /mnt" -run "mount boot partition" "mount --mkdir ${UEFI_PARTITION} /mnt/boot" -run "mount home subvolume" "mount --mkdir -o subvol=@home /dev/mapper/cryptroot /mnt/home" -run "enable swap" "swapon ${SWAP_PARTITION}" - -echo -echo === install arch -echo - -run "install base of arch" "pacstrap /mnt base linux linux-firmware" -run "intall utitlities" "pacstrap /mnt btrfs-progs man vim sudo" -run "intall networkmanager" "pacstrap /mnt networkmanager" -run "generate fstab" "genfstab -U /mnt >>/mnt/etc/fstab" - -echo -echo === set locals -echo - -run-chroot "set timezone" "ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime" -run-chroot "set hwclock to UTC" "hwclock --systohc" -run-chroot "update locals.gen" "sed --in-place -E -e 's/^#?en_GB.UTF-8/en_GB.UTF-8/' -e 's/^#?en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen" -run-chroot "generate locals" "locale-gen" -run-chroot "config locals" "echo \"LANG=en_GB.UTF-8\" >/etc/locale.conf" -run-chroot "set hostname" "echo \"$HOSTNAME\" >/etc/hostname" -run-chroot "create hosts file" "cat >/etc/hosts </boot/loader/entries/arch.conf </boot/loader/entries/arch-fallback.conf </boot/loader/loader.conf <>/etc/sudoers" -run-chroot "touch authoized keys" "touch /home/${USERNAME}/.ssh/authorized_keys" -run-chroot "add sshkeys for new user" "curl -o /home/${USERNAME}/.ssh/authorized_keys https://github.com/FReenen.keys" -#run-chroot "update fail lock" "sed --in-place -e 's/^deny = .*$/deny = 10/' -e 's/^unlock_time = .*$/unlock_time = 60/'" - -echo -echo === umount and reboot -echo - -run "umount drives" "umount -R /mnt" -run "close cryptroot" "cryptsetup close cryptroot" -run "reboot" "shutdown -r now" +bash ./elf_os.sh diff --git a/elf_os.sh b/elf_os.sh new file mode 100644 index 0000000..35986cd --- /dev/null +++ b/elf_os.sh @@ -0,0 +1,161 @@ + +function run(){ + echo "[ ] $1" + echo "# $1" >>install.log + echo "> $2" >>install.log + bash -c "$2" &>>install.log \ + && echo -e "\e[1A\e[K[ \e[32mOK\e[0m ] $1" \ + || { + echo -e "\e[1A\e[K[\e[31mFAIL\e[0m] $1" + bash -c "$3" + exit 10 + } + echo >>install.log +} + +function run-chroot(){ + echo "[ ] $1" + echo "# $1" >>install.log + echo "> chroot /mnt $2" >>install.log + arch-chroot /mnt bash -c "$2" &>>install.log \ + && echo -e "\e[1A\e[K[ \e[32mOK\e[0m ] $1" \ + || { + echo -e "\e[1A\e[K[\e[31mFAIL\e[0m] $1" + bash -c "$3" + exit 20 + } + echo >>install.log +} + +echo "" >install.log + +echo -n "disk encryption password: " +read -s PASS +echo +echo -n "retype password: " +read -s PASSRE +echo + +if [ "$PASS" != "$PASSRE" ]; then + echo "password do not match" + exit 1 +fi + +echo -n "password for freenen: " +read -s PASS_USER +echo +echo -n "retype password: " +read -s PASSRE_USER +echo + +if [ "$PASS_USER" != "$PASSRE_USER" ]; then + echo "password do not match" + exit 2 +fi +echo + +echo +echo === setup localisation +echo + +run "enable ntp" "timedatectl set-ntp true" +run "set timezone" "timedatectl set-timezone Europe/Amsterdam" + +echo +echo === setup partitions +echo + +run "applly partion table" "sfdisk $DISK <$SFDISK_FILE" +run "format boot partition" "mkfs.fat -F 32 ${UEFI_PARTITION}" +run "format swap partition" "mkswap ${SWAP_PARTITION}" +echo -n "$PASS" >keyfile.luks +run "encrypt root partition" "cryptsetup luksFormat --batch-mode --key-file keyfile.luks ${ROOT_PARTITION}" "rm keyfile.luks" +run "map root partitaion" "cryptsetup open --batch-mode --key-file keyfile.luks ${ROOT_PARTITION} cryptelfroot" "rm keyfile.luks" +rm keyfile.luks +run "format root partition" "mkfs.btrfs /dev/mapper/cryptelfroot" + +run "mount root partition" "mount /dev/mapper/cryptelfroot /mnt" +run "create root btrfs subvolume" "btrfs subvolume create /mnt/@" +run "create home btrfs subvolume" "btrfs subvolume create /mnt/@home" +run "unmount btrfs" "umount /mnt" +run "mount root subvolume" "mount -o subvol=@ /dev/mapper/cryptelfroot /mnt" +run "mount boot partition" "mount --mkdir ${UEFI_PARTITION} /mnt/boot" +run "mount home subvolume" "mount --mkdir -o subvol=@home /dev/mapper/cryptelfroot /mnt/home" +run "enable swap" "swapon ${SWAP_PARTITION}" + +echo +echo === install arch +echo + +run "install base of arch" "pacstrap /mnt base linux linux-firmware" +run "intall utitlities" "pacstrap /mnt btrfs-progs man vim sudo" +run "intall networkmanager" "pacstrap /mnt networkmanager" +run "generate fstab" "genfstab -U /mnt >>/mnt/etc/fstab" + +echo +echo === set locals +echo + +run-chroot "set timezone" "ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime" +run-chroot "set hwclock to UTC" "hwclock --systohc" +run-chroot "update locals.gen" "sed --in-place -E -e 's/^#?en_GB.UTF-8/en_GB.UTF-8/' -e 's/^#?en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen" +run-chroot "generate locals" "locale-gen" +run-chroot "config locals" "echo \"LANG=en_GB.UTF-8\" >/etc/locale.conf" +run-chroot "set hostname" "echo \"$HOSTNAME\" >/etc/hostname" +run-chroot "create hosts file" "cat >/etc/hosts </boot/loader/entries/arch.conf </boot/loader/entries/arch-fallback.conf </boot/loader/loader.conf <>/etc/sudoers" +run-chroot "touch authoized keys" "touch /home/${USERNAME}/.ssh/authorized_keys" +run-chroot "add sshkeys for new user" "curl -o /home/${USERNAME}/.ssh/authorized_keys https://github.com/FReenen.keys" + +echo +echo === umount and reboot +echo + +run "umount drives" "umount -R /mnt" +run "close cryptelfroot" "cryptsetup close cryptelfroot" +run "reboot" "shutdown -r now" diff --git a/first-boot.sh b/first-boot.sh index 1d38d48..45a0e40 100644 --- a/first-boot.sh +++ b/first-boot.sh @@ -12,22 +12,23 @@ function run(){ box="sudo -u $USERNAME distrobox enter --name $1 --" fi echo "[ ] $1: $2" - echo "# $2" >>install.log - echo "$1> $3" >>install.log - bash -c "$box $3" &>>install.log \ + echo "# $2" >>first-boot.log + echo "$1> $3" >>first-boot.log + bash -c "$box $3" &>>first-boot.log \ && echo -e "\e[1A\e[K[ \e[32mOK\e[0m ] $1: $2" \ || { echo -e "\e[1A\e[K[\e[31mFAIL\e[0m] $1: $2" bash -c "$4" exit } - echo >>install.log + echo >>first-boot.log } echo echo === install tools echo +run root "start NetworkManager" "NetworkManager" run root "install base tools" "pacman -Sy --noconfirm \ usbutils dosfstools exfat-utils net-tools nmap \ vim curl ncdu neofetch btop git flatpak" @@ -36,11 +37,18 @@ run root "install gnome" "pacman -S --noconfirm gnome" run root "install distrobox" "pacman -S --noconfirm docker distrobox" run root "add $USERNAME to docker group" "usermod -aG docker $USERNAME" -run root "create home dirs" "sudo -u $USERNAME mkdir -p /home/$USERNAME/.local/python-env /home/$USERNAME/.ssh /home/$USERNAME/projects" +run root "create home dirs" "sudo -u $USERNAME mkdir -p \ + /home/$USERNAME/.local/python-env \ + /home/$USERNAME/.ssh \ + /home/$USERNAME/projects \ + /home/$USERNAME/.local/share/flatpak/overrides/" # run ubuntu "create python env" "python3 -m venv /home/$USERNAME/.local/python-env" run root "copy ssh config" "cp $SCRIPT_DIR/configs/sshConfig /home/$USERNAME/.ssh/config" run root "copy git config" "cp $SCRIPT_DIR/configs/gitconfig /home/$USERNAME/.gitconfig" run root "copy vim config" "cp $SCRIPT_DIR/configs/vimrc /home/$USERNAME/.vimrc" +run root "copy vim config" "cp $SCRIPT_DIR/configs/auto_clone.sh /home/$USERNAME/projects/auto_clone.sh" +run root "update polkit" "sed --in-place -e 's/wheel/admin/g' /usr/share/polkit-1/rules.d/50-default.rules" +run root "update fail lock" "sed --in-place -e 's/^deny = .*$/deny = 10/' -e 's/^unlock_time = .*$/unlock_time = 60/'" echo echo === setup blutooth @@ -67,20 +75,20 @@ run root "vscodium: build backage" "cd /tmp/vscodium-bin/ && sudo -u $USER run root "vscodium: install" 'cd /tmp/vscodium-bin/ && pacman -U --noconfirm $(ls /tmp/vscodium-bin/vscodium-bin-*.pkg.tar.zst)' run root "vscodium: add extentions" "codium --install-extension lvm-vs-code-extensions.vscode-clangd mhutchie.git-graph twxs.cmake" -run root "vscodium: add theros" "codium --install-extension teros-technology.teroshdl" -run root "install theros deps" "/home/$USERNAME/.local/python-env/bin/python3 -m pip teroshdl" +# run root "install theros deps" "/home/$USERNAME/.local/python-env/bin/python3 -m pip teroshdl" +# run root "vscodium: add theros" "codium --install-extension teros-technology.teroshdl" echo echo === install esp-idf echo -run root "install esp-idf deps" "pacman -S flex bison gperf ninja ccache libffi dfu-util libusb" +run root "install esp-idf deps" "pacman -S --noconfirm flex bison gperf ninja ccache libffi dfu-util libusb" run root "create folder for esp-idf" "mkdir /home/$USERNAME/.local/espressif" run root "clone idf-extra-components" "git clone https://github.com/espressif/esp-idf.git /home/$USERNAME/.local/espressif/esp-idf" run root "clone esp-idf" "git clone https://github.com/espressif/idf-extra-components.git /home/$USERNAME/.local/espressif/idf-extra-components" run root "clone esp-protocols" "git clone https://github.com/espressif/esp-protocols.git /home/$USERNAME/.local/espressif/esp-protocols" run root "clone esp-zigbee-sdk" "git clone https://github.com/espressif/esp-zigbee-sdk.git /home/$USERNAME/.local/espressif/esp-zigbee-sdk" -run root "install esp-idf" "IDF_TOOLS_PATH=/home/freenen/.local/espressif /home/$USERNAME/.local/espressif/esp-idf/install.sh all" +run root "install esp-idf" "IDF_TOOLS_PATH=/home/$USERNAME/.local/espressif /home/$USERNAME/.local/espressif/esp-idf/install.sh all" echo echo === install flatpaks @@ -91,16 +99,17 @@ function install_flatpak() { } run root "copy flatpak overrides" "cp $SCRIPT_DIR/configs/flatpak/* /home/$USERNAME/.local/share/flatpak/overrides/" +install_flatpak org.mozilla.firefox install_flatpak md.obsidian.Obsidian install_flatpak org.mozilla.Thunderbird -# install_flatpak org.mozilla.Firefox install_flatpak com.discordapp.Discord install_flatpak com.github.tchx84.Flatseal install_flatpak com.yubico.yubioath install_flatpak org.filezillaproject.Filezilla -install_flatpak org.gnome.moserial +# install_flatpak org.gnome.moserial +install_flatpak com.gitlab.cutecom.cutecom install_flatpak org.raspberrypi.rpi-imager -install_flatpak org.sdrangel.SDRangel +# install_flatpak org.sdrangel.SDRangel install_flatpak fr.handbrake.ghb install_flatpak org.inkscape.Inkscape install_flatpak org.gnome.Rhythmbox3