Skip to content

Instantly share code, notes, and snippets.

@brmo
Last active January 22, 2024 06:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save brmo/62a363a3e99e40502d09dbcd3b398ee9 to your computer and use it in GitHub Desktop.
Save brmo/62a363a3e99e40502d09dbcd3b398ee9 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
#
# Script is a mini version of https://github.com/jules-ch/Ubuntu20-Setup-XPS13/blob/master/setup.sh
set -ex
# Get the Ubuntu version installed
DISTRO_VER=$(lsb_release -r -s)
LOGIN_USER=$(logname)
if [ "$DISTRO_VER" != "22.04" ]
then echo "Your installed Ubuntu version is $DISTRO_VER, this script only works with 22.04 LTS."
exit
fi
sudo add-apt-repository universe -y
sudo add-apt-repository multiverse -y
sudo apt-get upgrade -yqq
# Ubuntu apt repos
sudo sh -c 'cat > /etc/apt/sources.list.d/focal-dell.list << EOF
deb http://dell.archive.canonical.com/updates/ focal-dell public
# deb-src http://dell.archive.canonical.com/updates/ focal-dell public
deb http://dell.archive.canonical.com/updates/ focal-oem public
# deb-src http://dell.archive.canonical.com/updates/ focal-oem public
deb http://dell.archive.canonical.com/updates/ focal-somerville public
# deb-src http://dell.archive.canonical.com/updates/ focal-somerville public
deb http://dell.archive.canonical.com/updates/ focal-somerville-melisa public
# deb-src http://dell.archive.canonical.com/updates focal-somerville-melisa public
EOF'
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
wget -qO- https://repo.vivaldi.com/archive/linux_signing_key.pub | sudo gpg --dearmor -o /etc/apt/keyrings/vivaldi.gpg
sudo sh -c 'echo "deb [arch=amd64,armhf signed-by=/etc/apt/keyrings/vivaldi.gpg] https://repo.vivaldi.com/archive/deb stable main" > /etc/apt/sources.list.d/vivaldi.list'
curl -s https://kopia.io/signing-key | sudo gpg --dearmor -o /etc/apt/keyrings/kopia-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kopia-keyring.gpg] http://packages.kopia.io/apt/ stable main" | sudo tee /etc/apt/sources.list.d/kopia.list
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
rm packages.microsoft.gpg
echo 'deb http://download.opensuse.org/repositories/home:/vtrefny/xUbuntu_22.10/ /' | sudo tee /etc/apt/sources.list.d/home:vtrefny.list
curl -fsSL https://download.opensuse.org/repositories/home:vtrefny/xUbuntu_22.10/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_vtrefny.gpg > /dev/null
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# Face recognition and TLP
sudo add-apt-repository ppa:linrunner/tlp -y > /dev/null 2>&1
sudo add-apt-repository ppa:persepolis/ppa -y > /dev/null 2>&1
sudo add-apt-repository ppa:sebastian-stenzel/cryptomator -y > /dev/null 2>&1
sudo add-apt-repository ppa:yannick-mauray/quickgui -y > /dev/null 2>&1
sudo apt-add-repository ppa:flexiondotorg/quickemu -y > /dev/null 2>&1
sudo add-apt-repository ppa:fish-shell/release-3 -y > /dev/null 2>&1
set -x
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F9FDA6BED73CDC22
sudo apt update -qq
# Install hardware device drivers for fingerprint and power management tools
sudo apt install oem-somerville-melisa-meta libfprint-2-tod1-goodix oem-somerville-meta tlp tlp-config fprintd libpam-fprintd -y
sudo systemctl start fprintd
sudo pam-auth-update
sudo sed -i 's/max-tries=1/max-tries=3/' /etc/pam.d/common-auth
# Install general utilities
sudo apt install git ncdu htop net-tools flatpak tailscale vivaldi-stable cryptomator code gparted \
sshfs flameshot nano clusterssh iftop iotop gir1.2-gda-5.0 gir1.2-gsound-1.0 gir1.2-gtop-2.0 \
vlc gnome-tweaks ubuntu-restricted-extras kopia-ui bat \
ffmpeg tmux build-essential apt-transport-https gnome-boxes persepolis \
ca-certificates curl gnupg gnome-software-plugin-flatpak flameshot tilix \
python3 python3-pip python-is-python3 pipx gnupg-agent gnupg2 software-properties-common \
gconf2 gconf-service traceroute nautilus-admin \
qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip \
quickgui quickemu blivet-gui fish kubectl \
docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin spell synaptic -y -qq
sudo apt remove brltty -yqq
echo /usr/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/bin/fish
pipx install gnome-extensions-cli
pipx ensurepath
sudo wget https://github.com/Eugeny/tabby/releases/download/v1.0.196/tabby-1.0.205-linux-x64.deb -O /tmp/tabby-1.0.205-linux-x64.deb
sudo dpkg -i /tmp/tabby-1.0.205-linux-x64.deb
sudo wget https://download.nomachine.com/download/8.10/Linux/nomachine_8.10.1_1_amd64.deb -O /tmp/nomachine.deb
sudo dpkg -i /tmp/nomachine.deb
curl https://rclone.org/install.sh | sudo bash
sudo sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
sudo wget https://github.com/mozilla/sops/releases/download/v3.8.1/sops_3.8.1_amd64.deb -O /tmp/sops_3.8.1_amd64.deb
sudo dpkg -i /tmpsops_3.8.1_amd64.deb
sudo python3 -m pip install -U pip setuptools wheel
sudo gpasswd -a $USER input
sudo apt install libinput-tools xdotool ruby -y -qq
sudo gem install --silent fusuma
sudo usermod -aG docker $USER
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.remmina.Remmina -y
flatpak install --user flathub com.belmoussaoui.Authenticator -y
flatpak install --user betterbird -y
code --install-extension ms-python.python
code --install-extension visualstudioexptteam.vscodeintellicode
code --install-extension eamodio.gitlens
code --install-extension redhat.vscode-yaml
code --install-extension ms-azuretools.vscode-docker
code --install-extension esbenp.prettier-vscode
code --install-extension Pkief.material-icon-theme
code --install-extension zhuangtongfa.material-theme
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
code --install-extension christian-kohler.path-intellisense
code --install-extension ms-vscode.cpptools
code --install-extension platformio.platformio-ide
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
# Install Gnome Extensions
gext install 906 3222 3981 5278 5004 5219 5410 5461 906 1070 5470 1486 4356 755 1085 4254 5377 4170 4551 1097
gsettings set org.gnome.desktop.wm.preferences button-layout 'appmenu:minimize,maximize,close'
gsettings set org.gnome.desktop.interface clock-show-weekday true
gsettings set org.gnome.desktop.sound allow-volume-above-100-percent true
gsettings set org.gnome.desktop.interface document-font-name 'Open Sans 11'
gsettings set org.gnome.desktop.interface font-antialiasing 'rgba'
gsettings set org.gnome.desktop.interface monospace-font-name 'Fira Code weight=453 11'
gsettings set org.gnome.shell.extensions.pop-cosmic clock-alignment 'RIGHT'
gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize-or-previews'
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 40
gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false
gsettings set org.gnome.shell.extensions.dash-to-dock multi-monitor true
gsettings set org.gnome.desktop.interface show-battery-percentage true
gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'suspend'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
gsettings set org.gnome.desktop.wm.keybindings activate-window-menu @as []
gsettings set org.gnome.desktop.wm.keybindings switch-input-source @as []
gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward @as []
gsettings set org.gnome.mutter experimental-features "['x11-randr-fractional-scaling']"
gsettings set org.gnome.settings-daemon.plugins.media-keys email "@as []"
gsettings set org.gnome.settings-daemon.plugins.media-keys search "@as []"
gsettings set org.gnome.shell.extensions.pop-shell activate-launcher "['<Super>slash', '<Super>space']"
sh -c 'cat >> ~/.config/mimeapps.list << EOF
x-scheme-handler/http=vivaldi-stable.desktop
x-scheme-handler/https=vivaldi-stable.desktop
text/html=vivaldi-stable.desktop
application/xhtml+xml=vivaldi-stable.desktop
x-scheme-handler/mailto=eu.betterbird.Betterbird.desktop
audio/x-vorbis+ogg=mpv.desktop
audio/aac=mpv.desktop
audio/x-aac=mpv.desktop
audio/vnd.dolby.heaac.1=mpv.desktop
audio/vnd.dolby.heaac.2=mpv.desktop
audio/x-aiff=mpv.desktop
audio/m4a=mpv.desktop
audio/x-m4a=mpv.desktop
audio/mp1=mpv.desktop
audio/x-mp1=mpv.desktop
audio/mp2=mpv.desktop
audio/x-mp2=mpv.desktop
audio/mp3=mpv.desktop
audio/x-mp3=mpv.desktop
audio/mpeg=mpv.desktop
audio/mpegurl=mpv.desktop
audio/x-mpegurl=mpv.desktop
audio/mpg=mpv.desktop
audio/x-mpg=mpv.desktop
audio/x-musepack=mpv.desktop
audio/ogg=mpv.desktop
audio/scpls=mpv.desktop
audio/x-scpls=mpv.desktop
audio/vnd.rn-realaudio=mpv.desktop
audio/wav=mpv.desktop
audio/x-pn-wav=mpv.desktop
audio/x-realaudio=mpv.desktop
audio/x-pn-realaudio=mpv.desktop
audio/x-ms-wma=mpv.desktop
audio/x-wav=mpv.desktop
audio/x-ms-asf=mpv.desktop
audio/x-matroska=mpv.desktop
audio/webm=mpv.desktop
audio/vorbis=mpv.desktop
audio/x-vorbis=mpv.desktop
audio/x-shorten=mpv.desktop
audio/x-ape=mpv.desktop
audio/x-wavpack=mpv.desktop
audio/x-tta=mpv.desktop
audio/AMR=mpv.desktop
audio/ac3=mpv.desktop
audio/eac3=mpv.desktop
audio/flac=mpv.desktop
audio/mp4=mpv.desktop
audio/x-pn-au=mpv.desktop
audio/3gpp=mpv.desktop
audio/3gpp2=mpv.desktop
audio/dv=mpv.desktop
audio/opus=mpv.desktop
audio/vnd.dts=mpv.desktop
audio/vnd.dts.hd=mpv.desktop
audio/x-adpcm=mpv.desktop
video/x-ogm+ogg=vlc.desktop
video/ogg=vlc.desktop
video/x-theora+ogg=vlc.desktop
video/x-theora=vlc.desktop
video/x-ms-asf=vlc.desktop
video/x-ms-asf-plugin=vlc.desktop
video/x-ms-asx=vlc.desktop
video/x-ms-wm=vlc.desktop
video/x-ms-wmv=vlc.desktop
video/x-ms-wmx=vlc.desktop
video/x-ms-wvx=vlc.desktop
video/x-msvideo=vlc.desktop
video/divx=vlc.desktop
video/msvideo=vlc.desktop
video/vnd.divx=vlc.desktop
video/x-avi=vlc.desktop
video/vnd.rn-realvideo=vlc.desktop
video/mp2t=vlc.desktop
video/mpeg=vlc.desktop
video/mpeg-system=vlc.desktop
video/x-mpeg=vlc.desktop
video/x-mpeg2=vlc.desktop
video/mp4=vlc.desktop
video/mp4v-es=vlc.desktop
video/x-m4v=vlc.desktop
video/quicktime=vlc.desktop
video/x-matroska=vlc.desktop
video/webm=vlc.desktop
video/3gp=vlc.desktop
video/3gpp=vlc.desktop
video/3gpp2=vlc.desktop
video/vnd.mpegurl=vlc.desktop
video/dv=vlc.desktop
video/x-anim=vlc.desktop
video/x-nsv=vlc.desktop
video/fli=vlc.desktop
video/flv=vlc.desktop
video/x-flc=vlc.desktop
video/x-fli=vlc.desktop
video/x-flv=vlc.desktop
EOF'
# Configure TLP
sudo sh -c 'cat > /etc/tlp.d/00-xps-profile.conf << EOF
CPU_SCALING_GOVERNOR_ON_AC=powersave
CPU_SCALING_GOVERNOR_ON_BAT=powersave
CPU_SCALING_MIN_FREQ_ON_AC=800000
CPU_SCALING_MAX_FREQ_ON_AC=4800000
CPU_SCALING_MIN_FREQ_ON_BAT=400000
CPU_SCALING_MAX_FREQ_ON_BAT=2400000
CPU_ENERGY_PERF_POLICY_ON_AC=performance
CPU_ENERGY_PERF_POLICY_ON_BAT=power
CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=1
PLATFORM_PROFILE_ON_AC=performance
PLATFORM_PROFILE_ON_BAT=low-power
EOF'
# Update tlp.conf settings
sudo sed -i "s/^#TLP_PERSISTENT_DEFAULT\b.*$/TLP_PERSISTENT_DEFAULT=0/" /etc/tlp.conf
sudo sed -i "s/^#TLP_DEFAULT_MODE\b.*$/TLP_DEFAULT_MODE=AC/" /etc/tlp.conf
sudo service tlp restart
echo
echo "Done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment