#!/bin/bash set -euo pipefail baseDir="$(realpath "$(dirname "${0}")")" source \ /etc/os-release source \ "${baseDir}/system.conf" if [[ "${1}" == '--mmdebstrap' ]]; then packages=(\ console-setup \ cryptsetup \ curl \ dosfstools \ dpkg-dev \ efibootmgr \ ethtool \ flatpak \ keyboard-configuration \ linux-generic \ locales \ nano \ network-manager \ openssh-{client,server} \ popularity-contest \ rsync \ zfs-initramfs \ zstd\ ) include="--include=${packages[0]}" for ((i=1;i<${#packages[@]};i++)); do include+=" --include=${packages[${i}]}" done mmdebstrap \ --skip=check/empty \ --components=main,restricted,universe,multiverse \ --mode=root \ --format=directory \ ${include} \ "${UBUNTU_VERSION_CODENAME}" \ /mnt fi if [[ "${1}" == '--sources' ]]; then cat </mnt/etc/apt/sources.list.d/${UBUNTU_VERSION_CODENAME}.sources # ${UBUNTU_VERSION_CODENAME^} Enabled: yes Types: deb deb-src URIs: http://archive.ubuntu.com/ubuntu/ Suites: ${UBUNTU_VERSION_CODENAME} Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg # ${UBUNTU_VERSION_CODENAME^} Security Enabled: yes Types: deb deb-src URIs: http://security.ubuntu.com/ubuntu/ Suites: ${UBUNTU_VERSION_CODENAME}-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg # ${UBUNTU_VERSION_CODENAME^} Updates Enabled: yes Types: deb deb-src URIs: http://archive.ubuntu.com/ubuntu/ Suites: ${UBUNTU_VERSION_CODENAME}-updates Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg EOF cat </mnt/etc/apt/sources.list.d/elementary.sources Enabled: yes Types: deb deb-src URIs: https://ppa.launchpadcontent.net/elementary-os/stable/ubuntu Suites: ${UBUNTU_VERSION_CODENAME} Components: main Signed-By: /etc/apt/trusted.gpg.d/elementary.key.asc EOF cat </mnt/etc/apt/sources.list.d/patches.sources Enabled: yes Types: deb deb-src URIs: https://ppa.launchpadcontent.net/elementary-os/os-patches/ubuntu Suites: ${UBUNTU_VERSION_CODENAME} Components: main Signed-By: /etc/apt/trusted.gpg.d/patches.key.asc EOF rm /mnt/etc/apt/sources.list fi if [[ "${1}" == '--skel' ]]; then rsync -pogAXtlHrDx \ /etc/skel \ /mnt/etc fi if [[ "${1}" == '--elementary' ]]; then cp \ /etc/os-release \ /mnt/etc cp \ /etc/apt/trusted.gpg.d/{elementary,patches}.key.asc \ /mnt/etc/apt/trusted.gpg.d/ fi if [[ "${1}" == '--network' ]]; then mkdir \ -p \ /mnt/run/systemd/resolve/ mount \ --bind \ /run/systemd/resolve/ \ /mnt/run/systemd/resolve/ touch \ /mnt/etc/NetworkManager/conf.d/10-globally-managed-devices.conf fi if [[ "${1}" == '--apps' ]]; then app=(\ io.elementary.calculator \ io.elementary.camera \ io.elementary.capnet-assist \ io.elementary.maps \ io.elementary.music \ io.elementary.screenshot \ io.elementary.videos \ org.gnome.Epiphany \ org.gnome.Evince \ org.gnome.FileRoller \ org.gnome.font-viewer\ ) apps="app/${app[0]}/x86_64/stable" for ((i=1;i<${#app[@]};i++)); do apps+=" app/${app[${i}]}/x86_64/stable" done flatpak \ install \ appcenter \ -y \ ${apps} fi if [[ "${1}" == '--purge' ]]; then apt \ purge \ --yes \ --autoremove \ gnome-software \ snapd fi if [[ "${1}" == '--desktop' ]]; then apt \ install \ --yes \ elementary-desktop fi if [[ "${1}" == '--namarupa' ]]; then curl \ --progress \ --location \ --remote-name \ --continue-at - \ --output-dir '/tmp' \ 'https://github.com/lenemter/wingpanel-indicator-namarupa/raw/main/com.github.lenemter.wingpanel-indicator-namarupa.deb' apt \ --update \ install \ --yes \ '/tmp/com.github.lenemter.wingpanel-indicator-namarupa.deb' mkdir \ -p \ /home/${username}/.config/autostart cp \ /etc/xdg/autostart/indicator-application.desktop \ /home/${username}/.config/autostart/ sed \ -i \ 's/^OnlyShowIn.*/OnlyShowIn=Unity;GNOME;Pantheon;/' \ /home/${username}/.config/autostart/indicator-application.desktop fi