Forked from riccardopedrielli/ubuntu-workstation-setup.sh
Last active
March 8, 2023 14:13
-
-
Save knbknb/7bddbda3375e11b80c3180ad0efb78b4 to your computer and use it in GitHub Desktop.
Ubuntu workstation setup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -Eeu | |
trap 'STATUS=${?}; echo "${0}: Error on line ${LINENO}: ${BASH_COMMAND}"; exit ${STATUS}' ERR | |
trap 'rm -rf ${tempDir}' EXIT | |
readonly supportedUbuntuVersion="22.04" | |
readonly tempDir="/tmp/setup" | |
readonly devDir="${HOME}/dev" | |
readonly scriptsDir="${devDir}/scripts" | |
readonly binDir="${devDir}/bin" | |
export DEBIAN_FRONTEND="noninteractive" | |
export PATH="${PATH}:${scriptsDir}:${binDir}:${devDir}/tools/go/bin:${devDir}/tools/transcrypt:${HOME}/.binenv" | |
logInfo() | |
{ | |
echo -e "\e[0;36m${*}\e[0m" | |
} | |
logError() | |
{ | |
echo -e "\e[0;31m${*}\e[0m" | |
} | |
logWarning() | |
{ | |
echo -e "\e[0;33m${*}\e[0m" | |
} | |
getLatestGithubVersion() | |
{ | |
curl -fsSL "https://api.github.com/repos/${1}/releases/latest" | jq -r .tag_name | |
} | |
checkUbuntuVersion() | |
{ | |
local -r currentUbuntuVersion=$(lsb_release -rs) | |
if [ "${currentUbuntuVersion}" != "${supportedUbuntuVersion}" ]; then | |
logWarning "This script is supported only on Ubuntu ${supportedUbuntuVersion}" | |
logWarning "The Ubuntu version currently installed is ${currentUbuntuVersion}" | |
while true; do | |
read -rp "Continue anyway? [y/n]: " ANSWER | |
case ${ANSWER} in | |
[Yy]* ) | |
break | |
;; | |
[Nn]* ) | |
logError "Aborted" | |
exit 1 | |
;; | |
* ) | |
echo "Please answer yes or no." | |
;; | |
esac | |
done | |
fi | |
} | |
getSudoPrivileges() | |
{ | |
logInfo "Get sudo privileges" | |
sudo -v | |
} | |
createTemporaryDirectory() | |
{ | |
logInfo "Create temporary directory" | |
mkdir -p ${tempDir} | |
} | |
setKernelParameters() | |
{ | |
logInfo "Set kernel parameters" | |
sudo tee /etc/sysctl.d/90-custom.conf > /dev/null \ | |
<<- EOT | |
fs.inotify.max_user_watches=524288 | |
vm.max_map_count=262144 | |
vm.swappiness=5 | |
EOT | |
sudo sysctl -p /etc/sysctl.d/90-custom.conf | |
} | |
configureGrub() | |
{ | |
logInfo "Configure grub" | |
sudo tee /etc/default/grub.d/disable-ipv6.cfg > /dev/null \ | |
<<- EOT | |
GRUB_CMDLINE_LINUX="ipv6.disable=1" | |
EOT | |
sudo tee /etc/default/grub.d/timeout.cfg > /dev/null \ | |
<<- EOT | |
GRUB_TIMEOUT=10 | |
EOT | |
sudo update-grub | |
} | |
disableReports() | |
{ | |
logInfo "Disable system and error reports" | |
ubuntu-report -f send no | |
sudo sed -i \ | |
-e 's/^enabled=1$/enabled=0/' \ | |
/etc/default/apport | |
sudo systemctl stop apport.service | |
sudo systemctl disable apport.service | |
sudo systemctl mask apport.service | |
} | |
createDevelopmentDirectories() | |
{ | |
logInfo "Create devel-dirs" | |
mkdir -p "${devDir}" | |
mkdir -p "${devDir}/bin" | |
mkdir -p "${devDir}/data" | |
mkdir -p "${devDir}/src" | |
mkdir -p "${devDir}/tools" | |
} | |
removeUnwantedSnap() | |
{ | |
logInfo "Remove unwanted packages" | |
sudo systemctl disable snapd.service | |
sudo systemctl disable snapd.socket | |
sudo systemctl disable snapd.seeded.service | |
sudo snap remove --purge firefox | |
sudo snap remove --purge gtk-common-themes | |
sudo snap remove --purge gnome-3-38-2004 | |
sudo snap remove --purge snap-store | |
sudo apt autoremove --purge -y snapd | |
sudo apt autoremove --purge -y gedit | |
rm -rf "${HOME}/snap" | |
sudo rm -rf "/root/snap" | |
sudo rm -rf "/var/cache/snapd" | |
sudo tee /etc/apt/preferences.d/firefox-no-snap > /dev/null \ | |
<<- EOT | |
Package: firefox* | |
Pin: release o=Ubuntu* | |
Pin-Priority: -1 | |
EOT | |
sudo tee /etc/apt/preferences.d/no-snap > /dev/null \ | |
<<- EOT | |
Package: snapd | |
Pin: release a=* | |
Pin-Priority: -10 | |
EOT | |
} | |
configureApt() | |
{ | |
logInfo "Configure APT" | |
sudo sed -i \ | |
-e 's|http://.*\.archive.ubuntu.com|http://archive.ubuntu.com|g' \ | |
-e 's|http://security.ubuntu.com|http://archive.ubuntu.com|g' \ | |
/etc/apt/sources.list | |
sudo tee /etc/apt/apt.conf.d/10periodic > /dev/null \ | |
<<- EOT | |
APT::Periodic::Update-Package-Lists "0"; | |
APT::Periodic::Download-Upgradeable-Packages "0"; | |
APT::Periodic::AutocleanInterval "0"; | |
APT::Periodic::Unattended-Upgrade "0"; | |
EOT | |
sudo tee /etc/apt/apt.conf.d/20auto-upgrades > /dev/null \ | |
<<- EOT | |
APT::Periodic::Update-Package-Lists "0"; | |
APT::Periodic::Download-Upgradeable-Packages "0"; | |
APT::Periodic::AutocleanInterval "0"; | |
APT::Periodic::Unattended-Upgrade "0"; | |
EOT | |
} | |
updateSystem() | |
{ | |
logInfo "Update system" | |
sudo apt update | |
sudo apt dist-upgrade -y | |
sudo apt autoremove --purge -y | |
} | |
installAptPackages() | |
{ | |
logInfo "Install APT packages" | |
echo "virtualbox-ext-pack virtualbox-ext-pack/license select true" | sudo debconf-set-selections | |
sudo apt install -y \ | |
apt-transport-https \ | |
autokey-gtk \ | |
baobab \ | |
cheese \ | |
chrome-gnome-shell \ | |
cloud-image-utils \ | |
cloud-init \ | |
curl \ | |
dconf-editor \ | |
filezilla \ | |
flatpak \ | |
fonts-firacode \ | |
fwupd-unsigned \ | |
geary \ | |
gimp \ | |
gir1.2-gtop-2.0 \ | |
gnome-connections \ | |
gnome-shell-extension-manager \ | |
gnome-software \ | |
gnome-sushi \ | |
gnome-text-editor \ | |
gnome-tweaks \ | |
golang-docker-credential-helpers \ | |
gradle-completion \ | |
iperf3 \ | |
jq \ | |
libc++1 \ | |
libnvidia-compute-515 \ | |
lm-sensors \ | |
mediainfo \ | |
meld \ | |
neofetch \ | |
net-tools \ | |
nethogs \ | |
openssh-server \ | |
optipng \ | |
pavucontrol \ | |
piper \ | |
pulsemixer \ | |
python3-pip \ | |
python3-venv \ | |
shellcheck \ | |
silversearcher-ag \ | |
simple-scan \ | |
sysbench \ | |
tldr \ | |
tree \ | |
unrar \ | |
vim \ | |
virtualbox \ | |
virtualbox-ext-pack \ | |
xorriso \ | |
xosd-bin \ | |
xsel \ | |
yadm | |
# Dependencies explanation | |
# ------------------------ | |
# gir1.2-gtop-2.0 -> TopHat (shell extension) | |
# libc++1 -> discord | |
# libnvidia-compute-515 -> celluloid | |
} | |
installTranscrypt() | |
{ | |
logInfo "Install Transcrypt" | |
local -r transcryptVersion=$(getLatestGithubVersion elasticdog/transcrypt) | |
local -r toolDir="${devDir}/tools/transcrypt" | |
mkdir -p "${toolDir}" | |
curl -fsSL "https://raw.githubusercontent.com/elasticdog/transcrypt/${transcryptVersion}/transcrypt" \ | |
-o "${toolDir}/transcrypt" | |
chmod +x "${toolDir}/transcrypt" | |
} | |
install1Password() | |
{ | |
logInfo "Install 1Password" | |
curl -fsSL https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/1password.gpg | |
sudo tee /etc/apt/sources.list.d/1password.list > /dev/null \ | |
<<- EOT | |
deb [arch=amd64] https://downloads.1password.com/linux/debian/amd64 stable main | |
EOT | |
sudo mkdir -p /etc/debsig/policies/AC2D62742012EA22/ | |
curl -fsSL https://downloads.1password.com/linux/debian/debsig/1password.pol | sudo tee /etc/debsig/policies/AC2D62742012EA22/1password.pol | |
sudo mkdir -p /usr/share/debsig/keyrings/AC2D62742012EA22 | |
curl -fsSL https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --output /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg | |
sudo apt update | |
sudo apt install -y 1password | |
} | |
installDocker() | |
{ | |
logInfo "Install Docker" | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/docker.gpg | |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null \ | |
<<- EOT | |
deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | |
EOT | |
sudo apt update | |
sudo apt install -y docker-ce docker-compose-plugin golang-docker-credential-helpers | |
sudo adduser "${USER}" docker | |
sudo tee /etc/docker/daemon.json > /dev/null \ | |
<<- EOT | |
{ | |
"log-driver": "local" | |
} | |
EOT | |
mkdir -p "${HOME}/.docker" | |
tee "${HOME}/.docker/config.json" > /dev/null \ | |
<<- EOT | |
{ | |
"auths": { | |
"https://index.docker.io/v1/": {} | |
}, | |
"credsStore": "secretservice", | |
"credHelpers": { | |
"000000000000.dkr.ecr.eu-west-1.amazonaws.com": "ecr-login" | |
}, | |
"experimental": "enabled" | |
} | |
EOT | |
} | |
installGoogleChrome() | |
{ | |
logInfo "Install Google Chrome" | |
curl -fsSL "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" -o ${tempDir}/chrome.deb | |
sudo dpkg -i ${tempDir}/chrome.deb | |
} | |
installMySQLWorkbench() | |
{ | |
logInfo "Install MySQL Workbench" | |
sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/mysql.gpg \ | |
<<- EOT | |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
Version: SKS 1.1.6 | |
Comment: Hostname: pgp.mit.edu | |
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 | |
sTSKHe+QnnnoFmu4gnmDU31i | |
=Xqbo | |
-----END PGP PUBLIC KEY BLOCK----- | |
EOT | |
sudo tee /etc/apt/sources.list.d/mysql.list > /dev/null \ | |
<<- EOT | |
deb [arch=amd64] https://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-8.0 | |
deb [arch=amd64] https://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-tools | |
EOT | |
sudo apt update | |
sudo apt dist-upgrade -y | |
sudo apt install -y mysql-workbench-community | |
} | |
installSpotify() | |
{ | |
logInfo "Install Spotify" | |
curl -fsSL https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/spotify.gpg | |
sudo tee /etc/apt/sources.list.d/spotify.list > /dev/null \ | |
<<- EOT | |
deb http://repository.spotify.com stable non-free | |
EOT | |
sudo apt update | |
sudo apt install -y spotify-client | |
} | |
installVSCode() | |
{ | |
logInfo "Install Visual Studio Code" | |
curl -fsSL "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" -o ${tempDir}/vscode.deb | |
sudo dpkg -i ${tempDir}/vscode.deb | |
} | |
installAppImageLauncher() | |
{ | |
logInfo "Install AppImageLauncher" | |
sudo add-apt-repository -y ppa:appimagelauncher-team/stable | |
sudo apt update | |
sudo apt install -y appimagelauncher | |
tee "${HOME}/.config/appimagelauncher.cfg" > /dev/null \ | |
<<- EOT | |
[AppImageLauncher] | |
ask_to_move = true | |
# destination = ~/Applications | |
# enable_daemon = true | |
[appimagelauncherd] | |
# additional_directories_to_watch = ~/otherApplications:/even/more/applications | |
# monitor_mounted_filesystems = false | |
EOT | |
} | |
installCelluloid() | |
{ | |
logInfo "Install Celluloid" | |
sudo add-apt-repository -y ppa:xuzhen666/gnome-mpv | |
sudo apt update | |
sudo apt install -y celluloid | |
} | |
installFirefox() | |
{ | |
logInfo "Install Firefox" | |
sudo add-apt-repository -y ppa:mozillateam/ppa | |
sudo apt update | |
sudo apt install -y firefox | |
sudo tee /etc/apt/preferences.d/mozillateam-ppa > /dev/null \ | |
<<- EOT | |
Package: firefox* | |
Pin: release o=LP-PPA-mozillateam | |
Pin-Priority: 501 | |
EOT | |
} | |
installFirefoxDev() | |
{ | |
logInfo "Install Firefox Developer Edition" | |
curl -fsSL "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=linux64&lang=en-US" \ | |
-o "${tempDir}/firefox-dev.tar.bz2" | |
tar xjf ${tempDir}/firefox-dev.tar.bz2 -C "${devDir}/tools" | |
tee "${HOME}/.local/share/applications/firefox-developer-edition.desktop" > /dev/null \ | |
<<- EOT | |
[Desktop Entry] | |
Version=1.0 | |
Type=Application | |
Name=Firefox Developer Edition | |
Icon=${devDir}/tools/firefox/browser/chrome/icons/default/default128.png | |
TryExec=${devDir}/tools/firefox/firefox-bin | |
Exec=${devDir}/tools/firefox/firefox-bin %u | |
Comment=Firefox Aurora with Developer tools | |
StartupWMClass=firefox-aurora | |
GenericName=Web Browser | |
Keywords=Internet;WWW;Browser;Web;Explorer | |
Categories=GNOME;GTK;Network;WebBrowser; | |
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; | |
Actions=new-window;new-private-window; | |
Terminal=false | |
X-MultipleArgs=false | |
StartupNotify=true | |
[Desktop Action new-window] | |
Name=Open a New Window | |
Exec=${devDir}/tools/firefox/firefox-bin -new-window | |
[Desktop Action new-private-window] | |
Name=Open a New Private Window | |
Exec=${devDir}/tools/firefox/firefox-bin -private-window | |
EOT | |
} | |
installGit() | |
{ | |
logInfo "Install Git" | |
sudo add-apt-repository -y ppa:git-core/ppa | |
sudo apt update | |
sudo apt install -y git | |
sudo apt install -y libsecret-1-dev | |
sudo make --directory=/usr/share/doc/git/contrib/credential/libsecret | |
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret | |
} | |
installWakeMeOps() | |
{ | |
logInfo "Install WakeMeOps" | |
curl -fsSL https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository | sudo bash | |
sudo apt update | |
sudo apt install -y \ | |
bat \ | |
curlie \ | |
datree \ | |
exa \ | |
fd \ | |
ghorg \ | |
glab \ | |
gping \ | |
helm \ | |
hostctl \ | |
hugo \ | |
infracost \ | |
k3d \ | |
krew \ | |
kube-linter \ | |
kubeaudit \ | |
kubectl \ | |
lens \ | |
procs \ | |
telepresence \ | |
terraform \ | |
terraform-docs \ | |
terrascan \ | |
tflint \ | |
yq | |
} | |
installBinEnv() | |
{ | |
logInfo "Install BinEnv" | |
local -r binenvVersion=$(getLatestGithubVersion devops-works/binenv) | |
curl -fsSL "https://github.com/devops-works/binenv/releases/download/${binenvVersion}/binenv_linux_amd64" -o ${tempDir}/binenv | |
chmod +x ${tempDir}/binenv | |
${tempDir}/binenv update | |
${tempDir}/binenv install binenv | |
# binenv install broot | |
# binenv install ctop | |
# binenv install driftctl | |
# binenv install duf | |
# binenv install gdu | |
# binenv install gitui | |
# binenv install gocloc | |
# binenv install gokart | |
# binenv install grype | |
# binenv install k6 | |
# binenv install kube-beacon | |
# binenv install kube-bench | |
# binenv install kubecolor | |
# binenv install kubent | |
# binenv install kubescape | |
# binenv install kubestr | |
# binenv install lsd | |
# binenv install micro | |
# binenv install sloop | |
# binenv install tfsec | |
# binenv install tlder | |
# binenv install tlsexp | |
# binenv install updatecli | |
binenv install vagrant | |
} | |
installFlatpakPackages() | |
{ | |
logInfo "Install Flatpak packages" | |
sudo apt install -y flatpak | |
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo | |
flatpak install --or-update -y flathub \ | |
com.getpostman.Postman \ | |
org.gnome.design.IconLibrary | |
# com.belmoussaoui.Obfuscate \ | |
# com.github.tchx84.Flatseal \ | |
# com.gitlab.newsflash \ | |
# com.slack.Slack \ | |
# com.todoist.Todoist \ | |
# fr.romainvigier.MetadataCleaner \ | |
# org.gabmus.whatip \ | |
# org.gnome.Firmware \ | |
# org.telegram.desktop \ | |
# re.sonny.Commit \ | |
# re.sonny.Junction | |
} | |
installUtilityScriptsPedrelli() | |
{ | |
logInfo "Install scripts" | |
if [ -e "${scriptsDir}" ]; then | |
logWarning "The directory \"${scriptsDir}\" already exists and will not be overwritten" | |
else | |
git clone https://github.com/riccardopedrielli/scripts.git "${scriptsDir}" | |
fi | |
} | |
installNVM() | |
{ | |
logInfo "Install nvm, node version manager" | |
local -r nvmVersion=$(getLatestGithubVersion nvm-sh/nvm) | |
curl -fsSL "https://raw.githubusercontent.com/nvm-sh/nvm/${nvmVersion}/install.sh" | bash | |
# shellcheck disable=SC1091 | |
source "${HOME}/.nvm/nvm.sh" | |
nvm install node | |
install-npm-pkgs | |
} | |
installSdkMan() | |
{ | |
logInfo "Install sdkman, a tool for managing parallel versions of multiple (Java) Software Development Kits " | |
curl -s "https://get.sdkman.io" | bash | |
bash -c 'source ~/.sdkman/bin/sdkman-init.sh && sdk install java && sdk install gradle && sdk install micronaut' | |
} | |
installDebPackages() | |
{ | |
logInfo "Install deb packages" | |
update-local-deb | |
} | |
installDevTools() | |
{ | |
logInfo "Install dev tools" | |
update-tools | |
} | |
installJetBrainsToolbox() | |
{ | |
logInfo "Install JetBrains Toolbox" | |
local -r toolboxUrl=$(curl -fsSL 'https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release' | jq -r '.TBA[0].downloads.linux.link') | |
curl -fsSL "${toolboxUrl}" -o ${tempDir}/jetbrains-toolbox.tar.gz | |
tar xzf ${tempDir}/jetbrains-toolbox.tar.gz -C ${tempDir} | |
mv ${tempDir}/jetbrains-toolbox-*/jetbrains-toolbox ${tempDir} | |
${tempDir}/jetbrains-toolbox | |
rm -rf ${tempDir}/jetbrains-toolbox* | |
} | |
installAwsCli() | |
{ | |
logInfo "Install aws cli" | |
update-aws-cli | |
local -r credHelperVersion=$(curl -fsSL "https://api.github.com/repos/awslabs/amazon-ecr-credential-helper/releases/latest" | jq -r .tag_name | sed 's/v//') | |
local -r credHelperUrl="https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/${credHelperVersion}/linux-amd64/docker-credential-ecr-login" | |
curl -fsSL "${credHelperUrl}" -o "${binDir}/docker-credential-ecr-login" | |
chmod +x "${binDir}/docker-credential-ecr-login" | |
} | |
generateBashCompletions() | |
{ | |
logInfo "Generate bash completions" | |
update-completion | |
} | |
setupBash() | |
{ | |
logInfo "Set up Bash" | |
local -r toolDir="${devDir}/tools/bash-git-prompt" | |
if [ -e "${toolDir}" ]; then | |
logWarning "The directory \"${toolDir}\" already exists and will not be overwritten" | |
else | |
git clone https://github.com/magicmonty/bash-git-prompt.git "${toolDir}" | |
fi | |
tee "${HOME}/.bash_aliases" > /dev/null \ | |
<<- EOT | |
[ -s "\${HOME}/dev/data/bash/custom.sh" ] && source "\${HOME}/dev/data/bash/custom.sh" | |
EOT | |
} | |
setupSensors() | |
{ | |
logInfo "Set up sensors" | |
sudo sensors-detect <<< "YES" | |
} | |
setupDatetime() | |
{ | |
logInfo "Set up date & time" | |
timedatectl set-local-rtc false | |
timedatectl set-ntp true | |
local -r gnomeSettings=" | |
[/] | |
org/gtk/settings/file-chooser/clock-format='24h' | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
setupBackground() | |
{ | |
logInfo "Set up background" | |
local -r backgroundsDir="${HOME}/.local/share/backgrounds" | |
mkdir -p "${backgroundsDir}" | |
curl -fsSL https://i.imgur.com/PkHGuw2.jpg -o "${backgroundsDir}/background.jpg" | |
local -r gnomeSettings=" | |
[/] | |
org/gnome/desktop/background/picture-uri-dark='file://${backgroundsDir}/background.jpg' | |
org/gnome/desktop/background/picture-uri='file://${backgroundsDir}/background.jpg' | |
org/gnome/desktop/background/primary-color='#000000' | |
org/gnome/desktop/background/secondary-color='#000000' | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
updateGnomeSettings() | |
{ | |
logInfo "Update Gnome settings" | |
local -r gnomeSettings=" | |
[/] | |
ca/desrt/dconf-editor/show-warning=false | |
org/gnome/Characters/recent-characters=['È', 'è', 'à', 'ì', 'ò', 'ù', '€', '°', ' '] | |
org/gnome/TextEditor/highlight-current-line=true | |
org/gnome/TextEditor/indent-style='space' | |
org/gnome/TextEditor/restore-session=false | |
org/gnome/TextEditor/right-margin-position=uint32 120 | |
org/gnome/TextEditor/show-line-numbers=true | |
org/gnome/TextEditor/show-map=true | |
org/gnome/TextEditor/spellcheck=false | |
org/gnome/TextEditor/style-scheme='Adwaita-dark' | |
org/gnome/TextEditor/tab-width=uint32 4 | |
org/gnome/TextEditor/wrap-text=false | |
org/gnome/desktop/calendar/show-weekdate=true | |
org/gnome/desktop/input-sources/xkb-options=['compose:menu'] | |
org/gnome/desktop/interface/clock-format='24h' | |
org/gnome/desktop/interface/clock-show-weekday=true | |
org/gnome/desktop/interface/color-scheme='prefer-dark' | |
org/gnome/desktop/interface/cursor-theme='DMZ-White' | |
org/gnome/desktop/interface/document-font-name='Sans 10' | |
org/gnome/desktop/interface/font-name='Ubuntu 10' | |
org/gnome/desktop/interface/gtk-theme='Yaru-dark' | |
org/gnome/desktop/interface/icon-theme='Yaru' | |
org/gnome/desktop/interface/monospace-font-name='Fira Code weight=453 10' | |
org/gnome/desktop/interface/show-battery-percentage=true | |
org/gnome/desktop/media-handling/autorun-never=true | |
org/gnome/desktop/media-handling/autorun-x-content-start-app=['x-content/ostree-repository'] | |
org/gnome/desktop/notifications/show-in-lock-screen=false | |
org/gnome/desktop/peripherals/mouse/accel-profile='flat' | |
org/gnome/desktop/peripherals/mouse/speed=0.0 | |
org/gnome/desktop/peripherals/touchpad/click-method='fingers' | |
org/gnome/desktop/privacy/old-files-age=uint32 1 | |
org/gnome/desktop/privacy/recent-files-max-age=1 | |
org/gnome/desktop/privacy/remember-recent-files=false | |
org/gnome/desktop/privacy/remove-old-temp-files=true | |
org/gnome/desktop/privacy/remove-old-trash-files=true | |
org/gnome/desktop/screensaver/lock-delay=uint32 60 | |
org/gnome/desktop/search-providers/disabled=['org.gnome.Characters.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.Terminal.desktop'] | |
org/gnome/desktop/session/idle-delay=uint32 900 | |
org/gnome/desktop/wm/keybindings/move-to-center=['<Super><Alt>C'] | |
org/gnome/desktop/wm/preferences/titlebar-font='Ubuntu Bold 10' | |
org/gnome/meld/filename-filters=[('Backups', true, '#*# .#* ~* *~ *.{orig,bak,swp}'), ('OS-specific metadata', true, '.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db Desktop.ini'), ('Version Control', true, '_MTN .bzr .svn .svn .hg .fslckout _FOSSIL_ .fos CVS _darcs .git .svn .osc'), ('Binaries', true, '*.{pyc,a,obj,o,so,la,lib,dll,exe}'), ('Media', false, '*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}'), ('Dev', true, '.gradle .cache .node-gyp .terraform .terraform.lock.hcl bower_components node_modules build')] | |
org/gnome/meld/folder-status-filters=['new', 'modified'] | |
org/gnome/meld/highlight-current-line=true | |
org/gnome/meld/highlight-syntax=true | |
org/gnome/meld/indent-width=4 | |
org/gnome/meld/insert-spaces-instead-of-tabs=true | |
org/gnome/meld/show-line-numbers=true | |
org/gnome/meld/style-scheme='Yaru-dark' | |
org/gnome/nautilus/list-view/default-visible-columns=['name', 'size', 'type', 'date_modified'] | |
org/gnome/nautilus/list-view/default-zoom-level='small' | |
org/gnome/nautilus/list-view/use-tree-view=true | |
org/gnome/nautilus/preferences/default-folder-viewer='list-view' | |
org/gnome/nautilus/preferences/recursive-search='always' | |
org/gnome/nautilus/preferences/show-delete-permanently=true | |
org/gnome/nautilus/preferences/show-directory-item-counts='never' | |
org/gnome/nautilus/preferences/show-image-thumbnails='never' | |
org/gnome/nautilus/window-state/sidebar-width=200 | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding='<Super>x' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command='gnome-session-quit --power-off' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name='Shutdown' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/binding='<Shift><Super>x' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/command='gnome-session-quit --reboot' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/name='Reboot' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/binding='<Alt><Super>x' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/command='systemctl suspend' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/name='Suspend' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/binding='<Primary><Shift>Escape' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/command='gnome-system-monitor' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/name='System Monitor' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/'] | |
org/gnome/settings-daemon/plugins/power/ambient-enabled=false | |
org/gnome/settings-daemon/plugins/power/power-button-action='interactive' | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-timeout=1200 | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-type='suspend' | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-battery-timeout=1200 | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-battery-type='suspend' | |
org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size=40 | |
org/gnome/shell/extensions/dash-to-dock/dock-position='BOTTOM' | |
org/gnome/shell/extensions/dash-to-dock/multi-monitor=true | |
org/gnome/shell/extensions/dash-to-dock/show-mounts-network=false | |
org/gnome/shell/extensions/dash-to-dock/show-mounts-only-mounted=true | |
org/gnome/shell/favorite-apps=['org.gnome.Nautilus.desktop', 'firefox.desktop', 'firefox-developer-edition.desktop', 'google-chrome.desktop', 'org.gnome.Terminal.desktop', 'code.desktop', 'syntevo-smartgit.desktop', 'gitkraken.desktop', 'org.gnome.meld.desktop', 'lens.desktop', 'com.todoist.Todoist.desktop', 'filezilla.desktop', 'com.getpostman.Postman.desktop', 'com.slack.Slack.desktop', 'org.telegram.desktop.desktop', 'discord-ptb.desktop', 'mysql-workbench.desktop', 'virtualbox.desktop', 'notable.desktop', 'org.gnome.TextEditor.desktop', 'com.gitlab.newsflash.desktop', 'spotify.desktop', '1password.desktop'] | |
org/gnome/software/download-updates-notify=false | |
org/gnome/software/download-updates=false | |
org/gnome/system/location/enabled=true | |
org/gnome/terminal/legacy/keybindings/close-tab='<Primary>w' | |
org/gnome/terminal/legacy/keybindings/close-window='disabled' | |
org/gnome/terminal/legacy/keybindings/new-tab='<Primary>t' | |
org/gnome/terminal/legacy/keybindings/preferences='<Primary>comma' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/audible-bell=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/background-color='rgb(21,27,31)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/bold-color-same-as-fg=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/bold-color='rgb(245,245,245)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/bold-is-bright=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cell-height-scale=1.1000000000000001 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cell-width-scale=1.0 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-background-color='rgb(251,0,232)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-blink-mode='off' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-foreground-color='rgb(255,229,253)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/default-size-columns=160 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/default-size-rows=40 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/font='Fira Code weight=453 10' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/foreground-color='rgb(240,240,240)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/highlight-background-color='rgb(193,221,255)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/highlight-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/highlight-foreground-color='rgb(0,0,0)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/palette=['rgb(0,0,0)', 'rgb(255,72,38)', 'rgb(65,167,50)', 'rgb(243,225,31)', 'rgb(82,137,249)', 'rgb(165,69,183)', 'rgb(65,185,211)', 'rgb(170,170,170)', 'rgb(126,126,126)', 'rgb(226,97,92)', 'rgb(115,205,114)', 'rgb(255,246,70)', 'rgb(98,174,255)', 'rgb(185,87,202)', 'rgb(69,195,221)', 'rgb(255,255,255)'] | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/scrollbar-policy='never' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-system-font=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-theme-colors=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-theme-transparency=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-transparent-background=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/visible-name='Default' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/audible-bell=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/background-color='rgb(21,27,31)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/bold-color-same-as-fg=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/bold-color='rgb(245,245,245)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/bold-is-bright=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cell-height-scale=1.1000000000000001 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cell-width-scale=1.0 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-background-color='rgb(251,0,232)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-blink-mode='off' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-foreground-color='rgb(255,229,253)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/default-size-columns=96 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/default-size-rows=24 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/font='Fira Code weight=453 16' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/foreground-color='rgb(240,240,240)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/highlight-background-color='rgb(193,221,255)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/highlight-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/highlight-foreground-color='rgb(0,0,0)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/palette=['rgb(0,0,0)', 'rgb(255,72,38)', 'rgb(65,167,50)', 'rgb(243,225,31)', 'rgb(82,137,249)', 'rgb(165,69,183)', 'rgb(65,185,211)', 'rgb(170,170,170)', 'rgb(126,126,126)', 'rgb(226,97,92)', 'rgb(115,205,114)', 'rgb(255,246,70)', 'rgb(98,174,255)', 'rgb(185,87,202)', 'rgb(69,195,221)', 'rgb(255,255,255)'] | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/scrollbar-policy='never' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-system-font=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-theme-colors=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-theme-transparency=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-transparent-background=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/visible-name='Presentation' | |
org/gnome/terminal/legacy/profiles:/default='107d05fc-a7be-4eb3-aa9e-77061af82199' | |
org/gnome/terminal/legacy/profiles:/list=['107d05fc-a7be-4eb3-aa9e-77061af82199', '90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa'] | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
installGnomeShellExtensions() | |
{ | |
logInfo "Install Gnome Shell Extensions" | |
gnome-extensions disable [email protected] | |
gnome-extensions enable [email protected] | |
gnome-extensions enable [email protected] | |
curl -fsSL https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/gnomeshell-extension-manage -o ${tempDir}/gnomeshell-extension-manage | |
chmod +x ${tempDir}/gnomeshell-extension-manage | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 28 # gTile | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 36 # Lock Keys | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 277 # Impatience | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 841 # Freon | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 906 # Sound Input & Output Device Chooser | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 5219 # TopHat | |
local -r gnomeSettings=" | |
[/] | |
org/gnome/shell/extensions/freon/hot-sensors=['__average__', '__max__'] | |
org/gnome/shell/extensions/freon/show-voltage=false | |
org/gnome/shell/extensions/gtile/global-presets=false | |
org/gnome/shell/extensions/gtile/grid-sizes='6x6' | |
org/gnome/shell/extensions/gtile/moveresize-enabled=false | |
org/gnome/shell/extensions/lockkeys/notification-preferences='osd' | |
org/gnome/shell/extensions/lockkeys/style='none' | |
org/gnome/shell/extensions/net/gfxmonk/impatience/speed-factor=0.75 | |
org/gnome/shell/extensions/sound-output-device-chooser/cannot-activate-hidden-device=false | |
org/gnome/shell/extensions/sound-output-device-chooser/expand-volume-menu=false | |
org/gnome/shell/extensions/sound-output-device-chooser/icon-theme='none' | |
org/gnome/shell/extensions/sound-output-device-chooser/show-profiles=false | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
configureSshServer() | |
{ | |
logInfo "Configure SSH server" | |
sudo tee /etc/ssh/sshd_config.d/99-custom.conf > /dev/null \ | |
<<- EOT | |
Port 22013 | |
EOT | |
sudo systemctl restart sshd.service | |
} | |
turnOffBluetooth() | |
{ | |
logInfo "Turn off Bluetooth" | |
rfkill block bluetooth | |
} | |
printEndMessage() | |
{ | |
logInfo "Done" | |
tee "${HOME}/TODO.txt" > /dev/null \ | |
<<- EOT | |
- Delete the setup.sh script | |
- Open Junction -> Set Junction os default for Web | |
- Open Settings -> Privacy -> Diagnostic -> Send error reports to Canonical -> Never | |
- Open Settings -> Default Applications -> Set Music and Video to Celluloid | |
- Open Language Support -> If prompted for missing languages, click Install | |
-> Language -> Apply System-Wide | |
-> Regional Formats -> Apply System-Wide | |
- Load configs with YADM | |
- Install more apps as you need them | |
- Delete this file | |
EOT | |
echo " | |
The setup has been completed successfully. | |
Some changes require a restart to take effect. | |
After the restart, read the TODO.txt file in your home directory for the manual steps to complete the setup. | |
" | |
} | |
main() | |
{ | |
checkUbuntuVersion | |
getSudoPrivileges | |
createTemporaryDirectory | |
setKernelParameters | |
configureGrub | |
disableReports | |
createDevelopmentDirectories | |
# removeUnwantedSnap | |
configureApt | |
updateSystem | |
installAptPackages | |
# installTranscrypt | |
# install1Password | |
# installDocker | |
installGoogleChrome | |
# installMySQLWorkbench | |
# installSpotify | |
installVSCode | |
# installAppImageLauncher | |
# installCelluloid | |
# installFirefox | |
# installFirefoxDev | |
installGit | |
# installWakeMeOps | |
installBinEnv | |
# installFlatpakPackages | |
installUtilityScriptsPedrelli | |
installNVM | |
# installSdkMan | |
installDebPackages | |
installDevTools | |
# installJetBrainsToolbox | |
# installAwsCli | |
generateBashCompletions | |
setupBash | |
setupSensors | |
setupDatetime | |
setupBackground | |
updateGnomeSettings | |
installGnomeShellExtensions | |
configureSshServer | |
turnOffBluetooth | |
printEndMessage | |
} | |
main |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -Eeu | |
trap 'STATUS=${?}; echo "${0}: Error on line ${LINENO}: ${BASH_COMMAND}"; exit ${STATUS}' ERR | |
trap 'rm -rf ${tempDir}' EXIT | |
readonly supportedUbuntuVersion="22.04" | |
readonly tempDir="/tmp/setup" | |
readonly devDir="${HOME}/dev" | |
readonly scriptsDir="${devDir}/scripts" | |
readonly binDir="${devDir}/bin" | |
export DEBIAN_FRONTEND="noninteractive" | |
export PATH="${PATH}:${scriptsDir}:${binDir}:${devDir}/tools/go/bin:${devDir}/tools/transcrypt:${HOME}/.binenv" | |
logInfo() | |
{ | |
echo -e "\e[0;36m${*}\e[0m" | |
} | |
logError() | |
{ | |
echo -e "\e[0;31m${*}\e[0m" | |
} | |
logWarning() | |
{ | |
echo -e "\e[0;33m${*}\e[0m" | |
} | |
getLatestGithubVersion() | |
{ | |
curl -fsSL "https://api.github.com/repos/${1}/releases/latest" | jq -r .tag_name | |
} | |
checkUbuntuVersion() | |
{ | |
local -r currentUbuntuVersion=$(lsb_release -rs) | |
if [ "${currentUbuntuVersion}" != "${supportedUbuntuVersion}" ]; then | |
logWarning "This script is supported only on Ubuntu ${supportedUbuntuVersion}" | |
logWarning "The Ubuntu version currently installed is ${currentUbuntuVersion}" | |
while true; do | |
read -rp "Continue anyway? [y/n]: " ANSWER | |
case ${ANSWER} in | |
[Yy]* ) | |
break | |
;; | |
[Nn]* ) | |
logError "Aborted" | |
exit 1 | |
;; | |
* ) | |
echo "Please answer yes or no." | |
;; | |
esac | |
done | |
fi | |
} | |
getSudoPrivileges() | |
{ | |
logInfo "Get sudo privileges" | |
sudo -v | |
} | |
createTemporaryDirectory() | |
{ | |
logInfo "Create temporary directory" | |
mkdir -p ${tempDir} | |
} | |
setKernelParameters() | |
{ | |
logInfo "Set kernel parameters" | |
sudo tee /etc/sysctl.d/90-custom.conf > /dev/null \ | |
<<- EOT | |
fs.inotify.max_user_watches=524288 | |
vm.max_map_count=262144 | |
vm.swappiness=5 | |
EOT | |
sudo sysctl -p /etc/sysctl.d/90-custom.conf | |
} | |
configureGrub() | |
{ | |
logInfo "Configure grub" | |
sudo tee /etc/default/grub.d/disable-ipv6.cfg > /dev/null \ | |
<<- EOT | |
GRUB_CMDLINE_LINUX="ipv6.disable=1" | |
EOT | |
sudo tee /etc/default/grub.d/timeout.cfg > /dev/null \ | |
<<- EOT | |
GRUB_TIMEOUT=10 | |
EOT | |
sudo update-grub | |
} | |
disableReports() | |
{ | |
logInfo "Disable system and error reports" | |
ubuntu-report -f send no | |
sudo sed -i \ | |
-e 's/^enabled=1$/enabled=0/' \ | |
/etc/default/apport | |
sudo systemctl stop apport.service | |
sudo systemctl disable apport.service | |
sudo systemctl mask apport.service | |
} | |
createDevStructure() | |
{ | |
logInfo "Create dev structure" | |
mkdir -p "${devDir}" | |
mkdir -p "${devDir}/bin" | |
mkdir -p "${devDir}/data" | |
mkdir -p "${devDir}/src" | |
mkdir -p "${devDir}/tools" | |
} | |
removeUnwantedPackages() | |
{ | |
logInfo "Remove unwanted packages" | |
sudo systemctl disable snapd.service | |
sudo systemctl disable snapd.socket | |
sudo systemctl disable snapd.seeded.service | |
sudo snap remove --purge firefox | |
sudo snap remove --purge gtk-common-themes | |
sudo snap remove --purge gnome-3-38-2004 | |
sudo snap remove --purge snap-store | |
sudo apt autoremove --purge -y snapd | |
sudo apt autoremove --purge -y gedit | |
rm -rf "${HOME}/snap" | |
sudo rm -rf "/root/snap" | |
sudo rm -rf "/var/cache/snapd" | |
sudo tee /etc/apt/preferences.d/firefox-no-snap > /dev/null \ | |
<<- EOT | |
Package: firefox* | |
Pin: release o=Ubuntu* | |
Pin-Priority: -1 | |
EOT | |
sudo tee /etc/apt/preferences.d/no-snap > /dev/null \ | |
<<- EOT | |
Package: snapd | |
Pin: release a=* | |
Pin-Priority: -10 | |
EOT | |
} | |
configureApt() | |
{ | |
logInfo "Configure APT" | |
sudo sed -i \ | |
-e 's|http://.*\.archive.ubuntu.com|http://archive.ubuntu.com|g' \ | |
-e 's|http://security.ubuntu.com|http://archive.ubuntu.com|g' \ | |
/etc/apt/sources.list | |
sudo tee /etc/apt/apt.conf.d/10periodic > /dev/null \ | |
<<- EOT | |
APT::Periodic::Update-Package-Lists "0"; | |
APT::Periodic::Download-Upgradeable-Packages "0"; | |
APT::Periodic::AutocleanInterval "0"; | |
APT::Periodic::Unattended-Upgrade "0"; | |
EOT | |
sudo tee /etc/apt/apt.conf.d/20auto-upgrades > /dev/null \ | |
<<- EOT | |
APT::Periodic::Update-Package-Lists "0"; | |
APT::Periodic::Download-Upgradeable-Packages "0"; | |
APT::Periodic::AutocleanInterval "0"; | |
APT::Periodic::Unattended-Upgrade "0"; | |
EOT | |
} | |
updateSystem() | |
{ | |
logInfo "Update system" | |
sudo apt update | |
sudo apt dist-upgrade -y | |
sudo apt autoremove --purge -y | |
} | |
installAptPackages() | |
{ | |
logInfo "Install APT packages" | |
echo "virtualbox-ext-pack virtualbox-ext-pack/license select true" | sudo debconf-set-selections | |
sudo apt install -y \ | |
apt-transport-https \ | |
autokey-gtk \ | |
baobab \ | |
cheese \ | |
chrome-gnome-shell \ | |
cloud-image-utils \ | |
cloud-init \ | |
curl \ | |
dconf-editor \ | |
filezilla \ | |
flatpak \ | |
fonts-firacode \ | |
fwupd-unsigned \ | |
geary \ | |
gimp \ | |
gir1.2-gtop-2.0 \ | |
gnome-connections \ | |
gnome-shell-extension-manager \ | |
gnome-software \ | |
gnome-sushi \ | |
gnome-text-editor \ | |
gnome-tweaks \ | |
golang-docker-credential-helpers \ | |
gradle-completion \ | |
iperf3 \ | |
jq \ | |
libc++1 \ | |
libnvidia-compute-515 \ | |
lm-sensors \ | |
mediainfo \ | |
meld \ | |
neofetch \ | |
net-tools \ | |
nethogs \ | |
openssh-server \ | |
optipng \ | |
pavucontrol \ | |
piper \ | |
pulsemixer \ | |
python3-pip \ | |
python3-venv \ | |
shellcheck \ | |
silversearcher-ag \ | |
simple-scan \ | |
sysbench \ | |
tldr \ | |
tree \ | |
unrar \ | |
vim \ | |
virtualbox \ | |
virtualbox-ext-pack \ | |
xorriso \ | |
xosd-bin \ | |
xsel \ | |
yadm | |
# Dependencies explanation | |
# ------------------------ | |
# gir1.2-gtop-2.0 -> TopHat (shell extension) | |
# libc++1 -> discord | |
# libnvidia-compute-515 -> celluloid | |
} | |
installTranscrypt() | |
{ | |
logInfo "Install Transcrypt" | |
local -r transcryptVersion=$(getLatestGithubVersion elasticdog/transcrypt) | |
local -r toolDir="${devDir}/tools/transcrypt" | |
mkdir -p "${toolDir}" | |
curl -fsSL "https://raw.githubusercontent.com/elasticdog/transcrypt/${transcryptVersion}/transcrypt" \ | |
-o "${toolDir}/transcrypt" | |
chmod +x "${toolDir}/transcrypt" | |
} | |
install1Password() | |
{ | |
logInfo "Install 1Password" | |
curl -fsSL https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/1password.gpg | |
sudo tee /etc/apt/sources.list.d/1password.list > /dev/null \ | |
<<- EOT | |
deb [arch=amd64] https://downloads.1password.com/linux/debian/amd64 stable main | |
EOT | |
sudo mkdir -p /etc/debsig/policies/AC2D62742012EA22/ | |
curl -fsSL https://downloads.1password.com/linux/debian/debsig/1password.pol | sudo tee /etc/debsig/policies/AC2D62742012EA22/1password.pol | |
sudo mkdir -p /usr/share/debsig/keyrings/AC2D62742012EA22 | |
curl -fsSL https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --output /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg | |
sudo apt update | |
sudo apt install -y 1password | |
} | |
installDocker() | |
{ | |
logInfo "Install Docker" | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/docker.gpg | |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null \ | |
<<- EOT | |
deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | |
EOT | |
sudo apt update | |
sudo apt install -y docker-ce docker-compose-plugin golang-docker-credential-helpers | |
sudo adduser "${USER}" docker | |
sudo tee /etc/docker/daemon.json > /dev/null \ | |
<<- EOT | |
{ | |
"log-driver": "local" | |
} | |
EOT | |
mkdir -p "${HOME}/.docker" | |
tee "${HOME}/.docker/config.json" > /dev/null \ | |
<<- EOT | |
{ | |
"auths": { | |
"https://index.docker.io/v1/": {} | |
}, | |
"credsStore": "secretservice", | |
"credHelpers": { | |
"000000000000.dkr.ecr.eu-west-1.amazonaws.com": "ecr-login" | |
}, | |
"experimental": "enabled" | |
} | |
EOT | |
} | |
installGoogleChrome() | |
{ | |
logInfo "Install Google Chrome" | |
curl -fsSL "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" -o ${tempDir}/chrome.deb | |
sudo dpkg -i ${tempDir}/chrome.deb | |
} | |
installMySQLWorkbench() | |
{ | |
logInfo "Install MySQL Workbench" | |
sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/mysql.gpg \ | |
<<- EOT | |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
Version: SKS 1.1.6 | |
Comment: Hostname: pgp.mit.edu | |
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 | |
sTSKHe+QnnnoFmu4gnmDU31i | |
=Xqbo | |
-----END PGP PUBLIC KEY BLOCK----- | |
EOT | |
sudo tee /etc/apt/sources.list.d/mysql.list > /dev/null \ | |
<<- EOT | |
deb [arch=amd64] https://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-8.0 | |
deb [arch=amd64] https://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-tools | |
EOT | |
sudo apt update | |
sudo apt dist-upgrade -y | |
sudo apt install -y mysql-workbench-community | |
} | |
installSpotify() | |
{ | |
logInfo "Install Spotify" | |
curl -fsSL https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/spotify.gpg | |
sudo tee /etc/apt/sources.list.d/spotify.list > /dev/null \ | |
<<- EOT | |
deb http://repository.spotify.com stable non-free | |
EOT | |
sudo apt update | |
sudo apt install -y spotify-client | |
} | |
installVSCode() | |
{ | |
logInfo "Install Visual Studio Code" | |
curl -fsSL "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" -o ${tempDir}/vscode.deb | |
sudo dpkg -i ${tempDir}/vscode.deb | |
} | |
installAppImageLauncher() | |
{ | |
logInfo "Install AppImageLauncher" | |
sudo add-apt-repository -y ppa:appimagelauncher-team/stable | |
sudo apt update | |
sudo apt install -y appimagelauncher | |
tee "${HOME}/.config/appimagelauncher.cfg" > /dev/null \ | |
<<- EOT | |
[AppImageLauncher] | |
ask_to_move = true | |
# destination = ~/Applications | |
# enable_daemon = true | |
[appimagelauncherd] | |
# additional_directories_to_watch = ~/otherApplications:/even/more/applications | |
# monitor_mounted_filesystems = false | |
EOT | |
} | |
installCelluloid() | |
{ | |
logInfo "Install Celluloid" | |
sudo add-apt-repository -y ppa:xuzhen666/gnome-mpv | |
sudo apt update | |
sudo apt install -y celluloid | |
} | |
installFirefox() | |
{ | |
logInfo "Install Firefox" | |
sudo add-apt-repository -y ppa:mozillateam/ppa | |
sudo apt update | |
sudo apt install -y firefox | |
sudo tee /etc/apt/preferences.d/mozillateam-ppa > /dev/null \ | |
<<- EOT | |
Package: firefox* | |
Pin: release o=LP-PPA-mozillateam | |
Pin-Priority: 501 | |
EOT | |
} | |
installFirefoxDev() | |
{ | |
logInfo "Install Firefox Developer Edition" | |
curl -fsSL "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=linux64&lang=en-US" \ | |
-o "${tempDir}/firefox-dev.tar.bz2" | |
tar xjf ${tempDir}/firefox-dev.tar.bz2 -C "${devDir}/tools" | |
tee "${HOME}/.local/share/applications/firefox-developer-edition.desktop" > /dev/null \ | |
<<- EOT | |
[Desktop Entry] | |
Version=1.0 | |
Type=Application | |
Name=Firefox Developer Edition | |
Icon=${devDir}/tools/firefox/browser/chrome/icons/default/default128.png | |
TryExec=${devDir}/tools/firefox/firefox-bin | |
Exec=${devDir}/tools/firefox/firefox-bin %u | |
Comment=Firefox Aurora with Developer tools | |
StartupWMClass=firefox-aurora | |
GenericName=Web Browser | |
Keywords=Internet;WWW;Browser;Web;Explorer | |
Categories=GNOME;GTK;Network;WebBrowser; | |
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; | |
Actions=new-window;new-private-window; | |
Terminal=false | |
X-MultipleArgs=false | |
StartupNotify=true | |
[Desktop Action new-window] | |
Name=Open a New Window | |
Exec=${devDir}/tools/firefox/firefox-bin -new-window | |
[Desktop Action new-private-window] | |
Name=Open a New Private Window | |
Exec=${devDir}/tools/firefox/firefox-bin -private-window | |
EOT | |
} | |
installGit() | |
{ | |
logInfo "Install Git" | |
sudo add-apt-repository -y ppa:git-core/ppa | |
sudo apt update | |
sudo apt install -y git | |
sudo apt install -y libsecret-1-dev | |
sudo make --directory=/usr/share/doc/git/contrib/credential/libsecret | |
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret | |
} | |
installWakeMeOps() | |
{ | |
logInfo "Install WakeMeOps" | |
curl -fsSL https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository | sudo bash | |
sudo apt update | |
sudo apt install -y \ | |
bat \ | |
curlie \ | |
datree \ | |
exa \ | |
fd \ | |
ghorg \ | |
glab \ | |
gping \ | |
helm \ | |
hostctl \ | |
hugo \ | |
infracost \ | |
k3d \ | |
krew \ | |
kube-linter \ | |
kubeaudit \ | |
kubectl \ | |
lens \ | |
procs \ | |
telepresence \ | |
terraform \ | |
terraform-docs \ | |
terrascan \ | |
tflint \ | |
yq | |
} | |
installBinEnv() | |
{ | |
logInfo "Install BinEnv" | |
local -r binenvVersion=$(getLatestGithubVersion devops-works/binenv) | |
curl -fsSL "https://github.com/devops-works/binenv/releases/download/${binenvVersion}/binenv_linux_amd64" -o ${tempDir}/binenv | |
chmod +x ${tempDir}/binenv | |
${tempDir}/binenv update | |
${tempDir}/binenv install binenv | |
binenv install broot | |
binenv install ctop | |
binenv install driftctl | |
binenv install duf | |
binenv install gdu | |
binenv install gitui | |
binenv install gocloc | |
binenv install gokart | |
binenv install grype | |
binenv install k6 | |
binenv install kube-beacon | |
binenv install kube-bench | |
binenv install kubecolor | |
binenv install kubent | |
binenv install kubescape | |
binenv install kubestr | |
binenv install lsd | |
binenv install micro | |
binenv install sloop | |
binenv install tfsec | |
binenv install tlder | |
binenv install tlsexp | |
binenv install updatecli | |
binenv install vagrant | |
} | |
installFlatpakPackages() | |
{ | |
logInfo "Install Flatpak packages" | |
sudo apt install -y flatpak | |
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo | |
flatpak install --or-update -y flathub \ | |
com.belmoussaoui.Obfuscate \ | |
com.getpostman.Postman \ | |
com.github.tchx84.Flatseal \ | |
com.gitlab.newsflash \ | |
com.slack.Slack \ | |
com.todoist.Todoist \ | |
fr.romainvigier.MetadataCleaner \ | |
org.gabmus.whatip \ | |
org.gnome.Firmware \ | |
org.gnome.design.IconLibrary \ | |
org.telegram.desktop \ | |
re.sonny.Commit \ | |
re.sonny.Junction | |
} | |
installScripts() | |
{ | |
logInfo "Install scripts" | |
if [ -e "${scriptsDir}" ]; then | |
logWarning "The directory \"${scriptsDir}\" already exists and will not be overwritten" | |
else | |
git clone https://github.com/riccardopedrielli/scripts.git "${scriptsDir}" | |
fi | |
} | |
installNVM() | |
{ | |
logInfo "Install nvm" | |
local -r nvmVersion=$(getLatestGithubVersion nvm-sh/nvm) | |
curl -fsSL "https://raw.githubusercontent.com/nvm-sh/nvm/${nvmVersion}/install.sh" | bash | |
# shellcheck disable=SC1091 | |
source "${HOME}/.nvm/nvm.sh" | |
nvm install node | |
install-npm-pkgs | |
} | |
installSdkMan() | |
{ | |
logInfo "Install sdkman" | |
curl -s "https://get.sdkman.io" | bash | |
bash -c 'source ~/.sdkman/bin/sdkman-init.sh && sdk install java && sdk install gradle && sdk install micronaut' | |
} | |
installDebPackages() | |
{ | |
logInfo "Install deb packages" | |
update-local-deb | |
} | |
installDevTools() | |
{ | |
logInfo "Install dev tools" | |
update-tools | |
} | |
installJetBrainsToolbox() | |
{ | |
logInfo "Install JetBrains Toolbox" | |
local -r toolboxUrl=$(curl -fsSL 'https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release' | jq -r '.TBA[0].downloads.linux.link') | |
curl -fsSL "${toolboxUrl}" -o ${tempDir}/jetbrains-toolbox.tar.gz | |
tar xzf ${tempDir}/jetbrains-toolbox.tar.gz -C ${tempDir} | |
mv ${tempDir}/jetbrains-toolbox-*/jetbrains-toolbox ${tempDir} | |
${tempDir}/jetbrains-toolbox | |
rm -rf ${tempDir}/jetbrains-toolbox* | |
} | |
installAwsCli() | |
{ | |
logInfo "Install aws cli" | |
update-aws-cli | |
local -r credHelperVersion=$(curl -fsSL "https://api.github.com/repos/awslabs/amazon-ecr-credential-helper/releases/latest" | jq -r .tag_name | sed 's/v//') | |
local -r credHelperUrl="https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/${credHelperVersion}/linux-amd64/docker-credential-ecr-login" | |
curl -fsSL "${credHelperUrl}" -o "${binDir}/docker-credential-ecr-login" | |
chmod +x "${binDir}/docker-credential-ecr-login" | |
} | |
generateBashCompletions() | |
{ | |
logInfo "Generate bash completions" | |
update-completion | |
} | |
setupBash() | |
{ | |
logInfo "Set up Bash" | |
local -r toolDir="${devDir}/tools/bash-git-prompt" | |
if [ -e "${toolDir}" ]; then | |
logWarning "The directory \"${toolDir}\" already exists and will not be overwritten" | |
else | |
git clone https://github.com/magicmonty/bash-git-prompt.git "${toolDir}" | |
fi | |
tee "${HOME}/.bash_aliases" > /dev/null \ | |
<<- EOT | |
[ -s "\${HOME}/dev/data/bash/custom.sh" ] && source "\${HOME}/dev/data/bash/custom.sh" | |
EOT | |
} | |
setupSensors() | |
{ | |
logInfo "Set up sensors" | |
sudo sensors-detect <<< "YES" | |
} | |
setupDatetime() | |
{ | |
logInfo "Set up date & time" | |
timedatectl set-local-rtc false | |
timedatectl set-ntp true | |
local -r gnomeSettings=" | |
[/] | |
org/gtk/settings/file-chooser/clock-format='24h' | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
setupBackground() | |
{ | |
logInfo "Set up background" | |
local -r backgroundsDir="${HOME}/.local/share/backgrounds" | |
mkdir -p "${backgroundsDir}" | |
curl -fsSL https://i.imgur.com/PkHGuw2.jpg -o "${backgroundsDir}/background.jpg" | |
local -r gnomeSettings=" | |
[/] | |
org/gnome/desktop/background/picture-uri-dark='file://${backgroundsDir}/background.jpg' | |
org/gnome/desktop/background/picture-uri='file://${backgroundsDir}/background.jpg' | |
org/gnome/desktop/background/primary-color='#000000' | |
org/gnome/desktop/background/secondary-color='#000000' | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
updateGnomeSettings() | |
{ | |
logInfo "Update Gnome settings" | |
local -r gnomeSettings=" | |
[/] | |
ca/desrt/dconf-editor/show-warning=false | |
org/gnome/Characters/recent-characters=['È', 'è', 'à', 'ì', 'ò', 'ù', '€', '°', ' '] | |
org/gnome/TextEditor/highlight-current-line=true | |
org/gnome/TextEditor/indent-style='space' | |
org/gnome/TextEditor/restore-session=false | |
org/gnome/TextEditor/right-margin-position=uint32 120 | |
org/gnome/TextEditor/show-line-numbers=true | |
org/gnome/TextEditor/show-map=true | |
org/gnome/TextEditor/spellcheck=false | |
org/gnome/TextEditor/style-scheme='Adwaita-dark' | |
org/gnome/TextEditor/tab-width=uint32 4 | |
org/gnome/TextEditor/wrap-text=false | |
org/gnome/desktop/calendar/show-weekdate=true | |
org/gnome/desktop/input-sources/xkb-options=['compose:menu'] | |
org/gnome/desktop/interface/clock-format='24h' | |
org/gnome/desktop/interface/clock-show-weekday=true | |
org/gnome/desktop/interface/color-scheme='prefer-dark' | |
org/gnome/desktop/interface/cursor-theme='DMZ-White' | |
org/gnome/desktop/interface/document-font-name='Sans 10' | |
org/gnome/desktop/interface/font-name='Ubuntu 10' | |
org/gnome/desktop/interface/gtk-theme='Yaru-dark' | |
org/gnome/desktop/interface/icon-theme='Yaru' | |
org/gnome/desktop/interface/monospace-font-name='Fira Code weight=453 10' | |
org/gnome/desktop/interface/show-battery-percentage=true | |
org/gnome/desktop/media-handling/autorun-never=true | |
org/gnome/desktop/media-handling/autorun-x-content-start-app=['x-content/ostree-repository'] | |
org/gnome/desktop/notifications/show-in-lock-screen=false | |
org/gnome/desktop/peripherals/mouse/accel-profile='flat' | |
org/gnome/desktop/peripherals/mouse/speed=0.0 | |
org/gnome/desktop/peripherals/touchpad/click-method='fingers' | |
org/gnome/desktop/privacy/old-files-age=uint32 1 | |
org/gnome/desktop/privacy/recent-files-max-age=1 | |
org/gnome/desktop/privacy/remember-recent-files=false | |
org/gnome/desktop/privacy/remove-old-temp-files=true | |
org/gnome/desktop/privacy/remove-old-trash-files=true | |
org/gnome/desktop/screensaver/lock-delay=uint32 60 | |
org/gnome/desktop/search-providers/disabled=['org.gnome.Characters.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.Terminal.desktop'] | |
org/gnome/desktop/session/idle-delay=uint32 900 | |
org/gnome/desktop/wm/keybindings/move-to-center=['<Super><Alt>C'] | |
org/gnome/desktop/wm/preferences/titlebar-font='Ubuntu Bold 10' | |
org/gnome/meld/filename-filters=[('Backups', true, '#*# .#* ~* *~ *.{orig,bak,swp}'), ('OS-specific metadata', true, '.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db Desktop.ini'), ('Version Control', true, '_MTN .bzr .svn .svn .hg .fslckout _FOSSIL_ .fos CVS _darcs .git .svn .osc'), ('Binaries', true, '*.{pyc,a,obj,o,so,la,lib,dll,exe}'), ('Media', false, '*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}'), ('Dev', true, '.gradle .cache .node-gyp .terraform .terraform.lock.hcl bower_components node_modules build')] | |
org/gnome/meld/folder-status-filters=['new', 'modified'] | |
org/gnome/meld/highlight-current-line=true | |
org/gnome/meld/highlight-syntax=true | |
org/gnome/meld/indent-width=4 | |
org/gnome/meld/insert-spaces-instead-of-tabs=true | |
org/gnome/meld/show-line-numbers=true | |
org/gnome/meld/style-scheme='Yaru-dark' | |
org/gnome/nautilus/list-view/default-visible-columns=['name', 'size', 'type', 'date_modified'] | |
org/gnome/nautilus/list-view/default-zoom-level='small' | |
org/gnome/nautilus/list-view/use-tree-view=true | |
org/gnome/nautilus/preferences/default-folder-viewer='list-view' | |
org/gnome/nautilus/preferences/recursive-search='always' | |
org/gnome/nautilus/preferences/show-delete-permanently=true | |
org/gnome/nautilus/preferences/show-directory-item-counts='never' | |
org/gnome/nautilus/preferences/show-image-thumbnails='never' | |
org/gnome/nautilus/window-state/sidebar-width=200 | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding='<Super>x' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command='gnome-session-quit --power-off' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name='Shutdown' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/binding='<Shift><Super>x' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/command='gnome-session-quit --reboot' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/name='Reboot' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/binding='<Alt><Super>x' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/command='systemctl suspend' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/name='Suspend' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/binding='<Primary><Shift>Escape' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/command='gnome-system-monitor' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/name='System Monitor' | |
org/gnome/settings-daemon/plugins/media-keys/custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/'] | |
org/gnome/settings-daemon/plugins/power/ambient-enabled=false | |
org/gnome/settings-daemon/plugins/power/power-button-action='interactive' | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-timeout=1200 | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-type='suspend' | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-battery-timeout=1200 | |
org/gnome/settings-daemon/plugins/power/sleep-inactive-battery-type='suspend' | |
org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size=40 | |
org/gnome/shell/extensions/dash-to-dock/dock-position='BOTTOM' | |
org/gnome/shell/extensions/dash-to-dock/multi-monitor=true | |
org/gnome/shell/extensions/dash-to-dock/show-mounts-network=false | |
org/gnome/shell/extensions/dash-to-dock/show-mounts-only-mounted=true | |
org/gnome/shell/favorite-apps=['org.gnome.Nautilus.desktop', 'firefox.desktop', 'firefox-developer-edition.desktop', 'google-chrome.desktop', 'org.gnome.Terminal.desktop', 'code.desktop', 'syntevo-smartgit.desktop', 'gitkraken.desktop', 'org.gnome.meld.desktop', 'lens.desktop', 'com.todoist.Todoist.desktop', 'filezilla.desktop', 'com.getpostman.Postman.desktop', 'com.slack.Slack.desktop', 'org.telegram.desktop.desktop', 'discord-ptb.desktop', 'mysql-workbench.desktop', 'virtualbox.desktop', 'notable.desktop', 'org.gnome.TextEditor.desktop', 'com.gitlab.newsflash.desktop', 'spotify.desktop', '1password.desktop'] | |
org/gnome/software/download-updates-notify=false | |
org/gnome/software/download-updates=false | |
org/gnome/system/location/enabled=true | |
org/gnome/terminal/legacy/keybindings/close-tab='<Primary>w' | |
org/gnome/terminal/legacy/keybindings/close-window='disabled' | |
org/gnome/terminal/legacy/keybindings/new-tab='<Primary>t' | |
org/gnome/terminal/legacy/keybindings/preferences='<Primary>comma' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/audible-bell=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/background-color='rgb(21,27,31)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/bold-color-same-as-fg=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/bold-color='rgb(245,245,245)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/bold-is-bright=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cell-height-scale=1.1000000000000001 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cell-width-scale=1.0 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-background-color='rgb(251,0,232)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-blink-mode='off' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/cursor-foreground-color='rgb(255,229,253)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/default-size-columns=160 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/default-size-rows=40 | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/font='Fira Code weight=453 10' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/foreground-color='rgb(240,240,240)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/highlight-background-color='rgb(193,221,255)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/highlight-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/highlight-foreground-color='rgb(0,0,0)' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/palette=['rgb(0,0,0)', 'rgb(255,72,38)', 'rgb(65,167,50)', 'rgb(243,225,31)', 'rgb(82,137,249)', 'rgb(165,69,183)', 'rgb(65,185,211)', 'rgb(170,170,170)', 'rgb(126,126,126)', 'rgb(226,97,92)', 'rgb(115,205,114)', 'rgb(255,246,70)', 'rgb(98,174,255)', 'rgb(185,87,202)', 'rgb(69,195,221)', 'rgb(255,255,255)'] | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/scrollbar-policy='never' | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-system-font=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-theme-colors=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-theme-transparency=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/use-transparent-background=false | |
org/gnome/terminal/legacy/profiles:/:107d05fc-a7be-4eb3-aa9e-77061af82199/visible-name='Default' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/audible-bell=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/background-color='rgb(21,27,31)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/bold-color-same-as-fg=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/bold-color='rgb(245,245,245)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/bold-is-bright=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cell-height-scale=1.1000000000000001 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cell-width-scale=1.0 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-background-color='rgb(251,0,232)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-blink-mode='off' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/cursor-foreground-color='rgb(255,229,253)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/default-size-columns=96 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/default-size-rows=24 | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/font='Fira Code weight=453 16' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/foreground-color='rgb(240,240,240)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/highlight-background-color='rgb(193,221,255)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/highlight-colors-set=true | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/highlight-foreground-color='rgb(0,0,0)' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/palette=['rgb(0,0,0)', 'rgb(255,72,38)', 'rgb(65,167,50)', 'rgb(243,225,31)', 'rgb(82,137,249)', 'rgb(165,69,183)', 'rgb(65,185,211)', 'rgb(170,170,170)', 'rgb(126,126,126)', 'rgb(226,97,92)', 'rgb(115,205,114)', 'rgb(255,246,70)', 'rgb(98,174,255)', 'rgb(185,87,202)', 'rgb(69,195,221)', 'rgb(255,255,255)'] | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/scrollbar-policy='never' | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-system-font=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-theme-colors=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-theme-transparency=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/use-transparent-background=false | |
org/gnome/terminal/legacy/profiles:/:90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa/visible-name='Presentation' | |
org/gnome/terminal/legacy/profiles:/default='107d05fc-a7be-4eb3-aa9e-77061af82199' | |
org/gnome/terminal/legacy/profiles:/list=['107d05fc-a7be-4eb3-aa9e-77061af82199', '90a6bbd2-1fa5-44b4-90e0-cc5aa08004fa'] | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
installGnomeShellExtensions() | |
{ | |
logInfo "Install Gnome Shell Extensions" | |
gnome-extensions disable [email protected] | |
gnome-extensions enable [email protected] | |
gnome-extensions enable [email protected] | |
curl -fsSL https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/gnomeshell-extension-manage -o ${tempDir}/gnomeshell-extension-manage | |
chmod +x ${tempDir}/gnomeshell-extension-manage | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 28 # gTile | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 36 # Lock Keys | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 277 # Impatience | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 841 # Freon | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 906 # Sound Input & Output Device Chooser | |
${tempDir}/gnomeshell-extension-manage --install --user --version latest --extension-id 5219 # TopHat | |
local -r gnomeSettings=" | |
[/] | |
org/gnome/shell/extensions/freon/hot-sensors=['__average__', '__max__'] | |
org/gnome/shell/extensions/freon/show-voltage=false | |
org/gnome/shell/extensions/gtile/global-presets=false | |
org/gnome/shell/extensions/gtile/grid-sizes='6x6' | |
org/gnome/shell/extensions/gtile/moveresize-enabled=false | |
org/gnome/shell/extensions/lockkeys/notification-preferences='osd' | |
org/gnome/shell/extensions/lockkeys/style='none' | |
org/gnome/shell/extensions/net/gfxmonk/impatience/speed-factor=0.75 | |
org/gnome/shell/extensions/sound-output-device-chooser/cannot-activate-hidden-device=false | |
org/gnome/shell/extensions/sound-output-device-chooser/expand-volume-menu=false | |
org/gnome/shell/extensions/sound-output-device-chooser/icon-theme='none' | |
org/gnome/shell/extensions/sound-output-device-chooser/show-profiles=false | |
" | |
dconf load / <<< "${gnomeSettings}" | |
} | |
configureSshServer() | |
{ | |
logInfo "Configure SSH server" | |
sudo tee /etc/ssh/sshd_config.d/99-custom.conf > /dev/null \ | |
<<- EOT | |
Port 22013 | |
EOT | |
sudo systemctl restart sshd.service | |
} | |
turnOffBluetooth() | |
{ | |
logInfo "Turn off Bluetooth" | |
rfkill block bluetooth | |
} | |
printEndMessage() | |
{ | |
logInfo "Done" | |
tee "${HOME}/TODO.txt" > /dev/null \ | |
<<- EOT | |
- Delete the setup.sh script | |
- Open Junction -> Set Junction os default for Web | |
- Open Settings -> Privacy -> Diagnostic -> Send error reports to Canonical -> Never | |
- Open Settings -> Default Applications -> Set Music and Video to Celluloid | |
- Open Language Support -> If prompted for missing languages, click Install | |
-> Language -> Apply System-Wide | |
-> Regional Formats -> Apply System-Wide | |
- Load configs with YADM | |
- Install IntelliJ IDEA from JetBrains Toolbox | |
- Delete this file | |
EOT | |
echo " | |
The setup has been completed successfully. | |
Some changes require a restart to take effect. | |
After the restart, read the TODO.txt file in your home directory for the manual steps to complete the setup. | |
" | |
} | |
main() | |
{ | |
checkUbuntuVersion | |
getSudoPrivileges | |
createTemporaryDirectory | |
setKernelParameters | |
configureGrub | |
disableReports | |
createDevStructure | |
removeUnwantedPackages | |
configureApt | |
updateSystem | |
installAptPackages | |
installTranscrypt | |
install1Password | |
installDocker | |
installGoogleChrome | |
installMySQLWorkbench | |
installSpotify | |
installVSCode | |
installAppImageLauncher | |
installCelluloid | |
installFirefox | |
installFirefoxDev | |
installGit | |
installWakeMeOps | |
installBinEnv | |
installFlatpakPackages | |
installScripts | |
installNVM | |
installSdkMan | |
installDebPackages | |
installDevTools | |
installJetBrainsToolbox | |
installAwsCli | |
generateBashCompletions | |
setupBash | |
setupSensors | |
setupDatetime | |
setupBackground | |
updateGnomeSettings | |
installGnomeShellExtensions | |
configureSshServer | |
turnOffBluetooth | |
printEndMessage | |
} | |
main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment