200 lines
4.0 KiB
Bash
Executable File
200 lines
4.0 KiB
Bash
Executable File
#!/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 <<EOF >/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 <<EOF >/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 <<EOF >/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
|