Skip to content

Instantly share code, notes, and snippets.

@sandrocarval
Last active July 30, 2021 17:01
Show Gist options
  • Save sandrocarval/841333600c6055d99077bfeecad9ec59 to your computer and use it in GitHub Desktop.
Save sandrocarval/841333600c6055d99077bfeecad9ec59 to your computer and use it in GitHub Desktop.
PopOS 20.04 setup
# First, upgrade what you have
sudo apt update && sudo apt upgrade -y
# Base stuff
sudo apt install curl wget net-tools apt-transport-https software-properties-common gnupg fonts-roboto fonts-roboto-slab fonts-inter fonts-hack fonts-firacode gnome-tweaks code -y
# Dev stuff
sudo apt install build-essential git libbz2-dev zlib1g-dev libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev libbz2-dev dirmngr gpg automake autoconf libreadline-dev libncurses-dev libssl-dev libyaml-dev libxslt-dev libffi-dev libtool unixodbc-dev jq python3-pip -y
# Node LTS (latest = 14.x) + Yarn
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt install nodejs yarn -y
# AdoptOpenJDK LTS (Java 11)
wget https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
gpg --no-default-keyring --keyring ./adoptopenjdk-keyring.gpg --import public
gpg --no-default-keyring --keyring ./adoptopenjdk-keyring.gpg --export --output adoptopenjdk-archive-keyring.gpg
rm adoptopenjdk-keyring.gpg
sudo mv adoptopenjdk-archive-keyring.gpg /usr/share/keyrings
echo "deb [signed-by=/usr/share/keyrings/adoptopenjdk-archive-keyring.gpg] https://adoptopenjdk.jfrog.io/adoptopenjdk/deb focal main" | sudo tee /etc/apt/sources.list.d/adoptopenjdk.list
sudo apt-get update && sudo apt-get install adoptopenjdk-11-hotspot -y
# Maven 3.8.1
wget https://downloads.apache.org/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz -P /tmp
sudo tar xf /tmp/apache-maven-3.8.1-bin.tar.gz -C /opt
sudo ln -s /opt/apache-maven-3.8.1 /opt/maven
# Setup Java-related env variables
sudo tee -a /etc/profile.d/java.sh <<-EOF
export JAVA_HOME=/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
EOF
sudo chmod +x /etc/profile.d/java.sh
# Git
git config --global color.ui true
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL"
ssh-keygen -b 4096
# Font setup
mkdir -p ~/.config/fontconfig/
tee -a ~/.config/fontconfig/fonts.conf <<-EOF
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias binding="same">
<family>Helvetica</family>
<prefer>
<family>Liberation Sans</family>
</prefer>
</alias>
<alias binding="same">
<family>system-ui</family>
<prefer>
<family>Roboto</family>
</prefer>
</alias>
<alias binding="same">
<family>sans</family>
<prefer>
<family>Roboto</family>
</prefer>
</alias>
<alias binding="same">
<family>sans-serif</family>
<prefer>
<family>Roboto</family>
</prefer>
</alias>
<alias binding="same">
<family>serif</family>
<prefer>
<family>Roboto Slab</family>
</prefer>
</alias>
<alias binding="same">
<family>monospace</family>
<prefer>
<family>Hack</family>
</prefer>
</alias>
<match target="font">
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintslight</const>
</edit>
<edit name="lcdfilter" mode="assign">
<const>lcddefault</const>
</edit>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
</fontconfig>
EOF
fc-cache -f -v
# Comment out the "modifier_map Mod3 { Scroll_Lock };" line
sudo vi /usr/share/X11/xkb/symbols/br
# Audio improvements
mkdir -p ~/.config/pulse/
tee -a ~/.config/pulse/daemon.conf <<-EOF
deferred-volume-safety-margin-usec = 1
default-sample-format = float32le
default-sample-channels = 2
default-channel-map = front-left,front-right
default-fragments = 2
default-fragment-size-msec = 125
resample-method = soxr-vhq
remixing-produce-lfe = no
high-priority = yes
nice-level = -11
realtime-scheduling = yes
realtime-priority = 9
rlimit-rtprio = 9
daemonize = no
EOF
# Increase max_user_watches
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# And reboot!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment