├── .github └── workflows │ ├── alis-site-deploy.yml │ └── shellcheck.yml ├── .gitignore ├── LICENSE ├── README.md ├── alis-asciinema.sh ├── alis-cloud-init-iso.sh ├── alis-cloud-init-ssh.sh ├── alis-commons.conf ├── alis-commons.sh ├── alis-kvm-virt-install.sh ├── alis-packages-asciinema.sh ├── alis-packages-exit.sh ├── alis-packages.conf ├── alis-packages.sh ├── alis-packer.sh ├── alis-reboot.sh ├── alis-recovery-asciinema.sh ├── alis-recovery-reboot.sh ├── alis-recovery.conf ├── alis-recovery.sh ├── alis.conf ├── alis.sh ├── cloud-init ├── meta-data └── user-data ├── configs ├── alis-config-bios-ext4-grub-luks-lvm.sh ├── alis-config-bios-ext4-grub.sh ├── alis-config-efi-btrfs-luks-lvm-systemd-aur.sh ├── alis-config-efi-btrfs-systemd.sh ├── alis-config-efi-ext4-grub-gnome.sh ├── alis-config-efi-ext4-grub-i3-wm.sh ├── alis-config-efi-ext4-grub-kde.sh ├── alis-config-efi-ext4-grub-xfce.sh ├── alis-config-efi-ext4-grub.sh ├── alis-config-efi-ext4-luks-grub.sh ├── alis-config-efi-ext4-luks-lvm-grub.sh ├── alis-config-efi-ext4-luks-lvm-systemd-systemdhomed.sh ├── alis-config-efi-ext4-luks-lvm-systemd-zsh.sh ├── alis-config-efi-ext4-luks-lvm-systemd.sh ├── alis-config-efi-ext4-luks-systemd.sh ├── alis-config-efi-ext4-lvm-systemd.sh ├── alis-config-efi-ext4-systemd-gnome-pipewire.sh ├── alis-config-efi-ext4-systemd-gnome.sh ├── alis-config-efi-ext4-systemd.sh ├── alis-config-efi-f2fs-luks-lvm-systemd.sh └── alis-packer.json ├── download-sid.sh ├── download.sh ├── files └── etc │ └── X11 │ └── xorg.conf.d │ └── 99-killX.conf ├── images ├── archlinux-badge.svg ├── archlinux-cinnamon-thumb.jpg ├── archlinux-cinnamon.jpg ├── archlinux-gnome-thumb.jpg ├── archlinux-gnome.jpg ├── archlinux-kde-thumb.jpg ├── archlinux-kde.jpg ├── archlinux-lxde-thumb.jpg ├── archlinux-lxde.jpg ├── archlinux-mate-thumb.jpg ├── archlinux-mate.jpg ├── archlinux-root-password-thumb.png ├── archlinux-root-password.png ├── archlinux-xfce-thumb.jpg ├── archlinux-xfce.jpg ├── archlinux.svg └── sh-bash-badge.svg └── site ├── .gitignore ├── .hugo_build.lock ├── archetypes └── default.md ├── build-deploy-github.sh ├── build-deploy.sh ├── config.yaml ├── content ├── _index.markdown ├── install.sh └── pages │ ├── getting-started │ └── index.markdown │ ├── installation │ └── index.markdown │ ├── overview │ └── index.markdown │ └── user-guide │ ├── code │ ├── alis-cloud.sh │ ├── alis-packages.sh │ ├── alis.sh │ ├── aur-package-install.sh │ ├── download-conf.sh │ ├── download.sh │ ├── install.sh │ ├── loadkeys.sh │ ├── ls-alis.sh │ ├── media-fingerprint.sh │ ├── package-downgrade.sh │ ├── pacman-package-install.sh │ ├── pacman-update.sh │ ├── recovery.sh │ ├── vim-alis-conf.sh │ └── vim-alis-packages-conf.sh │ ├── images │ ├── alis-cloud-init-ssh.png │ ├── alis-start.png │ ├── arch-linux-installation.png │ ├── arch-linux-terminal-login.png │ ├── archlinux-installation-start.png │ ├── archlinux-media.png │ ├── balena-etcher.png │ ├── gnome-desktop.png │ └── gnome-software.png │ └── index.markdown ├── deploy-github.sh ├── install.sh ├── reset-deploy.sh ├── server.sh ├── static └── images │ ├── archlinux-gnome.jpg │ ├── archlinux-kde.jpg │ └── archlinux-xfce.jpg └── themes └── alis ├── assets ├── main.scss └── syntax.css ├── data └── theme │ └── conf.yml ├── layouts ├── _default │ ├── _markup │ │ ├── render-image.html │ │ └── render-link.html │ ├── baseof.html │ ├── index.html │ ├── list.html │ └── single.html ├── index.html ├── pages │ └── single.html ├── partials │ ├── ad-sidebar.html │ ├── css.html │ ├── javascript.html │ ├── meta.html │ └── navbar.html └── shortcodes │ ├── ad-bilboard.html │ ├── code.html │ ├── image.html │ ├── markdown.html │ └── tableofcontents.html └── static └── images ├── favicon.png └── logotypes ├── archlinux-logo-dark.svg ├── archlinux-logo-light.svg ├── bash.svg ├── gnome.svg ├── gnu.svg ├── kde.svg ├── linux.svg └── xfce.svg /.github/workflows/alis-site-deploy.yml: -------------------------------------------------------------------------------- 1 | name: alis-site-deploy 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | env: 10 | HUGO_VERSION: 0.135.0 11 | steps: 12 | - uses: actions/checkout@v4 13 | with: 14 | ref: main 15 | - uses: actions/checkout@v4 16 | with: 17 | path: site/deploy/ 18 | ref: gh-pages 19 | - name: Environment information 20 | run: | 21 | uname -a 22 | lsb_release -a 23 | - name: Cache hugo resources 24 | uses: actions/cache@v2 25 | env: 26 | cache-name: cache-hugo-resources 27 | with: 28 | path: ./resources 29 | key: ${{ runner.os }}-build-${{ env.cache-name }} 30 | - name: Install packages (hugo) 31 | run: | 32 | wget https://github.com/gohugoio/hugo/releases/download/v${{ env.HUGO_VERSION }}/hugo_extended_${{ env.HUGO_VERSION }}_Linux-64bit.tar.gz 33 | tar xzf hugo_extended_${{ env.HUGO_VERSION }}_Linux-64bit.tar.gz hugo 34 | rm hugo_extended_${{ env.HUGO_VERSION }}_Linux-64bit.tar.gz 35 | chmod +x ./hugo 36 | sudo mv ./hugo /usr/local/bin 37 | - name: Echo content (deploy) 38 | run: | 39 | ls site/deploy/ 40 | - name: Generate content 41 | run: | 42 | cd site/ 43 | hugo gen chromastyles --style=github > themes/alis/assets/syntax.css 44 | hugo --destination="deploy/" --gc --cleanDestinationDir 45 | - name: Echo content (deploy) 46 | run: | 47 | ls site/deploy/ 48 | - name: Deploy 49 | run: | 50 | cd site/deploy/ 51 | git config user.name github-actions 52 | git config user.email github-actions@github.com 53 | git add . 54 | git commit -m "Site update at `LC_ALL=en_US.utf8 date +%Y-%m-%dT%H:%M:%S%z`" 55 | git push origin gh-pages 56 | cd .. 57 | 58 | -------------------------------------------------------------------------------- /.github/workflows/shellcheck.yml: -------------------------------------------------------------------------------- 1 | 2 | name: Shellcheck 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | shellcheck: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v4 16 | - name: Run ShellCheck 17 | uses: ludeeus/action-shellcheck@master -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | packer_cache/ 2 | output-archlinux-alis-virtualbox/ 3 | 4 | site/resources/_gen/ 5 | *.vala 6 | *.patch 7 | *.iso 8 | cloud-init/alis.key 9 | cloud-init/iso/ 10 | -------------------------------------------------------------------------------- /alis-asciinema.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # Arch Linux Install Script (alis) installs unattended, automated 5 | # and customized Arch Linux system. 6 | # Copyright (C) 2022 picodotdev 7 | 8 | #curl -L -o asciinema-2.0.2.zip https://github.com/asciinema/asciinema/archive/v2.0.2.zip 9 | #bsdtar xvf asciinema-2.0.2.zip 10 | #rm -f alis.asciinema 11 | #(cd asciinema-2.0.2 && python3 -m asciinema rec --stdin -i 5 ~/alis.asciinema) 12 | 13 | rm -f alis.asciinema 14 | 15 | pacman -Sy 16 | pacman -S --noconfirm asciinema 17 | 18 | clear 19 | asciinema rec --stdin -i 5 ~/alis.asciinema 20 | 21 | -------------------------------------------------------------------------------- /alis-cloud-init-iso.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | set -o xtrace 4 | 5 | if [ ! -f cloud-init/alis.key ]; then 6 | openssl genrsa -out cloud-init/alis.key 8192 7 | fi 8 | SSH_RSA=$(ssh-keygen -y -f cloud-init/alis.key) 9 | mkdir -p cloud-init/iso/ 10 | cp cloud-init/meta-data cloud-init/user-data cloud-init/iso/ 11 | sed -i "s#\\\${SSH_RSA}#${SSH_RSA}#" cloud-init/iso/user-data 12 | mkisofs -o cloud-init/alis-cloud-init.iso -V CIDATA -iso-level 3 -J -R cloud-init/iso/ -------------------------------------------------------------------------------- /alis-cloud-init-ssh.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # ./alis-cloud-init-ssh.sh -b sid -i 192.168.122.61 -c alis-config-efi-ext4-luks-systemd.sh 5 | 6 | GITHUB_USER="picodotdev" 7 | BRANCH="main" 8 | BRANCH_QUALIFIER="" 9 | IP_ADDRESS="" 10 | VM_TYPE="virtualbox" 11 | VM_NAME="Arch Linux" 12 | CONFIG_FILE_SH="alis-config-efi-ext4-systemd.sh" 13 | 14 | while getopts "b:c:i:n:t:u:" arg; do 15 | case $arg in 16 | b) 17 | BRANCH="$OPTARG" 18 | ;; 19 | c) 20 | CONFIG_FILE_SH="$OPTARG" 21 | ;; 22 | i) 23 | IP_ADDRESS="$OPTARG" 24 | ;; 25 | n) 26 | VM_NAME="$OPTARG" 27 | ;; 28 | t) 29 | VM_TYPE="$OPTARG" 30 | ;; 31 | u) 32 | GITHUB_USER=${OPTARG} 33 | ;; 34 | *) 35 | echo "Unknown option: $arg" 36 | exit 1 37 | ;; 38 | esac 39 | done 40 | 41 | if [ "$BRANCH" == "sid" ]; then 42 | BRANCH_QUALIFIER="-sid" 43 | fi 44 | 45 | if [ "$IP_ADDRESS" == "" ] && [ "$VM_TYPE" != "" ] && [ "$VM_NAME" != "" ]; then 46 | IP_ADDRESS=$(VBoxManage guestproperty get "${VM_NAME}" "/VirtualBox/GuestInfo/Net/0/V4/IP" | cut -f2 -d " ") 47 | fi 48 | 49 | set -o xtrace 50 | ssh-keygen -R "$IP_ADDRESS" 51 | ssh-keyscan -H "$IP_ADDRESS" >> ~/.ssh/known_hosts 52 | 53 | ssh -t -i cloud-init/alis.key root@"$IP_ADDRESS" "bash -c \"curl -sL https://raw.githubusercontent.com/${GITHUB_USER}/alis/${BRANCH}/download${BRANCH_QUALIFIER}.sh | bash -s -- -b ${BRANCH}\"" 54 | 55 | if [ -z "$CONFIG_FILE_SH" ]; then 56 | ssh -t -i cloud-init/alis.key root@"$IP_ADDRESS" 57 | else 58 | ssh -t -i cloud-init/alis.key root@"$IP_ADDRESS" "bash -c \"configs/$CONFIG_FILE_SH\"" 59 | ssh -t -i cloud-init/alis.key root@"$IP_ADDRESS" "bash -c \"./alis.sh -w\"" 60 | fi 61 | -------------------------------------------------------------------------------- /alis-commons.conf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # Arch Linux Install Script (alis) installs unattended, automated 5 | # and customized Arch Linux system. 6 | # Copyright (C) 2022 picodotdev 7 | 8 | # Common configuration. 9 | 10 | WARNING_CONFIRM="true" 11 | 12 | COMMOMS_LOADED="true" 13 | PARTITION_BOOT="" 14 | PARTITION_ROOT="" 15 | PARTITION_BOOT_NUMBER="" 16 | PARTITION_ROOT_NUMBER="" 17 | DEVICE_ROOT="" 18 | DEVICE_LVM="" 19 | LUKS_DEVICE_NAME="root" 20 | LVM_VOLUME_GROUP="vg" 21 | LVM_VOLUME_LOGICAL="root" 22 | SWAPFILE="/swapfile" 23 | BOOT_DIRECTORY="" 24 | ESP_DIRECTORY="" 25 | UUID_BOOT="" 26 | UUID_ROOT="" 27 | PARTUUID_BOOT="" 28 | PARTUUID_ROOT="" 29 | CMDLINE_LINUX_ROOT="" 30 | CMDLINE_LINUX="" 31 | BTRFS_SUBVOLUME_ROOT=() 32 | BTRFS_SUBVOLUME_SWAP=() 33 | USER_NAME_INSTALL="root" 34 | 35 | MNT_DIR="/mnt" 36 | 37 | AUR_PACKAGE="paru-bin" 38 | AUR_COMMAND="paru" 39 | 40 | BIOS_TYPE="" 41 | ASCIINEMA="" 42 | DEVICE_SDA="false" 43 | DEVICE_NVME="false" 44 | DEVICE_VDA="false" 45 | DEVICE_MMC="false" 46 | CPU_VENDOR="" 47 | GPU_VENDOR="" 48 | VIRTUALBOX="" 49 | VMWARE="" 50 | SYSTEM_INSTALLATION="" 51 | INITRD_MICROCODE="" 52 | 53 | LOG_TRACE="true" 54 | LOG_FILE="false" 55 | USER_NAME="picodotdev" 56 | USER_PASSWORD="ask" 57 | PACKAGES_PIPEWIRE="false" 58 | -------------------------------------------------------------------------------- /alis-commons.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # shellcheck disable=SC2034,SC2001,SC2155,SC2153,SC2143 3 | # SC2034: foo appears unused. Verify it or export it. 4 | # SC2001: See if you can use ${variable//search/replace} instead. 5 | # SC2155 Declare and assign separately to avoid masking return values 6 | # SC2153: Possible Misspelling: MYVARIABLE may not be assigned. Did you mean MY_VARIABLE? 7 | # SC2143: Use grep -q instead of comparing output with [ -n .. ]. 8 | 9 | set -eu 10 | 11 | # Arch Linux Install Script (alis) installs unattended, automated 12 | # and customized Arch Linux system. 13 | # Copyright (C) 2022 picodotdev 14 | 15 | # Common functions and definitions. 16 | 17 | # common static variables 18 | ALIS_CONF_FILE="alis.conf" 19 | ALIS_LOG_FILE="alis.log" 20 | ALIS_ASCIINEMA_FILE="alis.asciinema" 21 | RECOVERY_CONF_FILE="alis-recovery.conf" 22 | RECOVERY_LOG_FILE="alis-recovery.log" 23 | RECOVERY_ASCIINEMA_FILE="alis-recovery.asciinema" 24 | PACKAGES_CONF_FILE="alis-packages.conf" 25 | PACKAGES_LOG_FILE="alis-packages.log" 26 | COMMONS_CONF_FILE="alis-commons.conf" 27 | PROVISION_DIRECTORY="files/" 28 | 29 | RED='\033[0;91m' 30 | GREEN='\033[0;92m' 31 | BLUE='\033[0;96m' 32 | WHITE='\033[0;97m' 33 | NC='\033[0m' 34 | 35 | function sanitize_variable() { 36 | local VARIABLE="$1" 37 | local VARIABLE=$(echo "$VARIABLE" | sed "s/![^ ]*//g") # remove disabled 38 | local VARIABLE=$(echo "$VARIABLE" | sed -r "s/ {2,}/ /g") # remove unnecessary white spaces 39 | local VARIABLE=$(echo "$VARIABLE" | sed 's/^[[:space:]]*//') # trim leading 40 | local VARIABLE=$(echo "$VARIABLE" | sed 's/[[:space:]]*$//') # trim trailing 41 | echo "$VARIABLE" 42 | } 43 | 44 | function trim_variable() { 45 | local VARIABLE="$1" 46 | local VARIABLE=$(echo "$VARIABLE" | sed 's/^[[:space:]]*//') # trim leading 47 | local VARIABLE=$(echo "$VARIABLE" | sed 's/[[:space:]]*$//') # trim trailing 48 | echo "$VARIABLE" 49 | } 50 | 51 | function check_variables_value() { 52 | local NAME="$1" 53 | local VALUE="$2" 54 | if [ -z "$VALUE" ]; then 55 | echo "$NAME environment variable must have a value." 56 | exit 1 57 | fi 58 | } 59 | 60 | function check_variables_boolean() { 61 | local NAME="$1" 62 | local VALUE="$2" 63 | check_variables_list "$NAME" "$VALUE" "true false" "true" "true" 64 | } 65 | 66 | function check_variables_list() { 67 | local NAME="$1" 68 | local VALUE="$2" 69 | local VALUES="$3" 70 | local REQUIRED="$4" 71 | local SINGLE="$5" 72 | 73 | if [ "$REQUIRED" == "" ] || [ "$REQUIRED" == "true" ]; then 74 | check_variables_value "$NAME" "$VALUE" 75 | fi 76 | 77 | if [[ ("$SINGLE" == "" || "$SINGLE" == "true") && "$VALUE" != "" && "$VALUE" =~ " " ]]; then 78 | echo "$NAME environment variable value [$VALUE] must be a single value of [$VALUES]." 79 | exit 1 80 | fi 81 | 82 | if [ "$VALUE" != "" ] && [ -z "$(echo "$VALUES" | grep -F -w "$VALUE")" ]; then #SC2143 83 | echo "$NAME environment variable value [$VALUE] must be in [$VALUES]." 84 | exit 1 85 | fi 86 | } 87 | 88 | function check_variables_equals() { 89 | local NAME1="$1" 90 | local NAME2="$2" 91 | local VALUE1="$3" 92 | local VALUE2="$4" 93 | if [ "$VALUE1" != "$VALUE2" ]; then 94 | echo "$NAME1 and $NAME2 must be equal [$VALUE1, $VALUE2]." 95 | exit 1 96 | fi 97 | } 98 | 99 | function check_variables_size() { 100 | local NAME="$1" 101 | local SIZE_EXPECT="$2" 102 | local SIZE="$3" 103 | if [ "$SIZE_EXPECT" != "$SIZE" ]; then 104 | echo "$NAME array size [$SIZE] must be [$SIZE_EXPECT]." 105 | exit 1 106 | fi 107 | } 108 | 109 | function configure_network() { 110 | if [ -n "$WIFI_INTERFACE" ]; then 111 | iwctl --passphrase "$WIFI_KEY" station "$WIFI_INTERFACE" connect "$WIFI_ESSID" 112 | sleep 10 113 | fi 114 | 115 | # only one ping -c 1, ping gets stuck if -c 5 116 | if ! ping -c 1 -i 2 -W 5 -w 30 "$PING_HOSTNAME"; then 117 | echo "Network ping check failed. Cannot continue." 118 | exit 1 119 | fi 120 | } 121 | 122 | function facts_commons() { 123 | if [ -d /sys/firmware/efi ]; then 124 | BIOS_TYPE="uefi" 125 | else 126 | BIOS_TYPE="bios" 127 | fi 128 | 129 | if [ -f "$ALIS_ASCIINEMA_FILE" ] || [ -f "$RECOVERY_ASCIINEMA_FILE" ]; then 130 | ASCIINEMA="true" 131 | else 132 | ASCIINEMA="false" 133 | fi 134 | 135 | if lscpu | grep -q "GenuineIntel"; then 136 | CPU_VENDOR="intel" 137 | elif lscpu | grep -q "AuthenticAMD"; then 138 | CPU_VENDOR="amd" 139 | else 140 | CPU_VENDOR="" 141 | fi 142 | 143 | if lspci -nn | grep "\[03" | grep -qi "intel"; then 144 | GPU_VENDOR="intel" 145 | elif lspci -nn | grep "\[03" | grep -qi "amd"; then 146 | GPU_VENDOR="amd" 147 | elif lspci -nn | grep "\[03" | grep -qi "nvidia"; then 148 | GPU_VENDOR="nvidia" 149 | elif lspci -nn | grep "\[03" | grep -qi "vmware"; then 150 | GPU_VENDOR="vmware" 151 | else 152 | GPU_VENDOR="" 153 | fi 154 | 155 | if systemd-detect-virt | grep -qi "oracle"; then 156 | VIRTUALBOX="true" 157 | else 158 | VIRTUALBOX="false" 159 | fi 160 | 161 | if systemd-detect-virt | grep -qi "vmware"; then 162 | VMWARE="true" 163 | else 164 | VMWARE="false" 165 | fi 166 | 167 | INITRD_MICROCODE="" 168 | if [ "$VIRTUALBOX" != "true" ] && [ "$VMWARE" != "true" ]; then 169 | if [ "$CPU_VENDOR" == "intel" ]; then 170 | INITRD_MICROCODE="intel-ucode.img" 171 | elif [ "$CPU_VENDOR" == "amd" ]; then 172 | INITRD_MICROCODE="amd-ucode.img" 173 | fi 174 | fi 175 | 176 | USER_NAME_INSTALL="$(whoami)" 177 | if [ "$USER_NAME_INSTALL" == "root" ]; then 178 | SYSTEM_INSTALLATION="true" 179 | else 180 | SYSTEM_INSTALLATION="false" 181 | fi 182 | } 183 | 184 | function init_log_trace() { 185 | local ENABLE="$1" 186 | if [ "$ENABLE" == "true" ]; then 187 | set -o xtrace 188 | fi 189 | } 190 | 191 | function init_log_file() { 192 | local ENABLE="$1" 193 | local FILE="$2" 194 | if [ "$ENABLE" == "true" ]; then 195 | exec &> >(tee -a "$FILE") 196 | fi 197 | } 198 | 199 | function pacman_uninstall() { 200 | local ERROR="true" 201 | local PACKAGES=() 202 | set +e 203 | IFS=' ' read -ra PACKAGES <<< "$1" 204 | local PACKAGES_UNINSTALL=() 205 | for PACKAGE in "${PACKAGES[@]}" 206 | do 207 | execute_sudo "pacman -Qi $PACKAGE > /dev/null 2>&1" 208 | local PACKAGE_INSTALLED=$? 209 | if [ $PACKAGE_INSTALLED == 0 ]; then 210 | local PACKAGES_UNINSTALL+=("$PACKAGE") 211 | fi 212 | done 213 | if [ -z "${PACKAGES_UNINSTALL[*]}" ]; then 214 | return 215 | fi 216 | local COMMAND="pacman -Rdd --noconfirm ${PACKAGES_UNINSTALL[*]}" 217 | if execute_sudo "$COMMAND"; then 218 | local ERROR="false" 219 | fi 220 | set -e 221 | if [ "$ERROR" == "true" ]; then 222 | exit 1 223 | fi 224 | } 225 | 226 | function pacman_install() { 227 | local ERROR="true" 228 | local PACKAGES=() 229 | set +e 230 | IFS=' ' read -ra PACKAGES <<< "$1" 231 | for VARIABLE in {1..5} 232 | do 233 | local COMMAND="pacman -Syu --noconfirm --needed ${PACKAGES[*]}" 234 | if execute_sudo "$COMMAND"; then 235 | local ERROR="false" 236 | break 237 | else 238 | sleep 10 239 | fi 240 | done 241 | set -e 242 | if [ "$ERROR" == "true" ]; then 243 | exit 1 244 | fi 245 | } 246 | 247 | function aur_install() { 248 | local ERROR="true" 249 | local PACKAGES=() 250 | set +e 251 | which "$AUR_COMMAND" 252 | if [ "$AUR_COMMAND" != "0" ]; then 253 | aur_command_install "$USER_NAME" "$AUR_PACKAGE" 254 | fi 255 | IFS=' ' read -ra PACKAGES <<< "$1" 256 | for VARIABLE in {1..5} 257 | do 258 | local COMMAND="$AUR_COMMAND -Syu --noconfirm --needed ${PACKAGES[*]}" 259 | if execute_aur "$COMMAND"; then 260 | local ERROR="false" 261 | break 262 | else 263 | sleep 10 264 | fi 265 | done 266 | set -e 267 | if [ "$ERROR" == "true" ]; then 268 | return 269 | fi 270 | } 271 | 272 | function aur_command_install() { 273 | pacman_install "git" 274 | local USER_NAME="$1" 275 | local COMMAND="$2" 276 | execute_aur "rm -rf /home/$USER_NAME/.alis && mkdir -p /home/$USER_NAME/.alis/aur && cd /home/$USER_NAME/.alis/aur && git clone https://aur.archlinux.org/${COMMAND}.git && (cd $COMMAND && makepkg -si --noconfirm) && rm -rf /home/$USER_NAME/.alis" 277 | } 278 | 279 | function systemd_units() { 280 | local UNITS=() 281 | IFS=' ' read -ra UNITS <<< "$SYSTEMD_UNITS" 282 | for U in "${UNITS[@]}"; do 283 | local ACTION="" 284 | local UNIT=${U} 285 | if [[ $UNIT == -* ]]; then 286 | local ACTION="disable" 287 | local UNIT=$(echo "$UNIT" | sed "s/^-//g") 288 | elif [[ $UNIT == +* ]]; then 289 | local ACTION="enable" 290 | local UNIT=$(echo "$UNIT" | sed "s/^+//g") 291 | elif [[ $UNIT =~ ^[a-zA-Z0-9]+ ]]; then 292 | local ACTION="enable" 293 | local UNIT=$UNIT 294 | fi 295 | 296 | if [ -n "$ACTION" ]; then 297 | execute_sudo "systemctl $ACTION $UNIT" 298 | fi 299 | done 300 | } 301 | 302 | function execute_flatpak() { 303 | local COMMAND="$1" 304 | if [ "$SYSTEM_INSTALLATION" == "true" ]; then 305 | arch-chroot "${MNT_DIR}" bash -c "$COMMAND" 306 | else 307 | bash -c "$COMMAND" 308 | fi 309 | } 310 | 311 | function execute_aur() { 312 | local COMMAND="$1" 313 | if [ "$SYSTEM_INSTALLATION" == "true" ]; then 314 | arch-chroot "${MNT_DIR}" sed -i 's/^%wheel ALL=(ALL:ALL) ALL$/%wheel ALL=(ALL:ALL) NOPASSWD: ALL/' /etc/sudoers 315 | arch-chroot "${MNT_DIR}" bash -c "echo -e \"$USER_PASSWORD\n$USER_PASSWORD\n$USER_PASSWORD\n$USER_PASSWORD\n\" | su $USER_NAME -s /usr/bin/bash -c \"$COMMAND\"" 316 | arch-chroot "${MNT_DIR}" sed -i 's/^%wheel ALL=(ALL:ALL) NOPASSWD: ALL$/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers 317 | else 318 | bash -c "$COMMAND" 319 | fi 320 | } 321 | 322 | function execute_sudo() { 323 | local COMMAND="$1" 324 | if [ "$SYSTEM_INSTALLATION" == "true" ]; then 325 | arch-chroot "${MNT_DIR}" bash -c "$COMMAND" 326 | else 327 | sudo bash -c "$COMMAND" 328 | fi 329 | } 330 | 331 | function execute_user() { 332 | local USER_NAME="$1" 333 | local COMMAND="$2" 334 | if [ "$SYSTEM_INSTALLATION" == "true" ]; then 335 | arch-chroot "${MNT_DIR}" bash -c "su $USER_NAME -s /usr/bin/bash -c \"$COMMAND\"" 336 | else 337 | bash -c "$COMMAND" 338 | fi 339 | } 340 | 341 | function do_reboot() { 342 | umount -R "${MNT_DIR}"/boot 343 | umount -R "${MNT_DIR}" 344 | reboot 345 | } 346 | 347 | function print_step() { 348 | STEP="$1" 349 | echo "" 350 | echo -e "${BLUE}# ${STEP} step${NC}" 351 | echo "" 352 | } 353 | 354 | function execute_step() { 355 | local STEP="$1" 356 | eval "$STEP" 357 | } 358 | 359 | function partition_setup() { 360 | # setup 361 | if [ "$PARTITION_MODE" == "auto" ]; then 362 | PARTITION_PARTED_FILE_SYSTEM_TYPE="$FILE_SYSTEM_TYPE" 363 | if [ "$PARTITION_PARTED_FILE_SYSTEM_TYPE" == "f2fs" ]; then 364 | PARTITION_PARTED_FILE_SYSTEM_TYPE="" 365 | fi 366 | PARTITION_PARTED_UEFI="mklabel gpt mkpart ESP fat32 1MiB 512MiB mkpart root $PARTITION_PARTED_FILE_SYSTEM_TYPE 512MiB 100% set 1 esp on" 367 | PARTITION_PARTED_BIOS="mklabel msdos mkpart primary ext4 4MiB 512MiB mkpart primary $PARTITION_PARTED_FILE_SYSTEM_TYPE 512MiB 100% set 1 boot on" 368 | elif [ "$PARTITION_MODE" == "custom" ]; then 369 | PARTITION_PARTED_UEFI="$PARTITION_CUSTOM_PARTED_UEFI" 370 | PARTITION_PARTED_BIOS="$PARTITION_CUSTOM_PARTED_BIOS" 371 | fi 372 | 373 | if [ "$DEVICE_SDA" == "true" ]; then 374 | PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")" 375 | PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 376 | DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 377 | fi 378 | 379 | if [ "$DEVICE_NVME" == "true" ]; then 380 | PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")" 381 | PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 382 | DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 383 | fi 384 | 385 | if [ "$DEVICE_VDA" == "true" ]; then 386 | PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")" 387 | PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 388 | DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 389 | fi 390 | 391 | if [ "$DEVICE_MMC" == "true" ]; then 392 | PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")" 393 | PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 394 | DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")" 395 | fi 396 | } 397 | 398 | function partition_device() { 399 | local DEVICE="$1" 400 | local NUMBER="$2" 401 | local PARTITION_DEVICE="" 402 | 403 | if [ "$DEVICE_SDA" == "true" ]; then 404 | PARTITION_DEVICE="${DEVICE}${NUMBER}" 405 | fi 406 | 407 | if [ "$DEVICE_NVME" == "true" ]; then 408 | PARTITION_DEVICE="${DEVICE}p${NUMBER}" 409 | fi 410 | 411 | if [ "$DEVICE_VDA" == "true" ]; then 412 | PARTITION_DEVICE="${DEVICE}${NUMBER}" 413 | fi 414 | 415 | if [ "$DEVICE_MMC" == "true" ]; then 416 | PARTITION_DEVICE="${DEVICE}p${NUMBER}" 417 | fi 418 | 419 | echo "$PARTITION_DEVICE" 420 | } 421 | 422 | function partition_options() { 423 | PARTITION_OPTIONS_BOOT="defaults" 424 | PARTITION_OPTIONS="defaults" 425 | 426 | if [ "$BIOS_TYPE" == "uefi" ]; then 427 | PARTITION_OPTIONS_BOOT="$PARTITION_OPTIONS_BOOT,uid=0,gid=0,fmask=0077,dmask=0077" 428 | fi 429 | if [ "$DEVICE_TRIM" == "true" ]; then 430 | PARTITION_OPTIONS_BOOT="$PARTITION_OPTIONS_BOOT,noatime" 431 | PARTITION_OPTIONS="$PARTITION_OPTIONS,noatime" 432 | if [ "$FILE_SYSTEM_TYPE" == "f2fs" ]; then 433 | PARTITION_OPTIONS="$PARTITION_OPTIONS,nodiscard" 434 | fi 435 | fi 436 | } 437 | 438 | function partition_mount() { 439 | if [ "$FILE_SYSTEM_TYPE" == "btrfs" ]; then 440 | # mount subvolumes 441 | mount -o "subvol=${BTRFS_SUBVOLUME_ROOT[1]},$PARTITION_OPTIONS,compress=zstd" "$DEVICE_ROOT" "${MNT_DIR}" 442 | mkdir -p "${MNT_DIR}"/boot 443 | mount -o "$PARTITION_OPTIONS_BOOT" "$PARTITION_BOOT" "${MNT_DIR}"/boot 444 | for I in "${BTRFS_SUBVOLUMES_MOUNTPOINTS[@]}"; do 445 | IFS=',' read -ra SUBVOLUME <<< "$I" 446 | if [ "${SUBVOLUME[0]}" == "root" ]; then 447 | continue 448 | fi 449 | if [ "${SUBVOLUME[0]}" == "swap" ] && [ -z "$SWAP_SIZE" ]; then 450 | continue 451 | fi 452 | if [ "${SUBVOLUME[0]}" == "swap" ]; then 453 | mkdir -p "${MNT_DIR}${SUBVOLUME[2]}" 454 | chmod 0755 "${MNT_DIR}${SUBVOLUME[2]}" 455 | else 456 | mkdir -p "${MNT_DIR}${SUBVOLUME[2]}" 457 | fi 458 | mount -o "subvol=${SUBVOLUME[1]},$PARTITION_OPTIONS,compress=zstd" "$DEVICE_ROOT" "${MNT_DIR}${SUBVOLUME[2]}" 459 | done 460 | else 461 | # root 462 | mount -o "$PARTITION_OPTIONS" "$DEVICE_ROOT" "${MNT_DIR}" 463 | 464 | # boot 465 | mkdir -p "${MNT_DIR}"/boot 466 | mount -o "$PARTITION_OPTIONS_BOOT" "$PARTITION_BOOT" "${MNT_DIR}"/boot 467 | 468 | # mount points 469 | for I in "${PARTITION_MOUNT_POINTS[@]}"; do 470 | if [[ "$I" =~ ^!.* ]]; then 471 | continue 472 | fi 473 | IFS='=' read -ra PARTITION_MOUNT_POINT <<< "$I" 474 | if [ "${PARTITION_MOUNT_POINT[1]}" == "/boot" ] || [ "${PARTITION_MOUNT_POINT[1]}" == "/" ]; then 475 | continue 476 | fi 477 | local PARTITION_DEVICE="$(partition_device "${DEVICE}" "${PARTITION_MOUNT_POINT[0]}")" 478 | mkdir -p "${MNT_DIR}${PARTITION_MOUNT_POINT[1]}" 479 | mount -o "$PARTITION_OPTIONS" "${PARTITION_DEVICE}" "${MNT_DIR}${PARTITION_MOUNT_POINT[1]}" 480 | done 481 | fi 482 | } 483 | 484 | function ask_password() { 485 | PASSWORD_NAME="$1" 486 | PASSWORD_VARIABLE="$2" 487 | read -r -sp "Type ${PASSWORD_NAME} password: " PASSWORD1 488 | echo "" 489 | read -r -sp "Retype ${PASSWORD_NAME} password: " PASSWORD2 490 | echo "" 491 | if [[ "$PASSWORD1" == "$PASSWORD2" ]]; then 492 | declare -n VARIABLE="${PASSWORD_VARIABLE}" 493 | VARIABLE="$PASSWORD1" 494 | else 495 | echo "${PASSWORD_NAME} password don't match. Please, type again." 496 | ask_password "${PASSWORD_NAME}" "${PASSWORD_VARIABLE}" 497 | fi 498 | } 499 | -------------------------------------------------------------------------------- /alis-kvm-virt-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # https://wiki.archlinux.org/title/Libvirt#Server 5 | # https://wiki.archlinux.org/title/QEMU#Bridged_networking_using_qemu-bridge-helper 6 | # sudo pacman -S virt-install dnsmasq dmidecode 7 | # sudo usermod -a -G libvirtd picodotdev 8 | # sudo systemctl start libvirtd.service 9 | # mkdir -p /etc/qemu 10 | # vim /etc/qemu/bridge.conf 11 | # allow virbr0 12 | 13 | # 3D Acceleration 14 | # Host and guest shared clipboard 15 | # Host and guest file sharing 16 | 17 | DISK_DIRECTORY="/run/media/picodotdev/Samsung microSD/KVM VMs" 18 | ISO_DIRECTORY="/run/media/picodotdev/Samsung microSD/Iso" 19 | 20 | virt-install \ 21 | --connect=qemu:///session \ 22 | --name archlinux-alis \ 23 | --os-variant archlinux \ 24 | --vcpu 2 \ 25 | --ram 4096 \ 26 | --boot uefi \ 27 | --disk path="$DISK_DIRECTORY/archlinux-alis.qcow2,format=qcow2,size=40,sparse=yes" \ 28 | --cdrom "$ISO_DIRECTORY/archlinux-x86_64.iso" \ 29 | --disk cloud-init/alis-cloud-init.iso,device=cdrom,bus=sata \ 30 | --network bridge=virbr0 \ 31 | --noautoconsole 32 | -------------------------------------------------------------------------------- /alis-packages-asciinema.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # Arch Linux Install Script (alis) installs unattended, automated 5 | # and customized Arch Linux system. 6 | # Copyright (C) 2022 picodotdev 7 | 8 | #curl -L -o asciinema-2.0.2.zip https://github.com/asciinema/asciinema/archive/v2.0.2.zip 9 | #bsdtar xvf asciinema-2.0.2.zip 10 | #rm -f alis.asciinema 11 | #(cd asciinema-2.0.2 && python3 -m asciinema rec --stdin -i 5 ~/alis.asciinema) 12 | 13 | rm -f alis-packages.asciinema 14 | 15 | #pacman -S --noconfirm asciinema 16 | 17 | clear 18 | asciinema rec --stdin -i 5 ~/alis-packages.asciinema 19 | 20 | -------------------------------------------------------------------------------- /alis-packages-exit.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # Arch Linux Install Script (alis) installs unattended, automated 5 | # and customized Arch Linux system. 6 | # Copyright (C) 2022 picodotdev 7 | 8 | LOG_FILE="alis-packages.log" 9 | ASCIINEMA_FILE="alis-packages.asciinema" 10 | 11 | function copy_logs() { 12 | if [ -f "$LOG_FILE" ]; then 13 | sudo mkdir -p /var/log/alis 14 | sudo cp "$LOG_FILE" "/var/log/alis/$LOG_FILE" 15 | fi 16 | if [ -f "$ASCIINEMA_FILE" ]; then 17 | sudo mkdir -p /var/log/alis 18 | sudo cp "$ASCIINEMA_FILE" "/var/log/alis/$ASCIINEMA_FILE" 19 | fi 20 | } 21 | 22 | copy_logs 23 | 24 | -------------------------------------------------------------------------------- /alis-packages.conf: -------------------------------------------------------------------------------- 1 | # Arch Linux Install Script (alis) configuration file 2 | # 3 | # Some variables values are preceded by a ! character, this means that the value is ignored. 4 | # Some variables accept a single value others accept multiple values as annotated in the comments. 5 | # Some variables are boolean with a value of true or false. 6 | # 7 | # Read the Arch Linux wiki pages to learn more about the variables values. 8 | # https://github.com/picodotdev/alis/blob/main/README.md 9 | 10 | # init 11 | ## LOG_TRACE outputs the comands executed. 12 | ## LOG_FILE generates a log file with the commands executed and output generated during installation. 13 | ### The log file is saved to /var/log/alis-packages.log. 14 | LOG_TRACE="true" 15 | LOG_FILE="false" 16 | 17 | # pacman 18 | ## Arch Linux packages to install 19 | ## more at https://www.archlinux.org/packages/ 20 | ## PACKAGES_PACMAN_CUSTOM_REPOSITORIES custom repositories to add to pacman configuration, see https://archlinux.org/pacman/pacman.conf.5.html#_repository_sections 21 | ### Comment lines starting with # charater are removed 22 | PACKAGES_PACMAN_INSTALL="true" 23 | PACKAGES_PACMAN_INSTALL_PIPEWIRE="false" 24 | PACKAGES_PACMAN_INTERNET="!firefox !chromium !curl !wget !filezilla !sshfs !openssh !transmission-gtk !transmission-qt !liferea !gnome-boxes !gnome-tweaks" 25 | PACKAGES_PACMAN_MULTIMEDIA="!gthumb !gimp !imagemagick !krita !inkscape !blender !cmus !vlc !easytag !ardour !audacity !ffmpeg !gnome-phone-manager !kdeconnect !gstreamer !gst-plugins-good !gst-plugins-bad !gst-plugins-ugly !bluez !bluez-utils" 26 | PACKAGES_PACMAN_UTILITIES="!bash-completion !chezmoi !gnome-initial-setup !gnome-extra !code !lz4 !meld !dosfstools !ntfs-3g !exfat-utils !man-db !man-pages" 27 | PACKAGES_PACMAN_DOCUMENTS_AND_TEXT="!libreoffice-fresh !calligra !discount !lyx !vim !calibre" 28 | PACKAGES_PACMAN_COMMUNICATION="!geary !thunderbird !empathy !kopete !polari !konversation" 29 | PACKAGES_PACMAN_GAMES="" 30 | PACKAGES_PACMAN_SECURITY="!ufw !rsync !gnupg !keepassxc !encfs" 31 | PACKAGES_PACMAN_SCIENCE="!geogebra !octave" 32 | PACKAGES_PACMAN_OTHERS="!klavaro !tmux" 33 | PACKAGES_PACMAN_DEVELOPER="!git !python !dotnet-sdk !php !rust !go !virtualbox !docker !ansible !vagrant !packer !terraform !vault !consul !nomad" 34 | PACKAGES_PACMAN_CUSTOM="" 35 | PACKAGES_PACMAN_PIPEWIRE="pipewire pipewire-pulse pipewire-alsa wireplumber !pipewire-jack !helvum !xdg-desktop-portal !xdg-desktop-portal-gnome !xdg-desktop-portal-kde !xdg-desktop-portal-wlr" 36 | PACKAGES_PACMAN_CUSTOM_REPOSITORIES=" 37 | #[custom] 38 | #SigLevel = Optional TrustAll 39 | #Server = file:///home/custompkgs 40 | " 41 | 42 | ## Flatpak packages to install 43 | ## more at https://flathub.org/apps/collection/popular 44 | PACKAGES_FLATPAK_INSTALL="false" 45 | PACKAGES_FLATPAK_INTERNET="" 46 | PACKAGES_FLATPAK_MULTIMEDIA="!com.spotify.Client !org.ardour.Ardour !org.audacityteam.Audacity !tv.kodi.Kodi !org.pitivi.Pitivi" 47 | PACKAGES_FLATPAK_UTILITIES="!org.freefilesync.FreeFileSync !org.gnome.World.PikaBackup !com.dropbox.Client" 48 | PACKAGES_FLATPAK_DOCUMENTS_AND_TEXT="!org.onlyoffice.desktopeditors !com.wps.Office" 49 | PACKAGES_FLATPAK_COMMUNICATION="!com.slack.Slack !com.microsoft.Teams !org.jitsi.jitsi-meet !us.zoom.Zoom !org.telegram.desktop" 50 | PACKAGES_FLATPAK_GAMES="!com.valvesoftware.Steam !org.wesnoth.Wesnoth !com.albiononline.AlbionOnline !org.hedgewars.Hedgewars !com.mojang.Minecraft !net.supertuxkart.SuperTuxKart !org.openttd.OpenTTD" 51 | PACKAGES_FLATPAK_SECURITY="" 52 | PACKAGES_FLATPAK_SCIENCE="" 53 | PACKAGES_FLATPAK_OTHERS="!org.gnucash.GnuCash" 54 | PACKAGES_FLATPAK_DEVELOPER="!com.jetbrains.IntelliJ-IDEA-Community !org.eclipse.Java !com.getpostman.Postman" 55 | PACKAGES_FLATPAK_CUSTOM="" 56 | 57 | ## SDKMAN packages to install 58 | ## more at https://sdkman.io/jdks and https://sdkman.io/sdks 59 | PACKAGES_SDKMAN_INSTALL="false" 60 | PACKAGES_SDKMAN_JDKS="!java !java:17.0.1-tem !java:11.0.13-tem !java:8.0.312-tem" # format :[version]:[local-path] 61 | PACKAGES_SDKMAN_SDKS="!gradle !maven !kotlin !groovy" # format :[version]:[local-path] 62 | 63 | ## AUR utility and AUR packages to install 64 | ## more at https://aur.archlinux.org/packages/ 65 | PACKAGES_AUR_INSTALL="false" 66 | PACKAGES_AUR_COMMAND="paru-bin !yay-bin !paru !yay !aurman" 67 | PACKAGES_AUR_INTERNET="" 68 | PACKAGES_AUR_MULTIMEDIA="" 69 | PACKAGES_AUR_UTILITIES="" 70 | PACKAGES_AUR_DOCUMENTS_AND_TEXT="" 71 | PACKAGES_AUR_COMMUNICATION="" 72 | PACKAGES_AUR_GAMES="" 73 | PACKAGES_AUR_SECURITY="" 74 | PACKAGES_AUR_SCIENCE="" 75 | PACKAGES_AUR_OTHERS="" 76 | PACKAGES_AUR_DEVELOPER="" 77 | PACKAGES_AUR_CUSTOM="" 78 | 79 | PACKAGES_PACMAN="$PACKAGES_PACMAN_INTERNET $PACKAGES_PACMAN_MULTIMEDIA $PACKAGES_PACMAN_UTILITIES $PACKAGES_PACMAN_DOCUMENTS_AND_TEXT $PACKAGES_PACMAN_COMMUNICATION $PACKAGES_PACMAN_GAMES $PACKAGES_PACMAN_SECURITY $PACKAGES_PACMAN_SCIENCE $PACKAGES_PACMAN_OTHERS $PACKAGES_PACMAN_DEVELOPER $PACKAGES_PACMAN_CUSTOM" 80 | PACKAGES_FLATPAK="$PACKAGES_FLATPAK_INTERNET $PACKAGES_FLATPAK_MULTIMEDIA $PACKAGES_FLATPAK_UTILITIES $PACKAGES_FLATPAK_DOCUMENTS_AND_TEXT $PACKAGES_FLATPAK_COMMUNICATION $PACKAGES_FLATPAK_GAMES $PACKAGES_FLATPAK_SECURITY $PACKAGES_FLATPAK_SCIENCE $PACKAGES_FLATPAK_OTHERS $PACKAGES_FLATPAK_DEVELOPER $PACKAGES_FLATPAK_CUSTOM" 81 | PACKAGES_SDKMAN="$PACKAGES_SDKMAN_JDKS $PACKAGES_SDKMAN_SDKS" 82 | PACKAGES_AUR="$PACKAGES_AUR_INTERNET $PACKAGES_AUR_MULTIMEDIA $PACKAGES_AUR_UTILITIES $PACKAGES_AUR_DOCUMENTS_AND_TEXT $PACKAGES_AUR_COMMUNICATION $PACKAGES_AUR_GAMES $PACKAGES_AUR_SECURITY $PACKAGES_AUR_SCIENCE $PACKAGES_AUR_OTHERS $PACKAGES_AUR_DEVELOPER $PACKAGES_AUR_CUSTOM" 83 | 84 | # systemd 85 | ## SYSTEMD_UNITS systemd units to enable or disable. 86 | ### If preceded with a "+" unit is enabled, if preceded with "-" unit is disabled, if preceded with "!" unit is ignored (no action is performed). 87 | ### eg. "+ufw.service" to enable, "-ufw.service" to disable, "!ufw.service" to ignore 88 | SYSTEMD_UNITS="!ufw.service !bluetooth.service !docker.service" 89 | 90 | -------------------------------------------------------------------------------- /alis-packages.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # shellcheck disable=SC1090,SC2155,SC2034 3 | # SC1090: Can't follow non-constant source. Use a directive to specify location. 4 | # SC2155 Declare and assign separately to avoid masking return values 5 | # SC2034: foo appears unused. Verify it or export it. 6 | set -eu 7 | 8 | # Arch Linux Install Script Packages (alis-packages) installs software 9 | # packages. 10 | # Copyright (C) 2022 picodotdev 11 | 12 | # This program is free software: you can redistribute it and/or modify 13 | # it under the terms of the GNU General Public License as published by 14 | # the Free Software Foundation, either version 3 of the License, or 15 | # (at your option) any later version. 16 | # 17 | # This program is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | # GNU General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU General Public License 23 | # along with this program. If not, see . 24 | 25 | # This script is hosted at https://github.com/picodotdev/alis. For new features, 26 | # improvements and bugs fill an issue in GitHub or make a pull request. 27 | # Pull Request are welcome! 28 | # 29 | # If you test it in real hardware please send me an email to pico.dev@gmail.com with 30 | # the machine description and tell me if somethig goes wrong or all works fine. 31 | # 32 | # Please, don't ask for support for this script in Arch Linux forums, first read 33 | # the Arch Linux wiki [1], the Installation Guide [2] and the General 34 | # Recomendations [3], later compare the commands with those of this script. 35 | # 36 | # [1] https://wiki.archlinux.org 37 | # [2] https://wiki.archlinux.org/index.php/Installation_guide 38 | # [3] https://wiki.archlinux.org/index.php/General_recommendations 39 | 40 | # Installs packages in a Arch Linux system. 41 | # 42 | # Usage: 43 | # # loadkeys es 44 | # # curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash 45 | # # vim alis-packages.conf 46 | # # ./alis-packages.sh 47 | 48 | PACKAGES_STANDALONE="false" 49 | 50 | function init_config() { 51 | local COMMONS_FILE="alis-commons.sh" 52 | 53 | source "$COMMONS_FILE" 54 | if [ "$PACKAGES_STANDALONE" == "true" ]; then 55 | source "$COMMONS_CONF_FILE" 56 | fi 57 | source "$PACKAGES_CONF_FILE" 58 | } 59 | 60 | function sanitize_variables() { 61 | PACKAGES_PACMAN=$(sanitize_variable "$PACKAGES_PACMAN") 62 | PACKAGES_PACMAN_PIPEWIRE=$(sanitize_variable "$PACKAGES_PACMAN_PIPEWIRE") 63 | PACKAGES_FLATPAK=$(sanitize_variable "$PACKAGES_FLATPAK") 64 | PACKAGES_SDKMAN=$(sanitize_variable "$PACKAGES_SDKMAN") 65 | PACKAGES_AUR_COMMAND=$(sanitize_variable "$PACKAGES_AUR_COMMAND") 66 | PACKAGES_AUR=$(sanitize_variable "$PACKAGES_AUR") 67 | SYSTEMD_UNITS=$(sanitize_variable "$SYSTEMD_UNITS") 68 | } 69 | 70 | function check_variables() { 71 | check_variables_boolean "PACKAGES_PACMAN_INSTALL" "$PACKAGES_PACMAN_INSTALL" 72 | check_variables_boolean "PACKAGES_PACMAN_INSTALL_PIPEWIRE" "$PACKAGES_PACMAN_INSTALL_PIPEWIRE" 73 | check_variables_boolean "PACKAGES_FLATPAK_INSTALL" "$PACKAGES_FLATPAK_INSTALL" 74 | check_variables_boolean "PACKAGES_SDKMAN_INSTALL" "$PACKAGES_SDKMAN_INSTALL" 75 | check_variables_boolean "PACKAGES_AUR_INSTALL" "$PACKAGES_AUR_INSTALL" 76 | check_variables_list "PACKAGES_AUR_COMMAND" "$PACKAGES_AUR_COMMAND" "paru-bin yay-bin paru yay aurman" "true" "false" 77 | } 78 | 79 | function init() { 80 | if [ "$PACKAGES_STANDALONE" == "true" ]; then 81 | init_log_trace "$LOG_TRACE" 82 | init_log_file "$LOG_FILE" "$PACKAGES_LOG_FILE" 83 | fi 84 | } 85 | 86 | function facts() { 87 | print_step "facts()" 88 | 89 | facts_commons 90 | 91 | if [ -z "$USER_NAME" ]; then 92 | USER_NAME="$(whoami)" 93 | fi 94 | } 95 | 96 | function checks() { 97 | print_step "checks()" 98 | 99 | check_variables_value "USER_NAME" "$USER_NAME" 100 | 101 | if [ -n "$PACKAGES_PACMAN" ]; then 102 | execute_sudo "pacman -Syi $PACKAGES_PACMAN" 103 | fi 104 | 105 | if [ "$SYSTEM_INSTALLATION" == "false" ]; then 106 | ask_sudo 107 | fi 108 | } 109 | 110 | function ask_sudo() { 111 | sudo pwd >> /dev/null 112 | } 113 | 114 | function prepare() { 115 | print_step "prepare()" 116 | } 117 | 118 | function packages() { 119 | print_step "packages()" 120 | 121 | packages_pacman 122 | packages_flatpak 123 | packages_sdkman 124 | packages_aur 125 | } 126 | 127 | function packages_pacman() { 128 | print_step "packages_pacman()" 129 | 130 | if [ "$PACKAGES_PACMAN_INSTALL" == "true" ]; then 131 | local CUSTOM_REPOSITORIES="$(echo "$PACKAGES_PACMAN_CUSTOM_REPOSITORIES" | grep -E "^[^#]|\n^$"; exit 0)" 132 | if [ -n "$CUSTOM_REPOSITORIES" ]; then 133 | execute_sudo "echo -e \"# alis\n$CUSTOM_REPOSITORIES\" >> /etc/pacman.conf" 134 | fi 135 | 136 | if [ -n "$PACKAGES_PACMAN" ]; then 137 | pacman_install "$PACKAGES_PACMAN" 138 | fi 139 | 140 | if [[ ("$PACKAGES_PIPEWIRE" == "true" || "$PACKAGES_PACMAN_INSTALL_PIPEWIRE" == "true") && -n "$PACKAGES_PACMAN_PIPEWIRE" ]]; then 141 | if echo "$PACKAGES_PACMAN_PIPEWIRE" | grep -F -qw "pipewire-pulse"; then 142 | pacman_uninstall "pulseaudio pulseaudio-bluetooth" 143 | fi 144 | if echo "$PACKAGES_PACMAN_PIPEWIRE" | grep -F -qw "pipewire-alsa"; then 145 | pacman_uninstall "pulseaudio pulseaudio-alsa" 146 | fi 147 | if echo "$PACKAGES_PACMAN_PIPEWIRE" | grep -F -qw "wireplumber"; then 148 | pacman_uninstall "pipewire-media-session" 149 | fi 150 | if echo "$PACKAGES_PACMAN_PIPEWIRE" | grep -F -qw "pipewire-jack"; then 151 | pacman_uninstall "jack2" 152 | fi 153 | pacman_install "$PACKAGES_PACMAN_PIPEWIRE" 154 | #if [ -n "$(echo "$PACKAGES_PACMAN_PIPEWIRE" | grep -F -w "pipewire-pulse")" ]; then 155 | # execute_user "$USER_NAME" "systemctl enable --user pipewire-pulse.service" 156 | #fi 157 | fi 158 | fi 159 | } 160 | 161 | function packages_flatpak() { 162 | print_step "packages_flatpak()" 163 | 164 | if [ "$PACKAGES_FLATPAK_INSTALL" == "true" ]; then 165 | pacman_install "flatpak" 166 | 167 | if [ -n "$PACKAGES_FLATPAK" ]; then 168 | execute_flatpak "flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo" 169 | 170 | flatpak_install "$PACKAGES_FLATPAK" 171 | fi 172 | fi 173 | } 174 | 175 | function packages_sdkman() { 176 | print_step "packages_sdkman()" 177 | 178 | if [ "$PACKAGES_SDKMAN_INSTALL" == "true" ]; then 179 | pacman_install "zip unzip" 180 | execute_user "$USER_NAME" "curl -s https://get.sdkman.io | bash" 181 | 182 | if [ -n "$PACKAGES_SDKMAN" ]; then 183 | execute_user "$USER_NAME" "sed -i 's/sdkman_auto_answer=.*/sdkman_auto_answer=true/g' /home/$USER_NAME/.sdkman/etc/config" 184 | sdkman_install "$PACKAGES_SDKMAN" 185 | execute_user "$USER_NAME" "sed -i 's/sdkman_auto_answer=.*/sdkman_auto_answer=false/g' /home/$USER_NAME/.sdkman/etc/config" 186 | fi 187 | fi 188 | } 189 | 190 | function packages_aur() { 191 | print_step "packages_aur()" 192 | 193 | if [ "$PACKAGES_AUR_INSTALL" == "true" ]; then 194 | local COMMANDS=() 195 | IFS=' ' read -ra COMMANDS <<< "$PACKAGES_AUR_COMMAND" 196 | for COMMAND in "${COMMANDS[@]}" 197 | do 198 | aur_command_install "$USER_NAME" "$COMMAND" 199 | done 200 | 201 | AUR_PACKAGE="${COMMANDS[0]}" 202 | 203 | case "${AUR_PACKAGE}" in 204 | "aurman" ) 205 | AUR_COMMAND="aurman" 206 | ;; 207 | "yay" ) 208 | AUR_COMMAND="yay" 209 | ;; 210 | "paru" ) 211 | AUR_COMMAND="paru" 212 | ;; 213 | "yay-bin" ) 214 | AUR_COMMAND="yay" 215 | ;; 216 | "paru-bin" | *) 217 | AUR_COMMAND="paru" 218 | ;; 219 | esac 220 | 221 | if [ -n "$PACKAGES_AUR" ]; then 222 | aur_install "$PACKAGES_AUR" 223 | fi 224 | fi 225 | } 226 | 227 | function flatpak_install() { 228 | local OPTIONS="" 229 | if [ "$SYSTEM_INSTALLATION" == "true" ]; then 230 | local OPTIONS="--system" 231 | fi 232 | 233 | local ERROR="true" 234 | local PACKAGES=() 235 | set +e 236 | IFS=' ' read -ra PACKAGES <<< "$1" 237 | for VARIABLE in {1..5} 238 | do 239 | local COMMAND="flatpak install $OPTIONS -y flathub ${PACKAGES[*]}" 240 | if ! execute_flatpak "$COMMAND"; then 241 | local ERROR="false" 242 | break 243 | else 244 | sleep 10 245 | fi 246 | done 247 | set -e 248 | if [ "$ERROR" == "true" ]; then 249 | return 250 | fi 251 | } 252 | 253 | function sdkman_install() { 254 | local ERROR="true" 255 | local PACKAGES=() 256 | local PACKAGE="" 257 | local I=() 258 | set +e 259 | IFS=' ' read -ra PACKAGES <<< "$1" 260 | for PACKAGE in "${PACKAGES[@]}" 261 | do 262 | IFS=':' read -ra I <<< "$PACKAGE" 263 | for VARIABLE in {1..5} 264 | do 265 | local COMMAND="source /home/$USER_NAME/.sdkman/bin/sdkman-init.sh && sdk install ${I[*]}" 266 | if ! execute_user "$USER_NAME" "$COMMAND"; then 267 | local ERROR="false" 268 | break 269 | else 270 | sleep 10 271 | fi 272 | done 273 | done 274 | set -e 275 | if [ "$ERROR" == "true" ]; then 276 | return 277 | fi 278 | } 279 | 280 | function end() { 281 | echo "" 282 | echo -e "${GREEN}Arch Linux packages installed successfully"'!'"${NC}" 283 | echo "" 284 | } 285 | 286 | function main() { 287 | local START_TIMESTAMP=$(date -u +"%F %T") 288 | set +u 289 | if [ "$COMMOMS_LOADED" != "true" ]; then 290 | PACKAGES_STANDALONE="true" 291 | fi 292 | set -u 293 | 294 | init_config 295 | execute_step "sanitize_variables" 296 | execute_step "check_variables" 297 | execute_step "init" 298 | execute_step "facts" 299 | execute_step "checks" 300 | execute_step "prepare" 301 | execute_step "packages" 302 | execute_step "systemd_units" 303 | local END_TIMESTAMP=$(date -u +"%F %T") 304 | local INSTALLATION_TIME=$(date -u -d @$(($(date -d "$END_TIMESTAMP" '+%s') - $(date -d "$START_TIMESTAMP" '+%s'))) '+%T') 305 | echo -e "Installation packages start ${WHITE}$START_TIMESTAMP${NC}, end ${WHITE}$END_TIMESTAMP${NC}, time ${WHITE}$INSTALLATION_TIME${NC}" 306 | execute_step "end" 307 | } 308 | 309 | main 310 | 311 | "$@" -------------------------------------------------------------------------------- /alis-packer.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # Arch Linux Install Script (alis) installs unattended, automated 5 | # and customized Arch Linux system. 6 | # Copyright (C) 2022 picodotdev 7 | 8 | CONFIG_FILE="alis-packer.json" 9 | BRANCH="main" 10 | BRANCH_QUALIFIER="" 11 | CONFIG_FILE_SH="alis-config-efi-ext4-systemd.sh" 12 | 13 | while getopts "b:c:" arg; do 14 | case $arg in 15 | b) 16 | BRANCH="$OPTARG" 17 | ;; 18 | c) 19 | CONFIG_FILE_SH="$OPTARG" 20 | ;; 21 | *) 22 | echo "Unknown option: $arg" 23 | exit 1 24 | ;; 25 | esac 26 | done 27 | 28 | if [ "$BRANCH" == "sid" ]; then 29 | BRANCH_QUALIFIER="-sid" 30 | fi 31 | 32 | packer validate "configs/$CONFIG_FILE" 33 | packer build -force -on-error=ask \ 34 | -var "branch=$BRANCH" \ 35 | -var "branch_qualifier=$BRANCH_QUALIFIER" \ 36 | -var "config_file_sh=$CONFIG_FILE_SH" \ 37 | "configs/$CONFIG_FILE" 38 | 39 | -------------------------------------------------------------------------------- /alis-reboot.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | #shellcheck disable=SC1091 3 | #SC1091: Can't follow non-constant source. Use a directive to specify location. 4 | set -eu 5 | 6 | # Arch Linux Install Script (alis) installs unattended, automated 7 | # and customized Arch Linux system. 8 | # Copyright (C) 2022 picodotdev 9 | 10 | source "alis-commons.sh" 11 | 12 | do_reboot 13 | 14 | -------------------------------------------------------------------------------- /alis-recovery-asciinema.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # Arch Linux Install Script (alis) installs unattended, automated 5 | # and customized Arch Linux system. 6 | # Copyright (C) 2022 picodotdev 7 | 8 | #curl -L -o asciinema-2.0.2.zip https://github.com/asciinema/asciinema/archive/v2.0.2.zip 9 | #bsdtar xvf asciinema-2.0.2.zip 10 | #rm -f alis.asciinema 11 | #(cd asciinema-2.0.2 && python3 -m asciinema rec --stdin -i 5 ~/alis.asciinema) 12 | 13 | rm -f alis-recovery.asciinema 14 | 15 | pacman -Sy 16 | pacman -S --noconfirm asciinema 17 | 18 | clear 19 | asciinema rec --stdin -i 5 ~/alis-recovery.asciinema 20 | 21 | -------------------------------------------------------------------------------- /alis-recovery-reboot.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | # Arch Linux Install Script (alis) installs unattended, automated 5 | # and customized Arch Linux system. 6 | # Copyright (C) 2022 picodotdev 7 | 8 | LOG_FILE="alis-recovery.log" 9 | ASCIINEMA_FILE="alis-recovery.asciinema" 10 | 11 | function copy_logs() { 12 | if [ -f "$LOG_FILE" ]; then 13 | SOURCE_FILE="$LOG_FILE" 14 | FILE="${MNT_DIR}/var/log/alis/$LOG_FILE" 15 | 16 | mkdir -p "${MNT_DIR}/var/log/alis" 17 | cp "$SOURCE_FILE" "$FILE" 18 | chown root:root "$FILE" 19 | chmod 600 "$FILE" 20 | fi 21 | if [ -f "$ASCIINEMA_FILE" ]; then 22 | SOURCE_FILE="$ASCIINEMA_FILE" 23 | FILE="${MNT_DIR}/var/log/alis/$ASCIINEMA_FILE" 24 | 25 | mkdir -p "${MNT_DIR}/var/log/alis" 26 | cp "$SOURCE_FILE" "$FILE" 27 | chown root:root "$FILE" 28 | chmod 600 "$FILE" 29 | fi 30 | } 31 | 32 | function do_reboot() { 33 | umount -R "${MNT_DIR}"/boot 34 | umount -R "${MNT_DIR}" 35 | reboot 36 | } 37 | 38 | copy_logs 39 | do_reboot 40 | 41 | -------------------------------------------------------------------------------- /alis-recovery.conf: -------------------------------------------------------------------------------- 1 | # Arch Linux Install Script (alis) configuration file 2 | # 3 | # Some variables values are preceded by a ! character, this means that the value is ignored. 4 | # Some variables accept a single value others accept multiple values as annotated in the comments. 5 | # Some variables are boolean with a value of true or false. 6 | # 7 | # Read the Arch Linux wiki pages to learn more about the variables values. 8 | # https://github.com/picodotdev/alis/blob/main/README.md 9 | 10 | # init 11 | ## KEYS sets keyboard layout. 12 | ## LOG_TRACE outputs the comands executed. 13 | ## LOG_FILE generates a log file with the commands executed and output generated during installation. 14 | ### The log file is saved to /var/log/alis-recovery.log. 15 | KEYS="es" 16 | LOG_TRACE="true" 17 | LOG_FILE="false" 18 | 19 | # partition 20 | ## DEVICE sets which is the device for the installation. auto autodetects the device. 21 | ## DEVICE_TRIM sets if the DEVICE device supports TRIM feature. 22 | ## LVM sets if the DEVICE is partitioned with LVM partition scheme. 23 | ## LUKS_PASSWORD and LUKS_PASSWORD_RETYPE if set is the password for encrypt the device. With LVM, LVM on LUKS is used. If "ask" password alis asks for a secure password. 24 | ## FILE_SYSTEM_TYPE root device is formatted with this file system type. 25 | ## BTRFS_SUBVOLUMES_MOUNTPOINTS allows to customize btrfs file system subvolumes mountpoints. swap sobvolume is created only if swap file is created (only if there is SWAP_SIZE value). 26 | ### Format ("name,subvolume,mount_point") 27 | ## FILE_SYSTEM_TYPE root device is formatted with this file system type. 28 | ## PARTITION_MODE how partition is performed on DEVICE. 29 | ## PARTITION_MOUNT_POINTS mount points, partition number and directory, to mount from DEVICE. 30 | DEVICE="auto !/dev/sda !/dev/nvme0n1 !/dev/vda !/dev/mmcblk0" 31 | DEVICE_TRIM="true" 32 | LVM="false" 33 | LUKS_PASSWORD="" 34 | LUKS_PASSWORD_RETYPE="" 35 | FILE_SYSTEM_TYPE="ext4 !btrfs !xfs !f2fs !reiserfs" # (single) 36 | BTRFS_SUBVOLUMES_MOUNTPOINTS=("root,root,/" "home,home,/home" "var,var,/var" "snapshots,snapshots,/snapshots" "swap,swap,/swap") 37 | #BTRFS_SUBVOLUMES_MOUNTPOINTS=("root,@,/" "home,@home,/home" "var,@var_log,/var/log" "snapshots,@snapshots,/.snapshots" "swap,@swap,/swap") 38 | SWAP_SIZE="!2048 !4096 !8192" # (single) 39 | PARTITION_MODE="auto !custom !manual" 40 | PARTITION_MOUNT_POINTS=("1=/boot" "2=/" "!3=/home") 41 | 42 | # network_install 43 | ## Variables to setup the WIFI connection to internet. 44 | ## The WIFI interface, WIFI ESSID identifier and WIFI password must be specified. If "ask" password alis asks for a secure password. 45 | ## PING_HOSTNAME is the host to check the internet connection. 46 | WIFI_INTERFACE="" 47 | WIFI_ESSID="" 48 | WIFI_KEY="" 49 | WIFI_HIDDEN="" 50 | PING_HOSTNAME="mirrors.kernel.org" 51 | 52 | # chroot 53 | ## CHROOT sets if arch-chroot ${MNT_DIR} command is executed after partitions mounted to start recovery 54 | CHROOT="false" 55 | 56 | -------------------------------------------------------------------------------- /alis-recovery.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # shellcheck disable=SC1090,SC2153,SC2155,SC2034 3 | #SC1090: Can't follow non-constant source. Use a directive to specify location. 4 | #SC2153: Possible Misspelling: MYVARIABLE may not be assigned. Did you mean MY_VARIABLE? 5 | #SC2155 Declare and assign separately to avoid masking return values 6 | #SC2034: foo appears unused. Verify it or export it. 7 | set -eu 8 | 9 | # Arch Linux Install Script Recovery (alis-recovery) start a recovery for an 10 | # failed installation or broken system. 11 | # Copyright (C) 2022 picodotdev 12 | 13 | # This program is free software: you can redistribute it and/or modify 14 | # it under the terms of the GNU General Public License as published by 15 | # the Free Software Foundation, either version 3 of the License, or 16 | # (at your option) any later version. 17 | # 18 | # This program is distributed in the hope that it will be useful, 19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | # GNU General Public License for more details. 22 | # 23 | # You should have received a copy of the GNU General Public License 24 | # along with this program. If not, see . 25 | 26 | # This script is hosted at https://github.com/picodotdev/alis. For new features, 27 | # improvements and bugs fill an issue in GitHub or make a pull request. 28 | # Pull Request are welcome! 29 | # 30 | # If you test it in real hardware please send me an email to pico.dev@gmail.com with 31 | # the machine description and tell me if somethig goes wrong or all works fine. 32 | # 33 | # Please, don't ask for support for this script in Arch Linux forums, first read 34 | # the Arch Linux wiki [1], the Installation Guide [2] and the General 35 | # Recomendations [3], later compare the commands with those of this script. 36 | # 37 | # [1] https://wiki.archlinux.org 38 | # [2] https://wiki.archlinux.org/index.php/Installation_guide 39 | # [3] https://wiki.archlinux.org/index.php/General_recommendations 40 | 41 | # Starts the reccovery of a Arch Linux system installed with alis. 42 | # 43 | # Usage: 44 | # # loadkeys es 45 | # # curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash 46 | # # vim alis-recovery.conf 47 | # # ./alis-recovery.sh 48 | 49 | function init_config() { 50 | local COMMONS_FILE="alis-commons.sh" 51 | 52 | source "$COMMONS_FILE" 53 | source "$COMMONS_CONF_FILE" 54 | source "$RECOVERY_CONF_FILE" 55 | } 56 | 57 | function sanitize_variables() { 58 | DEVICE=$(sanitize_variable "$DEVICE") 59 | FILE_SYSTEM_TYPE=$(sanitize_variable "$FILE_SYSTEM_TYPE") 60 | PARTITION_MODE=$(sanitize_variable "$PARTITION_MODE") 61 | SWAP_SIZE=$(sanitize_variable "$SWAP_SIZE") 62 | PARTITION_CUSTOMMANUAL_BOOT=$(sanitize_variable "$PARTITION_CUSTOMMANUAL_BOOT") 63 | PARTITION_CUSTOMMANUAL_ROOT=$(sanitize_variable "$PARTITION_CUSTOMMANUAL_ROOT") 64 | 65 | for I in "${BTRFS_SUBVOLUMES_MOUNTPOINTS[@]}"; do 66 | IFS=',' read -ra SUBVOLUME <<< "$I" 67 | if [ "${SUBVOLUME[0]}" == "root" ]; then 68 | BTRFS_SUBVOLUME_ROOT=("${SUBVOLUME[@]}") 69 | elif [ "${SUBVOLUME[0]}" == "swap" ]; then 70 | BTRFS_SUBVOLUME_SWAP=("${SUBVOLUME[@]}") 71 | fi 72 | done 73 | 74 | for I in "${PARTITION_MOUNT_POINTS[@]}"; do 75 | IFS='=' read -ra PARTITION_MOUNT_POINT <<< "$I" 76 | if [ "${PARTITION_MOUNT_POINT[1]}" == "/boot" ]; then 77 | PARTITION_BOOT_NUMBER="${PARTITION_MOUNT_POINT[0]}" 78 | elif [ "${PARTITION_MOUNT_POINT[1]}" == "/" ]; then 79 | PARTITION_ROOT_NUMBER="${PARTITION_MOUNT_POINT[0]}" 80 | fi 81 | done 82 | } 83 | 84 | function check_variables() { 85 | check_variables_value "KEYS" "$KEYS" 86 | check_variables_boolean "LOG_TRACE" "$LOG_TRACE" 87 | check_variables_boolean "LOG_FILE" "$LOG_FILE" 88 | check_variables_value "DEVICE" "$DEVICE" 89 | if [ "$DEVICE" == "auto" ]; then 90 | local DEVICE_BOOT=$(lsblk -oMOUNTPOINT,PKNAME -P -M | grep 'MOUNTPOINT="/run/archiso/bootmnt"' | sed 's/.*PKNAME="\(.*\)".*/\1/') 91 | if [ -n "$DEVICE_BOOT" ]; then 92 | local DEVICE_BOOT="/dev/$DEVICE_BOOT" 93 | fi 94 | local DEVICE_DETECTED="false" 95 | if [ -e "/dev/sda" ] && [ "$DEVICE_BOOT" != "/dev/sda" ]; then 96 | if [ "$DEVICE_DETECTED" == "true" ]; then 97 | echo "Auto device is ambigous, detected $DEVICE and /dev/sda." 98 | exit 1 99 | fi 100 | DEVICE_DETECTED="true" 101 | DEVICE_SDA="true" 102 | DEVICE="/dev/sda" 103 | fi 104 | if [ -e "/dev/nvme0n1" ] && [ "$DEVICE_BOOT" != "/dev/nvme0n1" ]; then 105 | if [ "$DEVICE_DETECTED" == "true" ]; then 106 | echo "Auto device is ambigous, detected $DEVICE and /dev/nvme0n1." 107 | exit 1 108 | fi 109 | DEVICE_DETECTED="true" 110 | DEVICE_NVME="true" 111 | DEVICE="/dev/nvme0n1" 112 | fi 113 | if [ -e "/dev/vda" ] && [ "$DEVICE_BOOT" != "/dev/vda" ]; then 114 | if [ "$DEVICE_DETECTED" == "true" ]; then 115 | echo "Auto device is ambigous, detected $DEVICE and /dev/vda." 116 | exit 1 117 | fi 118 | DEVICE_DETECTED="true" 119 | DEVICE_VDA="true" 120 | DEVICE="/dev/vda" 121 | fi 122 | if [ -e "/dev/mmcblk0" ] && [ "$DEVICE_BOOT" != "/dev/mmcblk0" ]; then 123 | if [ "$DEVICE_DETECTED" == "true" ]; then 124 | echo "Auto device is ambigous, detected $DEVICE and /dev/mmcblk0." 125 | exit 1 126 | fi 127 | DEVICE_DETECTED="true" 128 | DEVICE_MMC="true" 129 | DEVICE="/dev/mmcblk0" 130 | fi 131 | fi 132 | check_variables_boolean "DEVICE_TRIM" "$DEVICE_TRIM" 133 | check_variables_boolean "LVM" "$LVM" 134 | check_variables_equals "LUKS_PASSWORD" "LUKS_PASSWORD_RETYPE" "$LUKS_PASSWORD" "$LUKS_PASSWORD_RETYPE" 135 | check_variables_list "FILE_SYSTEM_TYPE" "$FILE_SYSTEM_TYPE" "ext4 btrfs xfs f2fs reiserfs" "true" "true" 136 | check_variables_size "BTRFS_SUBVOLUME_ROOT" ${#BTRFS_SUBVOLUME_ROOT[@]} 3 137 | check_variables_list "BTRFS_SUBVOLUME_ROOT" "${BTRFS_SUBVOLUME_ROOT[2]}" "/" "true" "true" 138 | if [ -n "$SWAP_SIZE" ]; then 139 | check_variables_size "BTRFS_SUBVOLUME_SWAP" ${#BTRFS_SUBVOLUME_SWAP[@]} 3 140 | fi 141 | for I in "${BTRFS_SUBVOLUMES_MOUNTPOINTS[@]}"; do 142 | IFS=',' read -ra SUBVOLUME <<< "$I" 143 | check_variables_size "SUBVOLUME" ${#SUBVOLUME[@]} 3 144 | done 145 | check_variables_list "PARTITION_MODE" "$PARTITION_MODE" "auto custom manual" "true" "true" 146 | check_variables_value "PARTITION_BOOT_NUMBER" "$PARTITION_BOOT_NUMBER" 147 | check_variables_value "PARTITION_ROOT_NUMBER" "$PARTITION_ROOT_NUMBER" 148 | check_variables_boolean "CHROOT" "$CHROOT" 149 | } 150 | 151 | function warning() { 152 | echo -e "${BLUE}Welcome to Arch Linux Install Script Recovery${NC}" 153 | echo "" 154 | read -r -p "Do you want to continue? [y/N] " yn 155 | case $yn in 156 | [Yy]* ) 157 | ;; 158 | [Nn]* ) 159 | exit 160 | ;; 161 | * ) 162 | exit 163 | ;; 164 | esac 165 | } 166 | 167 | function init() { 168 | print_step "init()" 169 | 170 | init_log_trace "$LOG_TRACE" 171 | init_log_file "$LOG_FILE" "$RECOVERY_LOG_FILE" 172 | loadkeys "$KEYS" 173 | } 174 | 175 | function facts() { 176 | print_step "facts()" 177 | 178 | facts_commons 179 | 180 | if echo "$DEVICE" | grep -q "^/dev/sd[a-z]"; then 181 | DEVICE_SDA="true" 182 | elif echo "$DEVICE" | grep -q "^/dev/nvme"; then 183 | DEVICE_NVME="true" 184 | elif echo "$DEVICE" | grep -q "^/dev/vd[a-z]"; then 185 | DEVICE_VDA="true" 186 | elif echo "$DEVICE" | grep -q "^/dev/mmc"; then 187 | DEVICE_MMC="true" 188 | fi 189 | } 190 | 191 | function prepare() { 192 | print_step "prepare()" 193 | 194 | prepare_partition 195 | configure_network 196 | ask_passwords 197 | } 198 | 199 | function prepare_partition() { 200 | if [ -d "${MNT_DIR}"/boot ]; then 201 | umount "${MNT_DIR}"/boot 202 | umount "${MNT_DIR}" 203 | fi 204 | if [ -e "/dev/mapper/$LVM_VOLUME_GROUP-$LVM_VOLUME_LOGICAL" ]; then 205 | umount "/dev/mapper/$LVM_VOLUME_GROUP-$LVM_VOLUME_LOGICAL" 206 | fi 207 | if [ -e "/dev/mapper/$LUKS_DEVICE_NAME" ]; then 208 | cryptsetup close "$LUKS_DEVICE_NAME" 209 | fi 210 | partprobe "$DEVICE" 211 | } 212 | 213 | function ask_passwords() { 214 | if [ "$LUKS_PASSWORD" == "ask" ]; then 215 | PASSWORD_TYPED="false" 216 | while [ "$PASSWORD_TYPED" != "true" ]; do 217 | read -r -sp 'Type LUKS password: ' LUKS_PASSWORD 218 | echo "" 219 | read -r -sp 'Retype LUKS password: ' LUKS_PASSWORD_RETYPE 220 | echo "" 221 | if [ "$LUKS_PASSWORD" == "$LUKS_PASSWORD_RETYPE" ]; then 222 | PASSWORD_TYPED="true" 223 | else 224 | echo "LUKS password don't match. Please, type again." 225 | fi 226 | done 227 | fi 228 | } 229 | 230 | function partition() { 231 | print_step "partition()" 232 | 233 | # setup 234 | partition_setup 235 | 236 | # luks and lvm 237 | if [ -n "$LUKS_PASSWORD" ]; then 238 | echo -n "$LUKS_PASSWORD" | cryptsetup --key-file=- open "$PARTITION_ROOT" "$LUKS_DEVICE_NAME" 239 | sleep 5 240 | fi 241 | 242 | if [ -n "$LUKS_PASSWORD" ]; then 243 | DEVICE_ROOT="/dev/mapper/$LUKS_DEVICE_NAME" 244 | fi 245 | if [ "$LVM" == "true" ]; then 246 | DEVICE_ROOT="/dev/mapper/$LVM_VOLUME_GROUP-$LVM_VOLUME_LOGICAL" 247 | fi 248 | 249 | # options 250 | partition_options 251 | 252 | # mount 253 | partition_mount 254 | } 255 | 256 | function recovery() { 257 | arch-chroot "${MNT_DIR}" 258 | } 259 | 260 | function end() { 261 | echo "" 262 | if [ "$CHROOT" == "false" ]; then 263 | echo -e "${GREEN}Recovery started.${NC}" 264 | else 265 | echo -e "${GREEN}Recovery ended.${NC}" 266 | fi 267 | echo "You must do an explicit reboot after finalize recovery (exit if in arch-chroot, ./alis-reboot.sh)." 268 | echo "" 269 | } 270 | 271 | function main() { 272 | init_config 273 | sanitize_variables 274 | check_variables 275 | warning 276 | init 277 | facts 278 | prepare 279 | partition 280 | if [ "$CHROOT" == "true" ]; then 281 | recovery 282 | fi 283 | end 284 | } 285 | 286 | main 287 | -------------------------------------------------------------------------------- /alis.conf: -------------------------------------------------------------------------------- 1 | # Arch Linux Install Script (alis) configuration file 2 | # 3 | # Some variables values are preceded by a ! character, this means that the value is ignored. 4 | # Some variables accept a single value others accept multiple values as annotated in the comments. 5 | # Some variables are boolean with a value of true or false. 6 | # Some variables are experimental feature (use it and report in case of errors) 7 | # 8 | # Read the Arch Linux wiki pages to learn more about the variables values. 9 | # https://github.com/picodotdev/alis/blob/main/README.md 10 | 11 | # init 12 | ## KEYS sets keyboard layout. 13 | ## LOG_TRACE outputs the comands executed. 14 | ## LOG_FILE generates a log file with the commands executed and output generated during installation. 15 | ### The log file is saved to /var/log/alis.log. 16 | KEYS="es" 17 | LOG_TRACE="true" 18 | LOG_FILE="false" 19 | 20 | # partition 21 | ## DEVICE sets which is the device for the installation. auto autodetects the device. 22 | ## DEVICE_TRIM sets if the DEVICE device supports TRIM feature. 23 | ## LVM sets if the DEVICE is partitioned with LVM partition scheme. 24 | ## LUKS_PASSWORD and LUKS_PASSWORD_RETYPE if set is the password for encrypt the device. With LVM, LVM on LUKS is used. If "ask" password alis asks for a secure password. 25 | ## FILE_SYSTEM_TYPE root device is formatted with this file system type. 26 | ## BTRFS_SUBVOLUMES_MOUNTPOINTS allows to customize btrfs file system subvolumes mountpoints. swap sobvolume is created only if swap file is created (only if there is SWAP_SIZE value). 27 | ### Format ("name,subvolume,mount_point") 28 | ## SWAP_SIZE swap file size with a size of the value in megabytes. If no value no swap file is created. 29 | ## PARTITION_MODE how partition is performed on DEVICE. 30 | ### "auto" value deletes all existing partitions and creates a boot partition and a root partition using disk full size. 31 | ### Warning! all disk data will be lost, so backup existing data before. 32 | ### "custom" value allows to use a custom parted partition script. 33 | ### "manual" allows to specify which existing partitions are used for boot partition and root partition. 34 | ## PARTITION_MOUNT_POINTS mount points, partition number and directory, to mount from DEVICE. 35 | ## GPT_AUTOMOUNT sets whether to use GPT partition automounting 36 | DEVICE="auto !/dev/sda !/dev/nvme0n1 !/dev/vda !/dev/mmcblk0" # sata nvme mmc (single) 37 | DEVICE_TRIM="true" 38 | LVM="false" 39 | LUKS_PASSWORD="" 40 | LUKS_PASSWORD_RETYPE="" 41 | FILE_SYSTEM_TYPE="ext4 !btrfs !xfs !f2fs !reiserfs" # (single) 42 | BTRFS_SUBVOLUMES_MOUNTPOINTS=("root,root,/" "home,home,/home" "var,var,/var" "snapshots,snapshots,/snapshots" "swap,swap,/swap") 43 | #BTRFS_SUBVOLUMES_MOUNTPOINTS=("root,@,/" "home,@home,/home" "var,@var_log,/var/log" "snapshots,@snapshots,/.snapshots" "swap,@swap,/swap") 44 | SWAP_SIZE="!2048 !4096 !8192" # (single) 45 | PARTITION_MODE="auto !custom !manual" 46 | PARTITION_MOUNT_POINTS=("1=/boot" "2=/" "!3=/home") 47 | PARTITION_CUSTOM_PARTED_UEFI="mklabel gpt mkpart ESP fat32 1MiB 512MiB mkpart root $FILE_SYSTEM_TYPE 512MiB 100% set 1 esp on" 48 | PARTITION_CUSTOM_PARTED_BIOS="mklabel msdos mkpart primary ext4 4MiB 512MiB mkpart primary $FILE_SYSTEM_TYPE 512MiB 100% set 1 boot on" 49 | GPT_AUTOMOUNT="false" 50 | 51 | # network_install 52 | ## Variables to setup the WIFI connection to internet. 53 | ## The WIFI interface, WIFI ESSID identifier and WIFI password must be specified. If "ask" password alis asks for a secure password. 54 | ## PING_HOSTNAME is the host to check the internet connection. 55 | WIFI_INTERFACE="" 56 | WIFI_ESSID="" 57 | WIFI_KEY="ask" 58 | WIFI_KEY_RETYPE="ask" 59 | PING_HOSTNAME="mirrors.kernel.org" 60 | 61 | # install 62 | ## REFLECTOR allows to use reflector utility to use the best mirrors for packages download. 63 | ## REFLECTOR_COUNTRIES is an array of countries to select mirrors from. 64 | ## PACMAN_MIRROR if reflector is not used this specific mirror is used. 65 | ## PACMAN_PARALLEL_DOWNLOADS configures pacman to use parallel downloads, set to false on slow internet connections and disable timeouts. 66 | ## KERNELS additional kernels and headers to install. 67 | ## KERNELS_COMPRESSION selects the algorithm for kernel compression. 68 | ## KERNELS_PARAMETERS specific kernel parameters to set on boot. eg. iommu=soft 69 | REFLECTOR="false" 70 | REFLECTOR_COUNTRIES=("Spain") 71 | PACMAN_MIRROR="https://mirrors.kernel.org/archlinux/\$repo/os/\$arch" 72 | PACMAN_PARALLEL_DOWNLOADS="true" 73 | KERNELS="!linux-lts !linux-lts-headers !linux-hardened !linux-hardened-headers !linux-zen !linux-zen-headers" # (multiple) 74 | KERNELS_COMPRESSION="!gzip !bzip2 !lzma !xz !lzop !lz4 zstd" 75 | KERNELS_PARAMETERS="!iommu=soft !nvme_load=YES" 76 | 77 | # aur 78 | ## AUR_PACKAGE the AUR command to install in case some package requires it, only is installed if necessary. 79 | AUR_PACKAGE="paru-bin !yay-bin !paru !yay !aurman" # (single) 80 | 81 | # display driver 82 | ## DISPLAY_DRIVER installs a specific display driver, you must know which brand is the graphics hardware. 83 | ### With auto value intel driver is used for Intel brand, amdgpu driver for AMD brand and nvidia driver for NVIDIA brand. 84 | ### Other variables activates some features if are supported for the DISPLAY_DRIVER. 85 | ## KMS add support for kernel mode setting 86 | ## FASTBOOT, FRAMEBUFFER_COMPRESSION for intel graphics. 87 | ## DISPLAY_DRIVER_DDX add DDX driver which provides 2D acceleration in Xorg. 88 | ## VULKAN add support for Vulkan. 89 | ## DISPLAY_DRIVER_HARDWARE_VIDEO_ACCELERATION, DISPLAY_DRIVER_HARDWARE_VIDEO_ACCELERATION_INTEL add support for hardware video acceleration 90 | DISPLAY_DRIVER="auto !intel !amdgpu !ati !nvidia !nvidia-lts !nvidia-dkms !nvidia-470xx-dkms !nvidia-390xx-dkms !nvidia-340xx-dkms !nouveau" # (single) 91 | KMS="true" 92 | FASTBOOT="true" 93 | FRAMEBUFFER_COMPRESSION="true" 94 | DISPLAY_DRIVER_DDX="false" 95 | VULKAN="true" 96 | DISPLAY_DRIVER_HARDWARE_VIDEO_ACCELERATION="true" 97 | DISPLAY_DRIVER_HARDWARE_VIDEO_ACCELERATION_INTEL="intel-media-driver !libva-intel-driver" # (single) 98 | 99 | # config 100 | ## Some variables for system configuration, from timezone, locale and keyboard to the root password. 101 | ## KEYLAYOUT, KEYMODEL, KEYVARIANT, KEYOPTIONS see https://wiki.archlinux.org/title/X_keyboard_extension#Preset_configuration 102 | ## KEYMAP, FONT, FONT_MAP see https://man.archlinux.org/man/vconsole.conf.5 103 | ## ROOT_PASSWORD root user password. If "ask" password alis asks for a secure password. 104 | TIMEZONE="/usr/share/zoneinfo/Europe/Madrid" 105 | LOCALES=("es_ES.UTF-8 UTF-8" "en_US.UTF-8 UTF-8") 106 | LOCALE_CONF=("LANG=es_ES.UTF-8" "LANGUAGE=es_ES:es:en_US:en") 107 | KEYLAYOUT="es" 108 | KEYMODEL="" 109 | KEYVARIANT="" 110 | KEYOPTIONS="" 111 | KEYMAP="KEYMAP=es" 112 | FONT="" 113 | FONT_MAP="" 114 | HOSTNAME="archlinux" 115 | ROOT_PASSWORD="ask" 116 | ROOT_PASSWORD_RETYPE="ask" 117 | 118 | # user 119 | ## USER_NAME, USER_PASSWORD Regular user to create in the system. A password must be specified, if "ask" password alis asks for a secure password. 120 | ## ADDITIONAL_USERS is an array of additional users to create in the system, if "ask" password alis asks for a secure password. 121 | USER_NAME="picodotdev" 122 | USER_PASSWORD="ask" 123 | USER_PASSWORD_RETYPE="ask" 124 | ADDITIONAL_USERS=() # eg. ("user1=password1" "user2=password2") 125 | 126 | ## systemd-homed 127 | ### SYSTEMD_HOMED (experimental) "true" value requires interactivity to set user password 128 | SYSTEMD_HOMED="false" 129 | SYSTEMD_HOMED_STORAGE="!auto !luks !subvolume directory !fscrypt !cifs" 130 | SYSTEMD_HOMED_STORAGE_LUKS_TYPE="auto !ext4 !btrfs !xfs" 131 | SYSTEMD_HOMED_STORAGE_CIFS_DOMAIN="" 132 | SYSTEMD_HOMED_STORAGE_CIFS_SERVICE="" 133 | 134 | # mkinitcpio 135 | ## HOOKS are the system hooks to execute to build the initial ramdisk. 136 | ## MODULES are used to specify the modules to load before anything to execute to build the initial ramdisk. 137 | ## UKI (experimental) generate and use a Unified Kernel Image. 138 | ### Generally, it is not necessary to modify, alis enables or disables some hooks 139 | ### taking in account other variables values like bootloader or device encryption. 140 | HOOKS="base !udev !usr !resume !systemd !btrfs autodetect keyboard !keymap !consolefont !sd-vconsole modconf block !net !dmraid !mdadm !mdadm_udev !encrypt !sd-encrypt !lvm2 fsck filesystems" 141 | MODULES="!vmd !tpm" 142 | UKI="false" 143 | 144 | # bootloader 145 | ## BOOTLOADER system boot loader. 146 | ### With auto value grub is used for BIOS system, systemd for UEFI system. 147 | ## SECURE_BOOT (experimental) use secure boot. 148 | BOOTLOADER="auto !grub !refind !systemd !efistub" # (single) 149 | SECURE_BOOT="false" 150 | 151 | # shell 152 | ## CUSTOM_SHELL configures an alternative custom shell interpreter. 153 | CUSTOM_SHELL="bash !zsh !dash !fish" # (single) 154 | 155 | # desktop 156 | ## DESKTOP_ENVIRONMENT desktop environment to install. 157 | ## DISPLAY_MANAGER display manager to install and enable. With auto a default DM will be choosed based on the selected DE. 158 | DESKTOP_ENVIRONMENT="!gnome !kde !xfce !mate !cinnamon !lxde !i3-wm !i3-gaps !deepin !budgie !bspwm !awesome !qtile !openbox !leftwm !dusk" # (single) 159 | DISPLAY_MANAGER="auto !gdm !sddm !lightdm !lxdm" # (single) 160 | 161 | # packages 162 | ## PACKAGES_MULTILIB configures multilib repository for pacman and install multilib packages for display driver. 163 | ## PACKAGES_INSTALL installs packages on system installation, edit alis-packages.conf to select packages. 164 | ## PACKAGES_PIPEWIRE installs PipeWire replacing PulseAudio, requires PACKAGES_INSTALL="true". 165 | ### It is recommended to install packages after base installation and reboot. 166 | PACKAGES_MULTILIB="false" 167 | PACKAGES_INSTALL="false" 168 | PACKAGES_PIPEWIRE="true" 169 | 170 | # provision 171 | ## PROVISION provisions the files placed in files directory on the installed system (preserving directory structure). This is useful to copy some configuration files. 172 | PROVISION="false" 173 | 174 | # misc 175 | ## VAGRANT for build a VirtualBox OVA with Packer 176 | VAGRANT="false" 177 | 178 | # systemd 179 | ## SYSTEMD_UNITS systemd units to enable or disable. 180 | ### If preceded with a "+" unit is enabled, if preceded with "-" unit is disabled, if preceded with "!" unit is ignored (no action is performed). 181 | ### eg. "+ufw.service" to enable, "-ufw.service" to disable, "!ufw.service" to ignore 182 | SYSTEMD_UNITS="" 183 | 184 | # reboot 185 | ## REBOOT on installation end reboots the system automatically. If "false" no reboot is performed and the user must do it explicitly. 186 | REBOOT="true" 187 | 188 | -------------------------------------------------------------------------------- /cloud-init/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/cloud-init/meta-data -------------------------------------------------------------------------------- /cloud-init/user-data: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: root 4 | ssh_authorized_keys: 5 | - ${SSH_RSA} 6 | bootcmd: 7 | - sed -i -E 's/#?PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config 8 | - sed -i -E 's/#?PermitEmptyPasswords no/PermitEmptyPasswords yes/' /etc/ssh/sshd_config 9 | -------------------------------------------------------------------------------- /configs/alis-config-bios-ext4-grub-luks-lvm.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | -------------------------------------------------------------------------------- /configs/alis-config-bios-ext4-grub.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-btrfs-luks-lvm-systemd-aur.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/^FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"btrfs\"/" ./alis.conf 7 | sed -i "s/^LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/^LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/^LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/^BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/^DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | sed -i "s/PACKAGES_INSTALL=.*/PACKAGES_INSTALL=\"true\"/" ./alis.conf 17 | sed -i "s/^PACKAGES_AUR_INSTALL=.*/PACKAGES_AUR_INSTALL=\"true\"/" ./alis-packages.conf 18 | sed -i "s/^PACKAGES_AUR_COMMAND=.*/PACKAGES_AUR_COMMAND=\"paru-bun\"/" ./alis-packages.conf 19 | sed -i "s/^PACKAGES_AUR_OTHERS=.*/PACKAGES_AUR_OTHERS=\"gnucash\"/" ./alis-packages.conf 20 | 21 | -------------------------------------------------------------------------------- /configs/alis-config-efi-btrfs-systemd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"btrfs\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-grub-gnome.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"gnome\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-grub-i3-wm.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 7 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 9 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 11 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 13 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 14 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"i3-wm\"/" ./alis.conf 15 | 16 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-grub-kde.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 7 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 9 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 11 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 13 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 14 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"kde\"/" ./alis.conf 15 | 16 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-grub-xfce.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 7 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 9 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 11 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 13 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 14 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"xfce\"/" ./alis.conf 15 | 16 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-grub.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-luks-grub.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-luks-lvm-grub.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"grub\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-luks-lvm-systemd-systemdhomed.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/SYSTEMD_HOMED=.*/SYSTEMD_HOMED=\"true\"/" ./alis.conf 15 | sed -i "s/SYSTEMD_HOMED_STORAGE=.*/SYSTEMD_HOMED_STORAGE=\"luks\"/" ./alis.conf 16 | sed -i "s/SYSTEMD_HOMED_STORAGE_LUKS_TYPE=.*/SYSTEMD_HOMED_STORAGE_LUKS_TYPE=\"ext4\")/" ./alis.conf 17 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 18 | 19 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-luks-lvm-systemd-zsh.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/CUSTOM_SHELL=.*/CUSTOM_SHELL=\"zsh\"/" ./alis.conf 16 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 17 | 18 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-luks-lvm-systemd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-luks-systemd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-lvm-systemd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-systemd-gnome-pipewire.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"gnome\"/" ./alis.conf 16 | sed -i "s/PACKAGES_INSTALL=.*/PACKAGES_INSTALL=\"true\"/" ./alis.conf 17 | sed -i "s/PACKAGES_PIPEWIRE=.*/PACKAGES_PIPEWIRE=\"true\"/" ./alis.conf 18 | sed -i "s/PACKAGES_FLATPAK_INSTALL=.*/PACKAGES_FLATPAK_INSTALL=\"true\"/" ./alis-packages.conf 19 | sed -i "s/PACKAGES_FLATPAK_CUSTOM=.*/PACKAGES_FLATPAK_CUSTOM=\"org.videolan.VLC\"/" ./alis-packages.conf 20 | sed -i "s/PACKAGES_SDKMAN_INSTALL=.*/PACKAGES_SDKMAN_INSTALL=\"true\"/" ./alis-packages.conf 21 | sed -i "s/PACKAGES_SDKMAN_SDKS=.*/PACKAGES_SDKMAN_SDKS=\"java:17.0.1-tem\"/" ./alis-packages.conf 22 | 23 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-systemd-gnome.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"gnome\"/" ./alis.conf 16 | sed -i "s/PACKAGES_INSTALL=.*/PACKAGES_INSTALL=\"true\"/" ./alis.conf 17 | sed -i "s/PACKAGES_INSTALL_PIPEWIRE=.*/PACKAGES_INSTALL_PIPEWIRE=\"false\"/" ./alis.conf 18 | sed -i "s/PACKAGES_FLATPAK_INSTALL=.*/PACKAGES_FLATPAK_INSTALL=\"true\"/" ./alis-packages.conf 19 | sed -i "s/PACKAGES_FLATPAK_CUSTOM=.*/PACKAGES_FLATPAK_CUSTOM=\"org.videolan.VLC\"/" ./alis-packages.conf 20 | sed -i "s/PACKAGES_SDKMAN_INSTALL=.*/PACKAGES_SDKMAN_INSTALL=\"true\"/" ./alis-packages.conf 21 | sed -i "s/PACKAGES_SDKMAN_SDKS=.*/PACKAGES_SDKMAN_SDKS=\"java:17.0.1-tem\"/" ./alis-packages.conf 22 | 23 | -------------------------------------------------------------------------------- /configs/alis-config-efi-ext4-systemd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"ext4\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"false\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | 18 | -------------------------------------------------------------------------------- /configs/alis-config-efi-f2fs-luks-lvm-systemd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | sed -i "s/LOG=.*/LOG=\"false\"/" ./alis.conf 5 | sed -i "s#DEVICE=.*#DEVICE=\"auto\"#" ./alis.conf 6 | sed -i "s/FILE_SYSTEM_TYPE=.*/FILE_SYSTEM_TYPE=\"f2fs\"/" ./alis.conf 7 | sed -i "s/LVM=.*/LVM=\"true\"/" ./alis.conf 8 | sed -i "s/LUKS_PASSWORD=.*/LUKS_PASSWORD=\"archlinux\"/" ./alis.conf 9 | sed -i "s/LUKS_PASSWORD_RETYPE=.*/LUKS_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 10 | sed -i "s/ROOT_PASSWORD=.*/ROOT_PASSWORD=\"archlinux\"/" ./alis.conf 11 | sed -i "s/ROOT_PASSWORD_RETYPE=.*/ROOT_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 12 | sed -i "s/USER_PASSWORD=.*/USER_PASSWORD=\"archlinux\"/" ./alis.conf 13 | sed -i "s/USER_PASSWORD_RETYPE=.*/USER_PASSWORD_RETYPE=\"archlinux\"/" ./alis.conf 14 | sed -i "s/BOOTLOADER=.*/BOOTLOADER=\"systemd\"/" ./alis.conf 15 | sed -i "s/DESKTOP_ENVIRONMENT=.*/DESKTOP_ENVIRONMENT=\"\"/" ./alis.conf 16 | 17 | -------------------------------------------------------------------------------- /configs/alis-packer.json: -------------------------------------------------------------------------------- 1 | { 2 | "variables": { 3 | "iso": "https://archive.archlinux.org/iso/2025.01.01/archlinux-2025.01.01-x86_64.iso", 4 | "disk_size": "16384", 5 | "config_file_sh": "" 6 | }, 7 | "builders": [ 8 | { 9 | "name": "archlinux-alis-virtualbox", 10 | "type": "virtualbox-iso", 11 | "guest_os_type": "ArchLinux_64", 12 | "guest_additions_mode": "attach", 13 | "headless": false, 14 | "http_directory": ".", 15 | "vboxmanage": [ 16 | ["modifyvm", "{{.Name}}", "--memory", "2048"], 17 | ["modifyvm", "{{.Name}}", "--vram", "128"], 18 | ["modifyvm", "{{.Name}}", "--cpus", "2"], 19 | ["modifyvm", "{{.Name}}", "--firmware", "efi"] 20 | ], 21 | "disk_size": "{{user `disk_size`}}", 22 | "hard_drive_interface": "sata", 23 | "iso_url": "{{user `iso`}}", 24 | "iso_checksum": "sha256:74b109b4b36d20bef8f4203e30b8d223e0ab297a09d1a1213a02894472aa530a", 25 | "ssh_username": "vagrant", 26 | "ssh_password": "vagrant", 27 | "ssh_wait_timeout": "120m", 28 | "boot_wait": "5s", 29 | "boot_command": [ 30 | "", 31 | "curl -sL http://raw.githubusercontent.com/picodotdev/alis/{{user `branch`}}/download{{user `branch_qualifier`}}.sh | bash", 32 | "loadkeys en", 33 | "./alis-asciinema.sh", 34 | "less alis.confq", 35 | "./alis.shy" 36 | ], 37 | "shutdown_command": "echo 'vagrant' | sudo -S systemctl poweroff", 38 | "format": "ova" 39 | } 40 | ] 41 | } 42 | 43 | -------------------------------------------------------------------------------- /download-sid.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | #shellcheck disable=SC2034 3 | #SC2034: foo appears unused. Verify it or export it. 4 | set -eu 5 | 6 | # Arch Linux Install Script (alis) installs unattended, automated 7 | # and customized Arch Linux system. 8 | # Copyright (C) 2022 picodotdev 9 | 10 | GITHUB_USER="picodotdev" 11 | BRANCH="sid" 12 | HASH="" 13 | ARTIFACT="alis-${BRANCH}" 14 | 15 | while getopts "b:h:u:" arg; do 16 | case ${arg} in 17 | b) 18 | BRANCH="${OPTARG}" 19 | ARTIFACT="alis-${BRANCH}" 20 | ;; 21 | h) 22 | HASH="${OPTARG}" 23 | ARTIFACT="alis-${HASH}" 24 | ;; 25 | u) 26 | GITHUB_USER=${OPTARG} 27 | ;; 28 | ?) 29 | echo "Invalid option: -${OPTARG}." 30 | exit 1 31 | ;; 32 | esac 33 | done 34 | 35 | set -o xtrace 36 | if [ -n "$HASH" ]; then 37 | curl -sL -o "${ARTIFACT}.zip" "https://github.com/${GITHUB_USER}/alis/archive/${HASH}.zip" 38 | bsdtar -x -f "${ARTIFACT}.zip" 39 | cp -R "${ARTIFACT}"/*.sh "${ARTIFACT}"/*.conf "${ARTIFACT}"/files/ "${ARTIFACT}"/configs/ ./ 40 | else 41 | curl -sL -o "${ARTIFACT}.zip" "https://github.com/${GITHUB_USER}/alis/archive/refs/heads/${BRANCH}.zip" 42 | bsdtar -x -f "${ARTIFACT}.zip" 43 | cp -R "${ARTIFACT}"/*.sh "${ARTIFACT}"/*.conf "${ARTIFACT}"/files/ "${ARTIFACT}"/configs/ ./ 44 | fi 45 | chmod +x configs/*.sh 46 | chmod +x ./*.sh 47 | -------------------------------------------------------------------------------- /download.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | #shellcheck disable=SC2034 3 | #SC2034: foo appears unused. Verify it or export it. 4 | set -eu 5 | 6 | # Arch Linux Install Script (alis) installs unattended, automated 7 | # and customized Arch Linux system. 8 | # Copyright (C) 2022 picodotdev 9 | 10 | GITHUB_USER="picodotdev" 11 | BRANCH="main" 12 | HASH="" 13 | ARTIFACT="alis-${BRANCH}" 14 | 15 | while getopts "b:h:u:" arg; do 16 | case ${arg} in 17 | b) 18 | BRANCH="${OPTARG}" 19 | ARTIFACT="alis-${BRANCH}" 20 | ;; 21 | h) 22 | HASH="${OPTARG}" 23 | ARTIFACT="alis-${HASH}" 24 | ;; 25 | u) 26 | GITHUB_USER=${OPTARG} 27 | ;; 28 | ?) 29 | echo "Invalid option: -${OPTARG}." 30 | exit 1 31 | ;; 32 | esac 33 | done 34 | 35 | set -o xtrace 36 | if [ -n "$HASH" ]; then 37 | curl -sL -o "${ARTIFACT}.zip" "https://github.com/${GITHUB_USER}/alis/archive/${HASH}.zip" 38 | bsdtar -x -f "${ARTIFACT}.zip" 39 | cp -R "${ARTIFACT}"/*.sh "${ARTIFACT}"/*.conf "${ARTIFACT}"/files/ "${ARTIFACT}"/configs/ ./ 40 | else 41 | curl -sL -o "${ARTIFACT}.zip" "https://github.com/${GITHUB_USER}/alis/archive/refs/heads/${BRANCH}.zip" 42 | bsdtar -x -f "${ARTIFACT}.zip" 43 | cp -R "${ARTIFACT}"/*.sh "${ARTIFACT}"/*.conf "${ARTIFACT}"/files/ "${ARTIFACT}"/configs/ ./ 44 | fi 45 | chmod +x configs/*.sh 46 | chmod +x ./*.sh 47 | -------------------------------------------------------------------------------- /files/etc/X11/xorg.conf.d/99-killX.conf: -------------------------------------------------------------------------------- 1 | Section "ServerFlags" 2 | Option "DontZap" "false" 3 | EndSection 4 | 5 | Section "InputClass" 6 | Identifier "Keyboard Defaults" 7 | MatchIsKeyboard "yes" 8 | Option "XkbOptions" "terminate:ctrl_alt_bksp" 9 | EndSection 10 | -------------------------------------------------------------------------------- /images/archlinux-badge.svg: -------------------------------------------------------------------------------- 1 | ArchLinuxArchLinux -------------------------------------------------------------------------------- /images/archlinux-cinnamon-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-cinnamon-thumb.jpg -------------------------------------------------------------------------------- /images/archlinux-cinnamon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-cinnamon.jpg -------------------------------------------------------------------------------- /images/archlinux-gnome-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-gnome-thumb.jpg -------------------------------------------------------------------------------- /images/archlinux-gnome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-gnome.jpg -------------------------------------------------------------------------------- /images/archlinux-kde-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-kde-thumb.jpg -------------------------------------------------------------------------------- /images/archlinux-kde.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-kde.jpg -------------------------------------------------------------------------------- /images/archlinux-lxde-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-lxde-thumb.jpg -------------------------------------------------------------------------------- /images/archlinux-lxde.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-lxde.jpg -------------------------------------------------------------------------------- /images/archlinux-mate-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-mate-thumb.jpg -------------------------------------------------------------------------------- /images/archlinux-mate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-mate.jpg -------------------------------------------------------------------------------- /images/archlinux-root-password-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-root-password-thumb.png -------------------------------------------------------------------------------- /images/archlinux-root-password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-root-password.png -------------------------------------------------------------------------------- /images/archlinux-xfce-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-xfce-thumb.jpg -------------------------------------------------------------------------------- /images/archlinux-xfce.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/images/archlinux-xfce.jpg -------------------------------------------------------------------------------- /images/archlinux.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /images/sh-bash-badge.svg: -------------------------------------------------------------------------------- 1 | sh: bashshbash -------------------------------------------------------------------------------- /site/.gitignore: -------------------------------------------------------------------------------- 1 | deploy/ 2 | -------------------------------------------------------------------------------- /site/.hugo_build.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/.hugo_build.lock -------------------------------------------------------------------------------- /site/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /site/build-deploy-github.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | ./build-deploy.sh 5 | ./deploy-github.sh -------------------------------------------------------------------------------- /site/build-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | (cd deploy/ && git pull) 5 | hugo gen chromastyles --style=github > themes/alis/assets/syntax.css 6 | hugo --destination="deploy" --gc --cleanDestinationDir 7 | -------------------------------------------------------------------------------- /site/config.yaml: -------------------------------------------------------------------------------- 1 | title: "alis :. Arch Linux Install Script" 2 | baseURL: https://picodotdev.github.io/alis/ 3 | languageCode: "en" 4 | defaultContentLanguage: "en" 5 | metadataformat: "yaml" 6 | timeout: 360000 7 | theme: "alis" 8 | 9 | disableKinds: 10 | - taxonomy 11 | 12 | markup: 13 | defaultMarkdownHandler: goldmark 14 | blackFriday: 15 | goldmark: 16 | extensions: 17 | linkify: false 18 | renderer: 19 | unsafe: true 20 | xHTML: true 21 | tableOfContents: 22 | startLevel: 3 23 | endLevel: 4 24 | ordered: false 25 | 26 | pygmentsUseClasses: true 27 | pygmentsOptions: linenos=table,linenostart=1 28 | pygmentsStyle: github 29 | 30 | copyright: https://creativecommons.org/licenses/by-sa/4.0/ 31 | 32 | imaging: 33 | resampleFilter: "box" 34 | quality: 90 35 | 36 | menu: 37 | navbar: 38 | - Name: "Home" 39 | URL: "/" 40 | Weight: 1 41 | - Name: "What is alis?" 42 | URL: "/#what-is" 43 | Weight: 2 44 | - Name: "Overview" 45 | URL: "/overview/" 46 | Weight: 3 47 | - Name: "User Guide" 48 | URL: "/user-guide/" 49 | Weight: 4 50 | - Name: "Source code" 51 | URL: "https://github.com/picodotdev/alis/" 52 | Weight: 5 53 | footer: 54 | - Name: "Home" 55 | URL: "/" 56 | Weight: 1 57 | - Name: "What is alis?" 58 | URL: "/#what-is" 59 | Weight: 2 60 | - Name: "Overview" 61 | URL: "/overview/" 62 | Weight: 3 63 | - Name: "User Guide" 64 | URL: "/user-guide/" 65 | Weight: 4 66 | - Name: "Source code" 67 | URL: "https://github.com/picodotdev/alis/" 68 | Weight: 5 69 | 70 | params: 71 | description: "A simple powerful Bash based script for an unattended, easy and fast way to install Arch Linux. Developed from many Arch Linux Wiki pages that fully automates the installation of a Arch Linux system after booting from the original Arch Linux installation media." 72 | author: 73 | name: "picodotdev" 74 | description: "I ♥ Java, GNU/Linux and libre software." 75 | font: 76 | name: "Open Sans" 77 | sizes: [400,600] 78 | -------------------------------------------------------------------------------- /site/content/_index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | pid: 0 3 | title: "alis :. Arch Linux Install Script" 4 | url: "/" 5 | date: 2022-02-04T16:00:00+01:00 6 | updated: 2022-02-04T16:00:00+01:00 7 | index: true 8 | tags: [] 9 | --- 10 | 11 |
12 |
13 |
14 |
15 |
16 |

Arch Linux Install Script

17 |

A simple powerful Bash based script for an unattended, easy and fast way to install Arch Linux.

18 |

Boot. Get. Configure. Install. Enjoy.

19 | 23 |
24 |
25 |
26 |
27 |
28 | 29 |
30 |
31 |
32 |
33 | Arch Linux 34 |
35 |
36 |
37 |
38 | Bash 39 |
40 |
41 |
42 |
43 |
44 |
45 | GNU 46 |
47 |
48 |
49 |
50 | Linux 51 |
52 |
53 |
54 |
55 | 56 |
57 |
58 |
59 |
60 |

What is alis?

61 | {{< markdown >}} 62 | Arch Linux Install Script (or alis, also known as _the Arch Linux executable installation guide and wiki_) installs unattended, automated and customized Arch Linux system. 63 | 64 | It is a simple Bash script developed from many Arch Linux Wiki pages that fully automates the installation of a [Arch Linux](https://archlinux.org/) system after booting from the original Arch Linux installation media. It contains the same commands that you would type and execute one by one interactively to complete the installation. The only user intervention needed is to edit a configuration file to choose the installation options and preferences from partitioning, to encryption, bootloader, file system, language and keyboard mapping, desktop environment, kernels, packages to install and graphic drivers. This automation makes the installation easy and fast, as fast as your internet connection allows. 65 | {{< /markdown >}} 66 |
67 |
68 |
69 |
70 | 71 |
72 |
73 |
74 |
75 |
76 |
77 |
Bash based
78 |

Contains the same commands you type on a manual install one after another. Being Bash based is easy to compare the script commands with your own manual recipe and easy to compare with the commands provided by the Arch Linux wiki pages and other installation guides, ecause that can be known as _the Arch Linux executable installation guide and wiki_.

79 | Source code 80 |
81 |
82 |
83 |
84 |
85 |
86 |
Simple configuration
87 |

The configuration is a simple Bash file that defines some environment variables to customize the installation to each user own preferences. Simple variables but that allow most common and quite advanced configurations.

88 | Configuration file 89 |
90 |
91 |
92 |
93 |
94 |
95 |
Unattended
96 |

Fully automated to complete the installation easy and fast, as fast as your internet connection allows. Not a guided script means is not necessary to spend time on answer slowly the same questions over and over on each usage.

97 | See the video 98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
Desktop environments
107 |

Choose between the most popular GNU/Linux desktop environments like GNOME, KDE, XFCE or discover and try alternative graphical environments options like i3-gap, Deepin, Budgie and others. Pick one from more than 10 available environments.

108 |
109 |
110 |
111 |
112 |
113 |
114 |
Advanced features
115 |

Based on more than 70 Arch Linux wiki pages to get a successful installation also for advanced features like LVM, LUKS encryption, BTRFS filesystem with subvolumes, alternative kernels, systemd-boot, systemd-homed, PipeWire, AUR utility or SSH install for virtual machines.

116 |
117 |
118 |
119 |
120 |
121 |
122 |
And much more!
123 |

These are a small feature set selection provided by alis. Read the complete list.

124 | Full feature set list 125 |
126 |
127 |
128 |
129 |
130 |
131 | 132 |
133 |
134 |
135 |
136 | {{< ad-bilboard >}} 137 |
138 |
139 |
140 |
141 | 142 |
143 |
144 |
145 |
146 |

Usage

147 |

Only 4 commands away to have a vanilla Arch Linux system.

148 | {{< code file="install.sh" language="bash" options="" >}} 149 |
150 |
151 |
152 |
153 | 154 |
155 |
156 |
157 |
158 |

Video

159 |

Arch Linux base installation installed in less than 4 minutes with a fiber internet connection and a NVMe SSD. Don't trust? See the video.

160 |

Type the system installation commands and wait to the installation complete. After a reboot the system is ready to use and customized with your choosen preferences.

161 | 162 |
163 |
164 |
165 |
166 | 167 |
168 |
169 |
170 |
171 |

Screenshots

172 |

Once the installation ends you have a ready to use system with your choosen preferences including all the free software latest version you wish to do produtive task from browsing, multimedia and office programs, to programming languages, compilers and server software and tools for creative and artistic tasks.

173 |

These are some desktop environments that can be installed.

174 |
175 | 210 |
211 |
212 |
213 |
214 |
215 | -------------------------------------------------------------------------------- /site/content/install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # # Start the system with latest Arch Linux installation media 3 | # loadkeys [keymap] # Load keyboard keymap, eg. loadkeys es, loadkeys us, loadkeys de 4 | # curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash # Download alis scripts 5 | # vim alis.conf # Edit configuration and change variables values with your preferences (system configuration) 6 | # ./alis.sh # Start installation -------------------------------------------------------------------------------- /site/content/pages/getting-started/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | pid: 2 3 | title: "Gettting Started :. Arch Linux Install Script" 4 | type: "pages" 5 | url: "/getting-started/" 6 | date: 2022-02-04T16:00:00+01:00 7 | updated: 2022-02-04T16:00:00+01:00 8 | index: true 9 | rss: true 10 | sharing: true 11 | imagePage: "logotype:octopress.png" 12 | tags: [] 13 | draft: true 14 | --- 15 | 16 | # Getting Started -------------------------------------------------------------------------------- /site/content/pages/installation/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | pid: 3 3 | title: "Istallation :. Arch Linux Install Script" 4 | type: "pages" 5 | url: "/installation/" 6 | date: 2022-02-04T16:00:00+01:00 7 | updated: 2022-02-04T16:00:00+01:00 8 | index: true 9 | rss: true 10 | sharing: true 11 | imagePage: "logotype:octopress.png" 12 | tags: [] 13 | draft: true 14 | --- 15 | 16 | # Installation 17 | 18 | 19 |
20 |
21 |
22 |
23 |

Principles

24 | {{< markdown >}} 25 | * Use the original Arch Linux installation media 26 | * As much unattended and automated as possible, require as little interactivity as possible 27 | * Allow to customize the installation to cover the most common cases 28 | * Provide support for system recovery 29 | * Provide support for installation log 30 | {{< /markdown >}} 31 |
32 |
33 |
34 |
35 | 36 |
37 |
38 |
39 |

Features

40 |
41 |
42 |
43 |
    44 |
  • System: UEFI, BIOS
  • 45 |
  • Storage: SATA, NVMe and MMC
  • 46 |
  • Encryption: root partition encrypted and no encrypted
  • 47 |
  • Partition: no LVM, LVM, LVM on LUKS, GPT on UEFI, MBR on BIOS, custom partition scheme and mountpoints
  • 48 |
  • File system: ext4, btrfs (with subvols), xfs, f2fs, reiserfs
  • 49 |
  • Kernels: linux, linux-lts, linux-hardened, linux-zen
  • 50 |
  • Desktop environment: GNOME, KDE, XFCE, Mate, Cinnamon, LXDE, i3-wm, i3-gaps, Deepin, Budgie, Bspwm, Awesome, Qtile, Openbox
  • 51 |
  • Display managers: GDM, SDDM, Lightdm, lxdm
  • 52 |
  • Graphics controller: intel, nvidia and amd with optionally early KMS start. With intel optionally fastboot, hardware video acceleration and framebuffer compression.
  • 53 |
  • Bootloader: GRUB, rEFInd, systemd-boot
  • 54 |
  • Custom shell: bash, zsh, dash, fish
  • 55 |
  • WPA WIFI network installation
  • 56 |
  • Periodic TRIM for SSD storage
  • 57 |
  • Intel and AMD processors microcode
  • 58 |
  • Optional swap file
  • 59 |
  • VirtualBox guest additions and VMware tools support
  • 60 |
  • Kernel compression and custom parameters
  • 61 |
  • Users creation and add to sudoers
  • 62 |
  • systemd units enable or disable
  • 63 |
  • systemd-homed support
  • 64 |
  • PipeWire support
  • 65 |
  • Multilib support
  • 66 |
  • Files provision support
  • 67 |
  • Arch Linux custom packages installation and repositories installation
  • 68 |
  • Flatpak utility installation and Flatpak packages installation
  • 69 |
  • SDKMAN utility installation and SDKMAN packages installation
  • 70 |
  • AUR utility installation (yay, aurman) and AUR packages installation
  • 71 |
  • Packages installation after base system installation (preferred way of packages installation)
  • 72 |
  • Script for download installation and recovery scripts and configuration files
  • 73 |
  • Retry packages download on connection/mirror error
  • 74 |
  • Packer support for testing in VirtualBox
  • 75 |
  • Installation log with all commands executed and output in a file and/or asciinema video
  • 76 |
  • Wait after installation for an abortable reboot
  • 77 |
  • Fork the repository and use your own configuration
  • 78 |
79 |
80 |
81 | 82 |
83 |
84 |
85 |

System installation

86 |
87 |
88 |
89 |

90 | Download and boot from the latest original Arch Linux installation media. After boot use the following commands to start the installation. 91 |

92 |

93 | Follow the Arch Way of doing things and learn what this script does. This will allow you to know what is happening. 94 |

95 |

96 | Internet connection is required, with wireless WIFI connection see Wireless_network_configuration to bring up WIFI connection before start the installation. 97 |

98 |

99 | Minimum usage 100 |

101 | {{< highlight bash "" >}} 102 | # Start the system with latest Arch Linux installation media 103 | loadkeys [keymap] # Load keyboard keymap, eg. loadkeys es, loadkeys us, loadkeys de 104 | curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash # Download alis scripts 105 | vim alis.conf # Edit configuration and change variables values with your preferences (system configuration) 106 | ./alis.sh # Start installation 107 | {{< / highlight >}} 108 |

109 | Advanced usage 110 |

111 | {{< highlight bash "" >}} 112 | # Start the system with latest Arch Linux installation media 113 | loadkeys [keymap] # Load keyboard keymap, eg. loadkeys es, loadkeys us, loadkeys de 114 | iwctl --passphrase "[WIFI_KEY]" station [WIFI_INTERFACE] connect "[WIFI_ESSID]" # (Optional) Connect to WIFI network. _ip link show_ to know WIFI_INTERFACE. 115 | curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash # Download alis scripts 116 | # curl -sL https://git.io/JeaH6 | bash # Alternative download URL with URL shortener 117 | ./alis-asciinema.sh # (Optional) Start asciinema video recording 118 | vim alis.conf # Edit configuration and change variables values with your preferences (system configuration) 119 | vim alis-packages.conf # (Optional) Edit configuration and change variables values with your preferences (packages to install) 120 | # (The preferred way to install packages is after system installation, see Packages installation) 121 | ./alis.sh # Start installation 122 | ./alis-reboot.sh # (Optional) Reboot the system, only necessary when REBOOT="false" 123 | {{< / highlight >}} 124 |
125 |
126 |
127 | 128 |
129 |
130 |
131 |

Video

132 |
133 |
134 |
135 |

Arch Linux base installation installed in less than 4 minutes with a fiber internet connection and a NVMe SSD. Don't trust me? See the video.

136 | 137 |
138 |
139 |
140 | 141 |
142 |
143 |
144 |

Packages installation

145 |
146 |
147 |
148 |

149 | After the base Arch Linux system is installed, alis can install packages with pacman, Flatpak, SDKMAN and from AUR. 150 |

151 | {{< highlight bash "" >}} 152 | # After system installation start a user session 153 | curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash # Download alis scripts 154 | # curl -sL https://git.io/JeaH6 | bash # Alternative download URL with URL shortener 155 | ./alis-packages-asciinema.sh # (Optional) Start asciinema video recording 156 | vim alis-packages.conf # Edit configuration and change variables values with your preferences (packages to install) 157 | ./alis-packages.sh # Start packages installation 158 | {{< / highlight >}} 159 |
160 |
161 |
162 | 163 |
164 |
165 |
166 |

Recovery

167 |
168 |
169 |
170 |

171 | Boot from the latest original Arch Linux installation media. After boot use the following comands to start the recovery, this will allow you to enter in the arch-chroot environment. 172 |

173 | {{< highlight bash "" >}} 174 | # Start the system with latest Arch Linux installation media 175 | loadkeys [keymap] # Load keyboard keymap, eg. loadkeys es, loadkeys us, loadkeys de 176 | iwctl --passphrase "[WIFI_KEY]" station [WIFI_INTERFACE] connect "[WIFI_ESSID]" # (Optional) Connect to WIFI network. _ip link show_ to know WIFI_INTERFACE. 177 | curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash # Download alis scripts 178 | # curl -sL https://git.io/JeaH6 | bash # Alternative download URL with URL shortener 179 | ./alis-recovery-asciinema.sh # (Optional) Start asciinema video recording 180 | vim alis-recovery.conf # Edit configuration and change variables values with your last installation configuration with alis (mainly device and partition scheme) 181 | ./alis-recovery.sh # Start recovery 182 | ./alis-recovery-reboot.sh # Reboot the system 183 | {{< / highlight >}} 184 |
185 |
186 |
187 | 188 |
189 |
190 |
191 |

How you can help

192 |
193 |
194 |
195 |
    196 |
  • Test in VirtualBox and create an issue if something does not work, attach the main parts of the used configuration file and the error message
  • 197 |
  • Create issues with new features
  • 198 |
  • Send pull requests
  • 199 |
  • Share it in social networks, forums, create a blog post or video about it
  • 200 |
  • Send me an email, I like to read that the script is being used and is useful :). Which are your computer specs, which is your alis configuration, if is your personal or working computer, if all worked fine or some suggestion to improve the script
  • 201 |
202 |
203 |
204 |
205 | 206 |
207 |
208 |
209 |

Media reference

210 |
211 |
212 | 219 |
220 |
221 | 222 |
223 |
224 |
225 |
226 | 227 | 228 |
229 | 235 | 238 |
239 |
240 |
241 |
242 |
243 | -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/alis-cloud.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | $ ./alis-cloud-init-iso.sh 4 | $ ./alis-cloud-kvm-virt-installsh 5 | $ ./alis-cloud-init-ssh.sh -i [ip addr] 6 | $ ./alis-cloud-init-ssh.sh -i [ip addr] -c [config] -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/alis-packages.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | $ ./alis.packages.sh -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/alis.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # alis.sh -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/aur-package-install.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2102 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # SC2102: Ranges can only match single chars (mentioned due to duplicates). 4 | $ paru -S [package] 5 | $ yay -S [package] -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/download-conf.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash -s -u picodotdev -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/download.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/install.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # # Start the system with latest Arch Linux installation media 4 | # loadkeys [keymap] # Load keyboard keymap, eg. loadkeys es, loadkeys us, loadkeys de 5 | # curl -sL https://raw.githubusercontent.com/picodotdev/alis/main/download.sh | bash # Download alis scripts 6 | # vim alis.conf # Edit configuration and change variables values with your preferences (system configuration) 7 | # ./alis.sh # Start installation -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/loadkeys.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # loadkeys [keymap] -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/ls-alis.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2215 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # SC2215: This flag is used as a command name. Bad line break or missing [ .. ]? 4 | $ ls -l 5 | total 1520 6 | -rwxr-xr-x 1 picodotdev picodotdev 506 mar 20 11:40 alis-asciinema.sh 7 | -rwxr-xr-x 1 picodotdev picodotdev 415 mar 20 11:40 alis-cloud-init-iso.sh 8 | -rwxr-xr-x 1 picodotdev picodotdev 1252 mar 20 11:40 alis-cloud-init-ssh.sh 9 | -rw-r--r-- 1 picodotdev picodotdev 981 mar 20 11:40 alis-commons.conf 10 | -rwxr-xr-x 1 picodotdev picodotdev 13336 mar 20 11:40 alis-commons.sh 11 | -rw-r--r-- 1 picodotdev picodotdev 9319 mar 20 11:40 alis.conf 12 | -rwxr-xr-x 1 picodotdev picodotdev 975 mar 20 11:40 alis-kvm-virt-install.sh 13 | drwxr-xr-x 8 picodotdev picodotdev 4096 mar 20 11:04 alis-main 14 | -rw-r--r-- 1 picodotdev picodotdev 1354656 mar 20 11:40 alis-main.zip 15 | -rwxr-xr-x 1 picodotdev picodotdev 514 mar 20 11:40 alis-packages-asciinema.sh 16 | -rw-r--r-- 1 picodotdev picodotdev 5672 mar 20 11:40 alis-packages.conf 17 | -rwxr-xr-x 1 picodotdev picodotdev 548 mar 20 11:40 alis-packages-exit.sh 18 | -rwxr-xr-x 1 picodotdev picodotdev 9004 mar 20 11:40 alis-packages.sh 19 | -rwxr-xr-x 1 picodotdev picodotdev 670 mar 20 11:40 alis-packer.sh 20 | -rwxr-xr-x 1 picodotdev picodotdev 201 mar 20 11:40 alis-reboot.sh 21 | -rwxr-xr-x 1 picodotdev picodotdev 524 mar 20 11:40 alis-recovery-asciinema.sh 22 | -rw-r--r-- 1 picodotdev picodotdev 2738 mar 20 11:40 alis-recovery.conf 23 | -rwxr-xr-x 1 picodotdev picodotdev 864 mar 20 11:40 alis-recovery-reboot.sh 24 | -rwxr-xr-x 1 picodotdev picodotdev 8702 mar 20 11:40 alis-recovery.sh 25 | -rwxr-xr-x 1 picodotdev picodotdev 67840 mar 20 11:40 alis.sh 26 | drwxr-xr-x 2 picodotdev picodotdev 4096 mar 20 11:40 configs 27 | -rwxr-xr-x 1 picodotdev picodotdev 647 mar 20 11:40 download.sh 28 | -rwxr-xr-x 1 picodotdev picodotdev 645 mar 20 11:40 download-sid.sh 29 | drwxr-xr-x 3 picodotdev picodotdev 4096 mar 20 11:40 files -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/media-fingerprint.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | $ sha1sum archlinux-2022.03.01-x86_64.iso 4 | 64070acf60ac342d7aaddddfa0448f5900c4a0a5 archlinux-2022.03.01-x86_64.iso -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/package-downgrade.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2102 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # SC2102: Ranges can only match single chars (mentioned due to duplicates). 4 | $ pacman -U [package] 5 | $ pacman -U /var/cache/pacman/pkg/linux-5.16.15.arch1-1-x86_64.pkg.tar.zst -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/pacman-package-install.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2102 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | $ pacman -S [package] 4 | $ pacman -S firefox -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/pacman-update.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2102 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | $ pacman -Syu -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/recovery.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2102 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | $ vim alis-recovery.conf 4 | $ ./alis-recovery.sh -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/vim-alis-conf.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2102 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # vim alis.conf -------------------------------------------------------------------------------- /site/content/pages/user-guide/code/vim-alis-packages-conf.sh: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2148,SC2102 2 | # SC2148: Tips depend on target shell and yours is unknown. Add a shebang. 3 | # vim alis-packages.conf -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/alis-cloud-init-ssh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/alis-cloud-init-ssh.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/alis-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/alis-start.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/arch-linux-installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/arch-linux-installation.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/arch-linux-terminal-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/arch-linux-terminal-login.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/archlinux-installation-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/archlinux-installation-start.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/archlinux-media.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/archlinux-media.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/balena-etcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/balena-etcher.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/gnome-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/gnome-desktop.png -------------------------------------------------------------------------------- /site/content/pages/user-guide/images/gnome-software.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/content/pages/user-guide/images/gnome-software.png -------------------------------------------------------------------------------- /site/deploy-github.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | cd deploy/ 5 | git add . 6 | git commit -m "Site update at $(LC_ALL=en_US.utf8 date +%Y-%m-%dT%H:%M:%S%z)" 7 | git push origin gh-pages 8 | cd .. 9 | -------------------------------------------------------------------------------- /site/install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | git clone -b main git@github.com:picodotdev/alis.git 3 | cd alis || exit 4 | git config --local user.email "pico.dev@gmail.com" 5 | git config --local user.name "pico.dev" 6 | 7 | git clone -b gh-pages git@github.com:picodotdev/alis.git deploy/ 8 | cd deploy || exit 9 | git config --local user.email "pico.dev@gmail.com" 10 | git config --local user.name "pico.dev" 11 | 12 | -------------------------------------------------------------------------------- /site/reset-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eu 3 | 4 | mv deploy/ deploy-backup/ 5 | mkdir deploy/ 6 | 7 | cd deploy/ 8 | git init -b gh-pages 9 | git remote add origin git@github.com:picodotdev/alis.git 10 | git config --local user.email "pico.dev@gmail.com" 11 | git config --local user.name "pico.dev" 12 | git config --local pull.ff only 13 | git checkout -b gh-pages 14 | cd .. 15 | 16 | hugo --destination="deploy" 17 | 18 | cd deploy/ 19 | git add -A 20 | git commit -m "Site reset at $(LC_ALL=en_US.utf8 date +%Y-%m-%dT%H:%M:%S%z)" 21 | git push --force origin gh-pages 22 | cd .. 23 | -------------------------------------------------------------------------------- /site/server.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | hugo server --buildDrafts --buildFuture --watch --disableLiveReload --gc 3 | -------------------------------------------------------------------------------- /site/static/images/archlinux-gnome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/static/images/archlinux-gnome.jpg -------------------------------------------------------------------------------- /site/static/images/archlinux-kde.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/static/images/archlinux-kde.jpg -------------------------------------------------------------------------------- /site/static/images/archlinux-xfce.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/static/images/archlinux-xfce.jpg -------------------------------------------------------------------------------- /site/themes/alis/assets/main.scss: -------------------------------------------------------------------------------- 1 | $arch-color: #08c; 2 | $arch-background-color: #f6f9fc; 3 | $arch-background-dark-color: #222; 4 | $arch-background-font-color: white; 5 | 6 | body { 7 | font-family: 'Open Sans', sans-serif;; 8 | font-size: 1.1em; 9 | background-color: $arch-background-color; 10 | overflow-x: hidden; 11 | } 12 | 13 | a { 14 | color: $arch-color; 15 | } 16 | 17 | a:visited { 18 | color: lighten($arch-color, 5%); 19 | } 20 | 21 | a:hover { 22 | color: darken($arch-color, 5%); 23 | } 24 | 25 | h1 { 26 | font-size: 5em; 27 | font-weight: bold; 28 | } 29 | 30 | header { 31 | min-height: 40px; 32 | padding: 10px 15px; 33 | background: $arch-background-dark-color; 34 | border-bottom: 5px $arch-color solid; 35 | 36 | .navbar-light .navbar-nav .nav-link { 37 | color: $arch-background-font-color; 38 | font-weight: bold; 39 | } 40 | 41 | .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .show > .nav-link { 42 | color: $arch-background-font-color; 43 | font-weight: bold; 44 | } 45 | } 46 | 47 | footer { 48 | font-size: 0.9em; 49 | min-height: 100px; 50 | padding: 10px 15px; 51 | background: $arch-background-dark-color; 52 | border-top: 5px $arch-color solid; 53 | color: $arch-background-font-color; 54 | } 55 | 56 | .container-fluid { 57 | padding-right: 0px; 58 | padding-left: 0px; 59 | } 60 | 61 | .row { 62 | margin-right: 0px; 63 | margin-left: 0px; 64 | } 65 | 66 | .navbar { 67 | font-weight: bold; 68 | } 69 | 70 | .card { 71 | border: 1px solid #bcd; 72 | border-radius: 0rem; 73 | } 74 | 75 | div.code { 76 | border: 1px solid #ddd; 77 | border-radius: 0em; 78 | margin-bottom: 1em; 79 | 80 | div.highlight { 81 | font-size: 1em; 82 | border-bottom: 1px solid #ddd; 83 | 84 | table { 85 | overflow: auto; 86 | 87 | td:nth-child(2) { 88 | width: 100%; 89 | } 90 | } 91 | } 92 | 93 | div.highlight-meta { 94 | font-size: 1em; 95 | background-color: #f7f7f7; 96 | padding: 6px; 97 | 98 | span.raw { 99 | float: right; 100 | } 101 | 102 | span, a { 103 | color: #666; 104 | font-weight: 600; 105 | text-decoration: none; 106 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol; 107 | font-size: 0.8em; 108 | } 109 | } 110 | 111 | pre { 112 | margin-bottom: 0rem; 113 | } 114 | } 115 | 116 | div.sidebar-sticky { 117 | top: 15px; 118 | min-height: 600px; 119 | max-height: 1050px; 120 | display: none; 121 | } 122 | 123 | div.adsense-vertical { 124 | min-width: 120px; 125 | max-width: 300px; 126 | min-height: 600px; 127 | max-height: 1050px; 128 | display: block; 129 | } 130 | 131 | div.adsense-bilboard { 132 | min-width: 250px; 133 | max-width: 970px; 134 | min-height: 60px; 135 | max-height: 280px; 136 | display: block; 137 | margin: auto; 138 | } 139 | 140 | div.tableofcontents { 141 | border: 1px solid #ddd; 142 | border-radius: 0em; 143 | background-color: #f7f7f7; 144 | display: inline-block; 145 | } 146 | 147 | div.media { 148 | display: block; 149 | text-align: center; 150 | margin-bottom: 1em; 151 | 152 | iframe[id^="asciicast-iframe"], amp-iframe[id^="asciicast-iframe"] { 153 | border: 0em solid white; 154 | box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.15); 155 | } 156 | 157 | img, video, iframe, amp-img, amp-video, amp-iframe, amp-ad { 158 | background-color: white; 159 | border: 0.5em solid white; 160 | border-radius: 0.3em; 161 | box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.15); 162 | box-sizing: content-box; 163 | max-width: 100%; 164 | max-height: 100%; 165 | object-fit: contain; 166 | vertical-align: middle; 167 | 168 | &.white-background { 169 | background-color: white; 170 | } 171 | 172 | &.black-background { 173 | background-color: black; 174 | } 175 | } 176 | 177 | figure { 178 | clear: both; 179 | 180 | p { 181 | a { 182 | display: inline-block; 183 | } 184 | } 185 | 186 | figcaption { 187 | font-size: 0.8em; 188 | } 189 | } 190 | } 191 | 192 | div.media-amazon.float-right { 193 | margin-left: 20px; 194 | } 195 | 196 | div.media-twitter { 197 | text-align: left; 198 | } 199 | 200 | @media screen and (max-width: 576px) { 201 | h1 { 202 | font-size: 4em;; 203 | } 204 | } 205 | 206 | @media screen and (min-width: 1650px) { 207 | div.main { 208 | max-width: 1320px; 209 | } 210 | 211 | div.sidebar-sticky { 212 | display: block; 213 | } 214 | } -------------------------------------------------------------------------------- /site/themes/alis/assets/syntax.css: -------------------------------------------------------------------------------- 1 | /* Background */ .chroma { background-color: #ffffff } 2 | /* Other */ .chroma .x { } 3 | /* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 } 4 | /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } 5 | /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } 6 | /* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } 7 | /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } 8 | /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } 9 | /* Keyword */ .chroma .k { color: #000000; font-weight: bold } 10 | /* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold } 11 | /* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold } 12 | /* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold } 13 | /* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold } 14 | /* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold } 15 | /* KeywordType */ .chroma .kt { color: #445588; font-weight: bold } 16 | /* Name */ .chroma .n { } 17 | /* NameAttribute */ .chroma .na { color: #008080 } 18 | /* NameBuiltin */ .chroma .nb { color: #0086b3 } 19 | /* NameBuiltinPseudo */ .chroma .bp { color: #999999 } 20 | /* NameClass */ .chroma .nc { color: #445588; font-weight: bold } 21 | /* NameConstant */ .chroma .no { color: #008080 } 22 | /* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold } 23 | /* NameEntity */ .chroma .ni { color: #800080 } 24 | /* NameException */ .chroma .ne { color: #990000; font-weight: bold } 25 | /* NameFunction */ .chroma .nf { color: #990000; font-weight: bold } 26 | /* NameFunctionMagic */ .chroma .fm { } 27 | /* NameLabel */ .chroma .nl { color: #990000; font-weight: bold } 28 | /* NameNamespace */ .chroma .nn { color: #555555 } 29 | /* NameOther */ .chroma .nx { } 30 | /* NameProperty */ .chroma .py { } 31 | /* NameTag */ .chroma .nt { color: #000080 } 32 | /* NameVariable */ .chroma .nv { color: #008080 } 33 | /* NameVariableClass */ .chroma .vc { color: #008080 } 34 | /* NameVariableGlobal */ .chroma .vg { color: #008080 } 35 | /* NameVariableInstance */ .chroma .vi { color: #008080 } 36 | /* NameVariableMagic */ .chroma .vm { } 37 | /* Literal */ .chroma .l { } 38 | /* LiteralDate */ .chroma .ld { } 39 | /* LiteralString */ .chroma .s { color: #dd1144 } 40 | /* LiteralStringAffix */ .chroma .sa { color: #dd1144 } 41 | /* LiteralStringBacktick */ .chroma .sb { color: #dd1144 } 42 | /* LiteralStringChar */ .chroma .sc { color: #dd1144 } 43 | /* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 } 44 | /* LiteralStringDoc */ .chroma .sd { color: #dd1144 } 45 | /* LiteralStringDouble */ .chroma .s2 { color: #dd1144 } 46 | /* LiteralStringEscape */ .chroma .se { color: #dd1144 } 47 | /* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 } 48 | /* LiteralStringInterpol */ .chroma .si { color: #dd1144 } 49 | /* LiteralStringOther */ .chroma .sx { color: #dd1144 } 50 | /* LiteralStringRegex */ .chroma .sr { color: #009926 } 51 | /* LiteralStringSingle */ .chroma .s1 { color: #dd1144 } 52 | /* LiteralStringSymbol */ .chroma .ss { color: #990073 } 53 | /* LiteralNumber */ .chroma .m { color: #009999 } 54 | /* LiteralNumberBin */ .chroma .mb { color: #009999 } 55 | /* LiteralNumberFloat */ .chroma .mf { color: #009999 } 56 | /* LiteralNumberHex */ .chroma .mh { color: #009999 } 57 | /* LiteralNumberInteger */ .chroma .mi { color: #009999 } 58 | /* LiteralNumberIntegerLong */ .chroma .il { color: #009999 } 59 | /* LiteralNumberOct */ .chroma .mo { color: #009999 } 60 | /* Operator */ .chroma .o { color: #000000; font-weight: bold } 61 | /* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold } 62 | /* Punctuation */ .chroma .p { } 63 | /* Comment */ .chroma .c { color: #999988; font-style: italic } 64 | /* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic } 65 | /* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic } 66 | /* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic } 67 | /* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic } 68 | /* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic } 69 | /* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic } 70 | /* Generic */ .chroma .g { } 71 | /* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd } 72 | /* GenericEmph */ .chroma .ge { color: #000000; font-style: italic } 73 | /* GenericError */ .chroma .gr { color: #aa0000 } 74 | /* GenericHeading */ .chroma .gh { color: #999999 } 75 | /* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd } 76 | /* GenericOutput */ .chroma .go { color: #888888 } 77 | /* GenericPrompt */ .chroma .gp { color: #555555 } 78 | /* GenericStrong */ .chroma .gs { font-weight: bold } 79 | /* GenericSubheading */ .chroma .gu { color: #aaaaaa } 80 | /* GenericTraceback */ .chroma .gt { color: #aa0000 } 81 | /* GenericUnderline */ .chroma .gl { text-decoration: underline } 82 | /* TextWhitespace */ .chroma .w { color: #bbbbbb } 83 | -------------------------------------------------------------------------------- /site/themes/alis/data/theme/conf.yml: -------------------------------------------------------------------------------- 1 | --- 2 | links: 3 | html: 4 | suffix: "/" 5 | absolute: "false" 6 | xml: 7 | suffix: "/" 8 | absolute: "true" 9 | amp: 10 | suffix: "/index-amp.html" 11 | absolute: "false" 12 | tags: 13 | html: 14 | imgtag: "img" 15 | imgtagopen: "" 21 | iframetagsrc: "data-src" 22 | audiotag: "audio" 23 | audiotagopen: "" 25 | xml: 26 | imgtag: "img" 27 | imgtagopen: "" 33 | iframetagsrc: "src" 34 | audiotag: "audio" 35 | audiotagopen: "" 37 | amp: 38 | imgtag: "amp-img" 39 | imgtagopen: "" 41 | imgtagsrc: "src" 42 | iframetag: "amp-iframe" 43 | iframetagopen: "" 45 | iframetagsrc: "src" 46 | audiotag: "amp-audio" 47 | audiotagopen: "" -------------------------------------------------------------------------------- /site/themes/alis/layouts/_default/_markup/render-image.html: -------------------------------------------------------------------------------- 1 | {{- $links := .Page.Site.Data.theme.conf.links.html -}} 2 | {{- $tags := .Page.Site.Data.theme.conf.tags.html -}} 3 | {{- $imgtagopen := $tags.imgtagopen -}} 4 | {{- $imgtagclose := $tags.imgtagclose -}} 5 | {{- $imgtagsrc := $tags.imgtagsrc -}} 6 | 7 | {{- $nil := default nil nil -}} 8 | {{- $src := $nil -}} 9 | {{- $srcthumb := $nil -}} 10 | {{- $width := $nil -}} 11 | {{- $height := $nil -}} 12 | {{- $title := .Title -}} 13 | 14 | {{- $strings := split .Destination "," -}} 15 | {{- $attributes := dict -}} 16 | {{- range $i := $strings -}} 17 | {{- $key := index (split $i "=") 0 -}} 18 | {{- $value := index (split $i "=") 1 -}} 19 | {{- $attributes = merge $attributes (dict $key $value) -}} 20 | {{- end -}} 21 | {{- $page := default "" (index $attributes "page") -}} 22 | {{- $url := index $attributes "url" -}} 23 | {{- $size := index $attributes "size" -}} 24 | {{- $width := index (split $size "x") 0 -}} 25 | {{- $height := index (split $size "x") 1 -}} 26 | {{- $command := default "Fit" (index $attributes "command") -}} 27 | {{- $commandthumb := default "Fit" (index $attributes "commandthumb") -}} 28 | {{- $options := default "2560x1440" (index $attributes "options") -}} 29 | {{- $optionsthumb := index $attributes "size" -}} 30 | {{- $gallery := eq "true" (index $attributes "gallery") -}} 31 | {{- $class := index $attributes "class" -}} 32 | {{- $class := replace $class "." " " -}} 33 | {{- $layout := index $attributes "layout" -}} 34 | {{- $loading := default "lazy" (index $attributes "lazy") -}} 35 | 36 | {{- if (eq $loading "false") -}} 37 | {{- $loading := $nil -}} 38 | {{- end -}} 39 | 40 | {{- if or (hasPrefix $url "logotype:") (hasPrefix $url "resource:") (hasPrefix $url "image:") (hasPrefix $url "asset:") -}} 41 | {{- $binding := index (split $url ":") 0 -}} 42 | {{- $image := index (split $url ":") 1 -}} 43 | {{- $imagethumb := index (split $url ":") 2 -}} 44 | 45 | {{- if eq $binding "logotype" -}} 46 | {{- $src = print "assets/images/logotypes/" $image | relURL -}} 47 | {{- $srcthumb = cond (eq $imagethumb nil) $src (print "assets/images/logotypes/" $imagethumb | relURL) -}} 48 | {{- else if or (eq $binding "resource") (eq $binding "image") -}} 49 | {{- $p := cond (eq $page "") .Page (.Page.GetPage $page) -}} 50 | {{- $path := cond (eq $binding "image") "images/" "" -}} 51 | 52 | {{- if (findRE "\\.svg$|\\.webp$|\\.gif" $image) -}} 53 | {{- $base := replace .Page.Permalink "/index-amp.html" "/" -}} 54 | {{- $src = print $base $path $image | relURL -}} 55 | {{- $srcthumb = cond (eq $imagethumb nil) $src (print $base $path $imagethumb | relURL) -}} 56 | {{- else -}} 57 | {{- $resource := $p.Resources.GetMatch (print $path $image) -}} 58 | {{- $resourcethumb := $p.Resources.GetMatch (print $path $image) -}} 59 | {{- $scaled := $nil -}} 60 | {{- $scaledhumb := $nil -}} 61 | 62 | {{- if eq $resource nil -}}{{- errorf "Invalid resource '%s'" $image -}}{{- end -}} 63 | {{- if eq $optionsthumb nil -}}{{- errorf "Invalid thumb optionsthumb '%s'" $optionsthumb -}}{{- end -}} 64 | 65 | {{- if eq $command "Fit" -}} 66 | {{- $scaled = $resource.Fit $options -}} 67 | {{- else if eq $command "Resize" -}} 68 | {{- $scaled = $resource.Resize $options -}} 69 | {{- else if eq $command "Fill" -}} 70 | {{- $scaled = $resource.Fill $options -}} 71 | {{- else -}} 72 | {{- errorf "Invalid image processing command: Must be one of Fit, Fill or Resize '%s'" .Destination -}} 73 | {{- end -}} 74 | 75 | {{- if eq $commandthumb "Fit" -}} 76 | {{- $scaledhumb = $resourcethumb.Fit $optionsthumb -}} 77 | {{- else if eq $commandthumb "Resize" -}} 78 | {{- $scaledhumb = $resourcethumb.Resize $optionsthumb -}} 79 | {{- else if eq $commandthumb "Fill" -}} 80 | {{- $scaledhumb = $resourcethumb.Fill $optionsthumb -}} 81 | {{- else -}} 82 | {{- errorf "Invalid image processing command: Must be one of Fit, Fill or Resize '%s'" .Destination -}} 83 | {{- end -}} 84 | 85 | {{- $src = $scaled.RelPermalink -}} 86 | {{- $srcthumb = $scaledhumb.RelPermalink -}} 87 | {{- $width = $scaledhumb.Width -}} 88 | {{- $height = $scaledhumb.Height -}} 89 | 90 | {{- if eq $layout "fixed-height" -}} 91 | {{- $width = $nil -}} 92 | {{- end -}} 93 | {{- end -}} 94 | {{- else if eq $binding "asset" -}} 95 | {{- $src = $image | relURL -}} 96 | {{- $srcthumb = cond (eq $imagethumb nil) $src (print "assets/images/logotypes/" $imagethumb | relURL) -}} 97 | {{- end -}} 98 | {{- else -}} 99 | {{- errorf "Malformed image destination '%s'" .Destination -}} 100 | {{- end -}} 101 | 102 | {{- $srcimg := default .Destination $src -}} 103 | {{- $srca := $nil -}} 104 | 105 | {{- if and $gallery (ne $src nil) (ne $srcthumb nil) -}} 106 | {{- $srcimg = $srcthumb -}} 107 | {{- $srca = $src -}} 108 | {{- end -}} 109 | {{- if eq $links.absolute "true" -}} 110 | {{- $srcimg = absURL $srcimg -}} 111 | {{- $srca = absURL $srca -}} 112 | {{- end -}} 113 | {{ $srcimg = replace $srcimg "/index-amp.html" "/" }} 114 | {{ $srca = replace $srca "/index-amp.html" "/" }} 115 | 116 | {{- if $gallery }}{{ end -}} 117 | {{- $imgtagopen | safeHTML }} {{ $imgtagsrc }}="{{ $srcimg }}"{{ with $width }} width="{{ . }}"{{ end }}{{ with $height }} height="{{ . }}"{{ end }}{{ with $title }} alt="{{ . }}" title="{{ . }}"{{ end }}{{ with $layout }} layout="{{ . }}"{{ end }} class="{{ with $class }}{{ . }} {{ end }}"{{ with $loading }} loading="{{ . }}"{{ end }}>{{ $imgtagclose | safeHTML -}} 118 | {{- if $gallery }}{{ end -}} -------------------------------------------------------------------------------- /site/themes/alis/layouts/_default/_markup/render-link.html: -------------------------------------------------------------------------------- 1 | {{- $links := .Page.Site.Data.theme.conf.links.html -}} 2 | {{- $noLinks := .Page.Site.Data.theme.conf.links.amp -}} 3 | {{- $href := .Destination -}} 4 | {{- $title := .Title -}} 5 | {{- $text := .Text -}} 6 | 7 | {{- $nil := default nil nil -}} 8 | {{- $binding := $nil -}} 9 | {{- $attributes := dict -}} 10 | 11 | {{- if or (eq (len (findRE "javadoc\\d+:" $href)) 1) (hasPrefix $href "javaee8:") (hasPrefix $href "tapestry:") (hasPrefix $href "spring-boot:") (hasPrefix $href "spring-framework:") -}} 12 | {{- $binding = index (split $href ":") 0 -}} 13 | {{- $href = index (split $href ":") 1 -}} 14 | {{- end -}} 15 | 16 | {{- $strings := split $href "," -}} 17 | {{- range $i,$v := $strings -}} 18 | {{- if eq $i 0 -}} 19 | {{- $href = index (split $v ",") 0 -}} 20 | {{- else -}} 21 | {{- $key := index (split $v "=") 0 -}} 22 | {{- $value := index (split $v "=") 1 -}} 23 | {{- $attributes = merge $attributes (dict $key $value) -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{- if in (slice "javadoc8" "javadoc9" "javadoc10") $binding -}} 28 | {{- $version := replace $binding "javadoc" "" -}} 29 | {{- $href = print "https://docs.oracle.com/javase/" $version "/docs/api/" $href -}} 30 | {{- else if (eq (len (findRE "javadoc\\d+" $binding)) 1) -}} 31 | {{- $version := replace $binding "javadoc" "" -}} 32 | {{- $href = print "https://docs.oracle.com/en/java/javase/" $version "/docs/api/" $href -}} 33 | {{- else if eq $binding "javaee8" -}} 34 | {{- $href = print "https://javaee.github.io/javaee-spec/javadocs/" $href -}} 35 | {{- else if eq $binding "tapestry" -}} 36 | {{- $href = print "https://tapestry.apache.org/current/apidocs/" $href -}} 37 | {{- else if eq $binding "spring-boot" -}} 38 | {{- $href = print "https://docs.spring.io/spring-boot/docs/current/api/" $href -}} 39 | {{- else if eq $binding "spring-framework" -}} 40 | {{- $href = print "https://docs.spring.io/spring-framework/docs/current/javadoc-api/" $href -}} 41 | {{- end -}} 42 | 43 | {{- if eq $links.absolute "true" -}} 44 | {{- $href = absURL $href -}} 45 | {{- end -}} 46 | {{- if and (findRE (print "^" .Page.Site.BaseURL) $href) (strings.HasSuffix $href $noLinks.suffix) -}} 47 | {{- $href = replaceRE (print $noLinks.suffix "$") $links.suffix $href -}} 48 | {{- end -}} 49 | {{- $rel := index $attributes "rel" -}} 50 | {{- $target := index $attributes "target" -}} 51 | {{- $class := index $attributes "class" -}} 52 | 53 | {{- if findRE (print "^" .Page.Site.Params.misc.sponsoredlink) $href -}} 54 | {{- $rel = strings.TrimLeft " " (print (default "" $rel) " " "sponsored") -}} 55 | {{- end -}} 56 | 57 | {{ $text }} -------------------------------------------------------------------------------- /site/themes/alis/layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ partial "meta.html" . }} 5 | {{ block "title" . }}{{ .Site.Title }}{{ end }} 6 | {{ partial "css.html" . }} 7 | {{ partial "javascript.html" . }} 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | {{ partial "navbar.html" . }} 18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | 29 |
30 |
31 |
32 |
33 |
34 | {{ block "main" . }}{{ end }} 35 |
36 |
37 |
38 |
39 |
40 | 43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |

alis

53 |

{{ .Site.Params.Description }}

54 |
55 |
56 |
    57 | {{ range .Site.Menus.navbar }} 58 |
  • {{ .Name }}
  • 59 | {{ end }} 60 |
61 |
62 |
63 | Arch Linux 64 | Bash 65 |
66 |
67 |
68 |
69 |

70 | alis by pico.dev and other contributors is licensed under the GNU General Public License v3.0.
71 | Site powered by Hugo, GitHub, GitHub Pages and Bootstrap.
72 | Arch Linux Install Script is based on Arch Linux but is NOT approved, sponsored, or affiliated with Arch Linux or its related projects. 73 |

74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | 82 | 83 | -------------------------------------------------------------------------------- /site/themes/alis/layouts/_default/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ end }} -------------------------------------------------------------------------------- /site/themes/alis/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ replace .Content "" .TableOfContents | safeHTML }} 3 | {{ end }} -------------------------------------------------------------------------------- /site/themes/alis/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ replace .Content "" .TableOfContents | safeHTML }} 3 | {{ end }} -------------------------------------------------------------------------------- /site/themes/alis/layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ replace .Content "" .TableOfContents | safeHTML }} 3 | {{ end }} -------------------------------------------------------------------------------- /site/themes/alis/layouts/pages/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ replace .Content "" .TableOfContents | safeHTML }} 3 | {{ end }} -------------------------------------------------------------------------------- /site/themes/alis/layouts/partials/ad-sidebar.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/alis/layouts/partials/css.html: -------------------------------------------------------------------------------- 1 | {{- $cssOpts := (dict "targetPath" "css/main.css" "outputStyle" "compressed" "enableSourceMap" true) }} 2 | {{- $mainCss := resources.Get "main.scss" | toCSS $cssOpts }} 3 | {{- $syntaxCss := resources.Get "syntax.css" }} 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /site/themes/alis/layouts/partials/javascript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /site/themes/alis/layouts/partials/meta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /site/themes/alis/layouts/partials/navbar.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/alis/layouts/shortcodes/ad-bilboard.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/alis/layouts/shortcodes/code.html: -------------------------------------------------------------------------------- 1 | {{ $file := print "code/" .Params.file }} 2 | {{ $resource := .Page.Resources.GetMatch $file }} 3 | {{- if eq $resource nil -}} 4 | {{ $file = print .Params.file }} 5 | {{ $resource = .Page.Resources.GetMatch $file }} 6 | {{- end -}} 7 | {{- if eq $resource nil -}}{{- errorf "Resource not found '%s'" $file -}}{{- end -}} 8 | {{ $content := $resource.Content }} 9 | {{ $lines := len (findRE "\n" $content) }} 10 | {{- if eq $lines 0 -}} 11 | {{ $content = print $content "\n\n" }} 12 | {{- else if eq $lines 1 -}} 13 | {{ $content = print $content "\n" }} 14 | {{- end -}} 15 | {{ $content := highlight $content .Params.language .Params.options | }} 16 | {{ $content := replaceRE "[ ]{4}" "    " $content }} 17 | {{ $content := replaceRE "\\n" " " $content }} 18 | {{ $file := .Params.file }} 19 | {{ $file := replace $file ".xhtml" ".html" }} 20 | {{ $file := replace $file ".xmarkdown" ".markdown" }} 21 | 22 |
23 | {{ $content | safeHTML }} 24 |
25 | {{ $file }} 26 |
27 |
-------------------------------------------------------------------------------- /site/themes/alis/layouts/shortcodes/image.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | {{ $class1 := replace $.Params.class1 " " "." }} 5 | {{ $class2 := replace $.Params.class2 " " "." }} 6 | {{ $class3 := replace $.Params.class3 " " "." }} 7 | {{ with .Params.image1 }}![](url={{ . }}{{ with $.Params.thumb1 }}:{{ . }}{{ end }},size={{ $.Params.optionsthumb1 }},gallery={{ $.Params.gallery }},class={{ $class1 }} "{{ $.Params.title1 }}"){{ end }} 8 | {{ with .Params.image2 }}![](url={{ . }}{{ with $.Params.thumb2 }}:{{ . }}{{ end }},size={{ $.Params.optionsthumb2 }},gallery={{ $.Params.gallery }},class={{ $class2 }} "{{ $.Params.title2 }}"){{ end }} 9 | {{ with .Params.image3 }}![](url={{ . }}{{ with $.Params.thumb3 }}:{{ . }}{{ end }},size={{ $.Params.optionsthumb3 }},gallery={{ $.Params.gallery }},class={{ $class3 }} "{{ $.Params.title3 }}"){{ end }} 10 | {{ with .Params.caption }}
{{ . }}{{ with $.Params.source }}
{{ i18n "source" }}: {{ . }}{{ end -}}
{{ end }} 11 |
12 |
-------------------------------------------------------------------------------- /site/themes/alis/layouts/shortcodes/markdown.html: -------------------------------------------------------------------------------- 1 | {{ .Inner | .Page.RenderString }} -------------------------------------------------------------------------------- /site/themes/alis/layouts/shortcodes/tableofcontents.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ i18n "article_content" }}

3 | 4 |
-------------------------------------------------------------------------------- /site/themes/alis/static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picodotdev/alis/9a60ca6707a52078c6e2f3607707123bc34ec111/site/themes/alis/static/images/favicon.png -------------------------------------------------------------------------------- /site/themes/alis/static/images/logotypes/archlinux-logo-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /site/themes/alis/static/images/logotypes/archlinux-logo-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /site/themes/alis/static/images/logotypes/gnome.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/alis/static/images/logotypes/kde.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /site/themes/alis/static/images/logotypes/xfce.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | XFCE 4 Logo 5 | 6 | 7 | 8 | image/svg+xml 9 | 10 | XFCE 4 Logo 11 | 12 | 13 | Savvas Radevic 14 | 15 | 16 | http://www.xfce.org/about/artwork 17 | 18 | XFCE logo 19 | * Based on xfce_logo.svg from http://www.xfce.org/about/artwork 20 | * Optimized colours 21 | * Added "X" and "XFCE" text. 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | --------------------------------------------------------------------------------