747 lines
29 KiB
Bash
747 lines
29 KiB
Bash
# Installation script on Ubuntu 22.04 LTS
|
|
# Created 2022-05-03
|
|
|
|
mkdir temp_install
|
|
cd temp_install
|
|
chmod 777 . # ensure there aren't any permissions issues
|
|
|
|
#####################
|
|
## PERSONALIZATION ##
|
|
#####################
|
|
|
|
MY_NAME="Brendan Haines"
|
|
MY_EMAIL="brendan.haines@gmail.com"
|
|
|
|
########################
|
|
## PACKAGE MANAGEMENT ##
|
|
########################
|
|
|
|
echo '
|
|
# START OF USER ADDITIONS
|
|
' >> ~/.bashrc
|
|
|
|
# Updates since distro release
|
|
sudo apt-get update
|
|
sudo apt-get upgrade -y
|
|
|
|
# Filesystem support
|
|
sudo apt-get install -y nfs-common
|
|
# I ripped out old drive mapping from Dell E7470. I need to decide exactly what I want to do with photos
|
|
|
|
# Decent AppImage support
|
|
sudo add-apt-repository -y ppa:appimagelauncher-team/stable
|
|
sudo apt-get install -y appimagelauncher
|
|
mkdir ~/Applications
|
|
cat << EOF > ~/.config/appimagelauncher.cfg
|
|
[AppImageLauncher]
|
|
ask_to_move = true
|
|
# destination = ~/Applications
|
|
# enable_daemon = true
|
|
|
|
|
|
[appimagelauncherd]
|
|
# additional_directories_to_watch = ~/otherApplications:/even/more/applications
|
|
# monitor_mounted_filesystems = false
|
|
EOF
|
|
|
|
sudo apt-get install -y xclip # used to pre-populate clipboard for brave settings
|
|
|
|
# I'm not thrilled with chromium-based browsers right now so here's to firefox
|
|
firefox https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/?browser=firefox
|
|
# TODO: pin bitwarden extension to toolbar
|
|
firefox https://addons.mozilla.org/en-US/firefox/addon/earth-view-from-google/
|
|
firefox https://addons.mozilla.org/en-US/firefox/addon/toolkit-for-ynab/
|
|
firefox about:preferences
|
|
# TODO: manual step
|
|
# - home
|
|
# - disable recommended by pocket
|
|
# - search
|
|
# - disable suggestions from firefox
|
|
# - disable suggestions from sponsors
|
|
# - privacy
|
|
# - enable tell websites not to share my data
|
|
# - enable send websites a do not track request
|
|
# - disable ask to save passwords
|
|
# - disable show alerts about passwords for breached websites
|
|
# - disable save and fill addresses
|
|
# - disable save and fill payment methods
|
|
# - disable Allow Firefox to make personalized extension recommendations
|
|
|
|
# TODO: manual step
|
|
# global settings (kde)
|
|
# - input devices
|
|
# - touchpad
|
|
# - enable natural scrolling
|
|
# - Appearance
|
|
# - global theme = breath dark
|
|
# - Window management
|
|
# - task switcher
|
|
# - Thumbnail grid
|
|
# - Display and monitor
|
|
# - Night color
|
|
# - sunset and sunrise at current location
|
|
|
|
|
|
# NOTE: brave is not a package manager but can be used to install other things so it gets installed early
|
|
# Brave browser
|
|
sudo apt-get install -y apt-transport-https curl
|
|
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
|
|
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list
|
|
sudo apt-get update
|
|
sudo apt-get install -y brave-browser
|
|
|
|
# Automatically install extensions
|
|
sudo mkdir --parents /etc/brave/policies/managed
|
|
sudo bash -c 'cat << EOF > /etc/brave/policies/managed/default_extensions.json
|
|
{
|
|
"PasswordManagerEnabled": false,
|
|
"PaymentMethodQueryEnabled": false,
|
|
"SyncDisabled": true,
|
|
"BrowsingDataLifetime": [
|
|
{
|
|
"time_to_live_in_hours": 72,
|
|
"data_types": [
|
|
"browsing_history",
|
|
"download_history",
|
|
"cached_images_and_files",
|
|
]
|
|
}
|
|
],
|
|
"BrowserSignin": 0, // 0 = Disable browser sign-in
|
|
"RestoreOnStartup": 5, // 5 = Open New Tab Page
|
|
"ShowFullUrlsInAddressBar": true,
|
|
"DefaultBrowserSettingEnabled": true, // try to automatically set as default on start
|
|
"PaymentMethodQueryEnabled": false,
|
|
"BraveRewardsDisabled": true,
|
|
"BraveWalletDisabled": true,
|
|
"ExtensionSettings":{
|
|
"gphhapmejobijbbhgpjhcjognlahblep":{
|
|
// Gnome shell integration
|
|
"installation_mode": "force_installed",
|
|
"update_url":"https://clients2.google.com/service/update2/crx"
|
|
},
|
|
"nngceckbapebfimnlniiiahkandclblb":{
|
|
// Bitwarden
|
|
"installation_mode": "normal_installed",
|
|
"toolbar_pin": "force_pinned",
|
|
"update_url":"https://clients2.google.com/service/update2/crx"
|
|
},
|
|
"aapbdbdomjkkjkaonfhkkikfgjllcleb":{
|
|
// Google Translate
|
|
"installation_mode": "normal_installed",
|
|
"update_url":"https://clients2.google.com/service/update2/crx"
|
|
},
|
|
"chphlpgkkbolifaimnlloiipkdnihall":{
|
|
// OneTab
|
|
"installation_mode": "normal_installed",
|
|
"update_url":"https://clients2.google.com/service/update2/crx"
|
|
},
|
|
"bhloflhklmhfpedakmangadcdofhnnoh":{
|
|
// Earth View
|
|
"installation_mode": "normal_installed",
|
|
"update_url":"https://clients2.google.com/service/update2/crx"
|
|
},
|
|
"lmhdkkhepllpnondndgpgclfjnlofgjl":{
|
|
// YNAB Toolkit
|
|
"installation_mode": "normal_installed",
|
|
"update_url":"https://clients2.google.com/service/update2/crx"
|
|
},
|
|
"gabdloknkpdefdpkkibplcfnkngbidim":{
|
|
// Deluge Siphon
|
|
"installation_mode": "normal_installed",
|
|
"update_url":"https://clients2.google.com/service/update2/crx"
|
|
},
|
|
},
|
|
}
|
|
EOF'
|
|
killall brave # extensions won't be installed until brave restarts
|
|
# policies can be seen at brave://policy/
|
|
# https://support.brave.com/hc/en-us/articles/360039248271-Group-Policy
|
|
|
|
# can't open brave to settings page so I'll at least make it easy to do by hand
|
|
echo "brave://settings" | xclip -sel clip
|
|
cat << EOF
|
|
MANUAL STEP: paste URL from clipboard (brave settings)
|
|
set as default browser
|
|
dark mode
|
|
default search engine: duckduckgo (for both normal and private windows)
|
|
use wide address bar = true
|
|
show rewards icon in address bar = false
|
|
save and fill payment methods = false
|
|
EOF
|
|
brave-browser
|
|
read -n 1 -p "Press any key to continue..."
|
|
|
|
# SSH
|
|
ssh-keygen -t ed25519 -C $MY_EMAIL -f ~/.ssh/id_ed25519 -N ""
|
|
xclip -sel clip < ~/.ssh/id_ed25519.pub
|
|
cat << EOF
|
|
MANUAL STEP: gitlab SSH
|
|
paste public key (already in clipboard) and save
|
|
EOF
|
|
echo "Hostname is '$(hostname)'"
|
|
brave-browser https://gitlab.com/-/profile/keys
|
|
read -n 1 -p "Press any key to continue..."
|
|
|
|
# Git
|
|
sudo apt-get install -y git
|
|
git config --global user.name $MY_NAME
|
|
git config --global user.email $MY_EMAIL
|
|
git config --global init.defaultBranch main
|
|
git config --global pull.ff only
|
|
git config --global merge.ff no
|
|
# git config --global merge.commit no
|
|
|
|
# Pipx
|
|
sudo apt-get install -y python3-pip python3-venv
|
|
pip3 install --user pipx
|
|
echo 'export PATH="/home/$USER/.local/bin:$PATH"' >> ~/.bashrc # TODO: should this be added to start or end of PATH?
|
|
export PATH=$PATH:/home/$USER/.local/bin
|
|
|
|
# Pyenv
|
|
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl
|
|
curl https://pyenv.run | bash
|
|
echo 'export PYENV_ROOT="$HOME/.pyenv"
|
|
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
|
|
eval "$(pyenv init -)"' >> ~/.bashrc
|
|
|
|
# Common python tools
|
|
pipx install pipenv
|
|
echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc
|
|
pipx install bump2version
|
|
pipx install black
|
|
sudo apt-get install -y ffmpeg
|
|
|
|
# Common python libraries
|
|
pip3 install --user scipy matplotlib numpy
|
|
sudo apt-get install -y python3-tk
|
|
|
|
# Compilers
|
|
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
sudo apt-get install -y libudev-dev libusb-1.0-0-dev
|
|
|
|
cargo install cargo-embed
|
|
cargo install probe-run
|
|
rustup install nightly
|
|
rustup target install thumbv7m-none-eabi
|
|
rustup target install thumbv7em-none-eabi
|
|
rustup target install thumbv7em-none-eabihf
|
|
sudo bash -c 'cat << EOF > /etc/udev/rules.d/50-probe-rs.rules
|
|
# udev rules to allow access to USB devices as a non-root user
|
|
|
|
# STMicroelectronics ST-LINK/V2
|
|
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", TAG+="uaccess"
|
|
|
|
# STMicroelectronics STLINK-V3
|
|
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", TAG+="uaccess"
|
|
EOF'
|
|
sudo udevadm control --reload-rules
|
|
|
|
sudo apt-get install -y gcc g++ cmake
|
|
sudo apt-get install -y iverilog gtkwave yosys verilator arachne-pnr
|
|
sudo apt-get install -y clang-format
|
|
|
|
sudo snap install go --classic
|
|
|
|
# Docker
|
|
# TODO: I think there's a better (curl a script) way to do this
|
|
sudo apt-get remove docker docker-engine docker.io containerd runc # NOTE: I don't think this is necessary
|
|
sudo apt-get install -y ca-certificates curl gnupg lsb-release
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
sudo apt-get update
|
|
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
sudo usermod -a -G docker $USER
|
|
# TODO: I need sudo to use docker right now
|
|
|
|
# Docker compose
|
|
sudo curl -L https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
|
|
sudo chmod +x /usr/local/bin/docker-compose
|
|
|
|
# Basic utilities
|
|
sudo apt-get install -y net-tools nmap lynx
|
|
sudo apt-get install -y debconf-utils
|
|
sudo apt-get install -y dconf-editor
|
|
|
|
|
|
# Fingerprint sensor
|
|
if [ "$(sudo dmidecode -s system-version)" = "ThinkPad E14 Gen 4" ]; then
|
|
wget https://download.lenovo.com/pccbbs/mobiles/r1slg01w.zip -O lenovo_fprint.zip
|
|
unzip lenovo_fprint.zip
|
|
unzip libfprint*.zip
|
|
sudo apt-get install -y ./libfprint*/libfprint*.deb
|
|
# TODO: add fingerprint login for my user account
|
|
fi
|
|
|
|
sudo apt install -y unrar
|
|
|
|
#######################
|
|
## User Applications ##
|
|
#######################
|
|
|
|
# I don't actually know which line needed me to agree to the eula but this takes care of it
|
|
echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true" | sudo debconf-set-selections
|
|
|
|
# Jekyll
|
|
sudo apt-get install -y ruby-full build-essential zlib1g-dev
|
|
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
|
|
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
|
|
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
|
|
source ~/.bashrc
|
|
gem install jekyll bundler
|
|
|
|
# Visual Studio Code
|
|
sudo snap install code --classic
|
|
|
|
code --install-extension shd101wyy.markdown-preview-enhanced
|
|
code --install-extension PKief.material-icon-theme
|
|
code --install-extension Gruntfuggly.todo-tree
|
|
code --install-extension slevesque.vscode-zipexplorer
|
|
code --install-extension eamodio.gitlens
|
|
# Manual step:
|
|
# - right click and "Hide Commit Graph" button
|
|
# - right click on gitlens tab and "Hide 'GitLens'"
|
|
code --install-extension mhutchie.git-graph
|
|
code --install-extension ms-python.python
|
|
code --install-extension ms-toolsai.jupyter
|
|
code --install-extension ms-vscode.cpptools-extension-pack
|
|
code --install-extension cschlosser.doxdocgen
|
|
code --install-extension marus25.cortex-debug
|
|
code --install-extension ms-vscode.vscode-embedded-tools
|
|
code --install-extension ms-azuretools.vscode-docker
|
|
code --install-extension ms-vscode-remote.remote-containers
|
|
code --install-extension ms-vscode-remote.remote-ssh
|
|
# code --install-extension efbenson.scad # deprecated in favor of Antyos.openscad
|
|
code --install-extension Antyos.openscad
|
|
code --install-extension Leathong.openscad-language-support
|
|
code --install-extension slevesque.vscode-3dviewer # this kinda sucks but there aren't many alternatives
|
|
code --install-extension hediet.vscode-drawio
|
|
code --install-extension nopeslide.vscode-drawio-plugin-wavedrom
|
|
code --install-extension tamasfe.even-better-toml
|
|
code --install-extension mshr-h.veriloghdl
|
|
code --install-extension appliedengdesign.vscode-gcode-syntax
|
|
code --install-extension ZixuanWang.linkerscript
|
|
code --install-extension rust-lang.rust-analyzer
|
|
code --install-extension vadimcn.vscode-lldb # needed for rust debug
|
|
code --install-extension probe-rs.probe-rs-debugger
|
|
code --install-extension YuTengjing.open-in-external-app
|
|
code --install-extension janisdd.vscode-edit-csv
|
|
code --install-extension GitLab.gitlab-workflow
|
|
# Manual step: setup of API key
|
|
code --install-extension tomoki1207.pdf
|
|
code --install-extension cweijan.vscode-office
|
|
code --install-extension ms-python.black-formatter
|
|
code --install-extension charliermarsh.ruff
|
|
code --install-extension Perkovec.emoji
|
|
code --install-extension ms-dotnettools.csdevkit
|
|
|
|
cat << EOF > ~/.config/Code/User/keybindings.json
|
|
// Place your key bindings in this file to override the defaults
|
|
[
|
|
{
|
|
"key": "alt+left",
|
|
"command": "workbench.action.navigateBack",
|
|
"when": "canNavigateBack"
|
|
},
|
|
{
|
|
"key": "alt+right",
|
|
"command": "workbench.action.navigateForward",
|
|
"when": "canNavigateForward"
|
|
},
|
|
]
|
|
EOF
|
|
|
|
cat << EOF > ~/.config/Code/User/settings.json
|
|
{
|
|
"editor.formatOnSave": true,
|
|
"editor.trimAutoWhitespace": true,
|
|
"editor.renderWhitespace": "all",
|
|
"editor.rulers": [
|
|
88,
|
|
120
|
|
],
|
|
"git.autofetch": true,
|
|
"git.confirmSync": false,
|
|
"gitlens.showWelcomeOnInstall": false,
|
|
"gitlens.showWhatsNewAfterUpgrades": false,
|
|
"gitlens.plusFeatures.enabled": false,
|
|
"black-formatter.importStrategy": "fromEnvironment",
|
|
"python.languageServer": "Pylance",
|
|
"[python]": {
|
|
"editor.defaultFormatter": "ms-python.black-formatter",
|
|
"editor.codeActionsOnSave": {
|
|
"source.organizeImports": true
|
|
},
|
|
},
|
|
"3dviewer.wireframe": true,
|
|
"workbench.editorAssociations": {
|
|
"*.md": "default",
|
|
"*.png": "imagePreview.previewEditor",
|
|
"*.jpg": "imagePreview.previewEditor",
|
|
"*.jpeg": "imagePreview.previewEditor",
|
|
},
|
|
"hediet.vscode-drawio.resizeImages": null,
|
|
"verilog.linting.linter": "iverilog",
|
|
}
|
|
EOF
|
|
|
|
# add "Open in Code" to Nautilus context menu
|
|
wget -qO- https://raw.githubusercontent.com/harry-cpp/code-nautilus/master/install.sh | bash
|
|
|
|
sudo apt-get install -y arduino
|
|
usermod -a -G dialout $USER
|
|
|
|
# Media stuff
|
|
sudo snap install spotify
|
|
sudo snap install vlc
|
|
sudo apt-get install -y gimp inkscape darktable
|
|
|
|
# Signal messenger
|
|
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
|
|
cat signal-desktop-keyring.gpg | sudo tee -a /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
|
|
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
|
|
sudo apt-get update && sudo apt-get install -y signal-desktop
|
|
|
|
# Discord
|
|
wget "https://discord.com/api/download?platform=linux&format=deb" -O discord.deb
|
|
sudo apt-get install -y ./discord.deb
|
|
|
|
# KiCad
|
|
sudo add-apt-repository --yes ppa:kicad/kicad-8.0-releases
|
|
sudo apt-get update
|
|
sudo apt-get install --install-recommends -y kicad
|
|
|
|
sudo add-apt-repository --yes ppa:kicad/kicad-dev-nightly
|
|
sudo apt-get update
|
|
sudo apt-get install -y kicad-nightly
|
|
|
|
# KiBot
|
|
wget https://set-soft.github.io/debian/kibot.list
|
|
sudo mv kibot.list /etc/apt/sources.list.d/
|
|
wget https://set-soft.github.io/debian/kibot.gpg
|
|
sudo mv kibot.gpg /etc/apt/
|
|
sudo apt-get update
|
|
sudo apt-get install -y kibot
|
|
|
|
# Visual diff for kicad
|
|
# TODO: KIRI requires "ENTER to continue"
|
|
bash -c "$(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_dependencies.sh)"
|
|
bash -c "INSTALL_KIRI_REMOTELLY=1; $(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_kiri.sh)"
|
|
echo '
|
|
# Kiri environment setup
|
|
eval $(opam env)
|
|
export KIRI_HOME="/home/$USER/.local/share/kiri"
|
|
export PATH=${KIRI_HOME}/submodules/KiCad-Diff/bin:${PATH}
|
|
export PATH=${KIRI_HOME}/bin:${PATH}' >> ~/.bashrc
|
|
|
|
# MCAD
|
|
sudo apt-get install -y openscad
|
|
sudo apt-get install -y freecad
|
|
sudo add-apt-repository -y ppa:iacobs/cnc
|
|
sudo apt-get update
|
|
sudo apt-get install -y python3-opencamlib
|
|
|
|
sudo add-apt-repository ppa:freecad-maintainers/freecad-daily
|
|
sudo apt update
|
|
sudo apt-get add freecad-daily
|
|
freecad-daily
|
|
# MANUAL STEP: tools -> addon manager -> install CfdOF
|
|
|
|
sudo apt install openfoam-default
|
|
sudo apt-get install paraview
|
|
# MANUAL STEP finish setting this up from within freecad. See this reference:
|
|
# https://github.com/jaheyns/CfdOF?tab=readme-ov-file#docker-on-linux
|
|
|
|
# # MANUAL STEP: download paraview:
|
|
# # https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v5.13&type=binary&os=Linux&downloadFile=ParaView-5.13.0-MPI-Linux-Python3.10-x86_64.tar.gz
|
|
# tar -xzvf ParaView-*x86_64.tar.gz
|
|
# sudo mv ParaView-*x86_64 /opt/
|
|
# echo -e "\nexport PATH=\$PATH:/opt/$(ls /opt/ | grep ParaView)/bin\n" >> ~/.bashrc
|
|
# wget -O cfmesh-cfdof.zip https://sourceforge.net/projects/cfmesh-cfdof/files/latest/download
|
|
# unzip cfmesh-cfdof.zip
|
|
# sudo mv cfmesh-cfdof /opt/
|
|
|
|
# 3D printing
|
|
wget https://cdn.prusa3d.com/downloads/drivers/prusa3d_linux_2_7_2.zip
|
|
unzip prusa3d_linux*.zip
|
|
AppImageLauncher PrusaSlicer*linux-x64-GTK3*.AppImage
|
|
git clone git@gitlab.com:brendanhaines/3dprinting.git ~/.config/PrusaSlicer/
|
|
|
|
# Virtual Machines
|
|
sudo apt-get install -y virtualbox
|
|
# TODO: automatically install my base machines
|
|
|
|
sudo apt-get install -y texlive texlive-xetex pandoc
|
|
sudo apt-get install -y pdftk # NOTE: may want to replace with pdftk-java soon?
|
|
|
|
# balenaEtcher bootable disk creator
|
|
curl -1sLf 'https://dl.cloudsmith.io/public/balena/etcher/setup.deb.sh' | sudo -E bash
|
|
sudo apt-get update
|
|
sudo apt-get install -y balena-etcher-electron
|
|
|
|
# Raspberry Pi boot disk creator
|
|
sudo apt-get install -y rpi-imager
|
|
|
|
# Torrent client - transmission is installed by default
|
|
sudo apt-get install -y deluge
|
|
|
|
# Zoom Video Conferencing
|
|
# From https://cuboulder.zoom.us/download
|
|
wget https://cuboulder.zoom.us/client/latest/zoom_amd64.deb
|
|
sudo apt-get install -y ./zoom_*.deb
|
|
|
|
## TP-Link network gear control
|
|
#wget https://static.tp-link.com/upload/software/2022/202207/20220729/Omada_SDN_Controller_v5.4.6_Linux_x64.deb
|
|
## Was unable to install due to the following missing dependencies:
|
|
## - mongodb-server
|
|
## - mongodb-10gen
|
|
## - mongodb-org-server
|
|
## sudo apt-get install -y ./Omada_SDN_Controller_v5.4.6_Linux_x64.deb
|
|
|
|
# Open source lab equipment automation
|
|
sudo apt-get install -y sigrok
|
|
|
|
# Saleae Logic
|
|
wget --content-disposition https://logic2api.saleae.com/download?os=linux
|
|
wget https://downloads.saleae.com/logic/1.2.40/Logic-1.2.40-Linux.AppImage
|
|
mv ./Logic*.AppImage ~/Applications/
|
|
# AppImageLauncher must be run to discover new AppImages
|
|
AppImageLauncher ~/Applications/Logic-2*.AppImage & # This window can be closed immediately
|
|
#cat /tmp/.mount_Logic-3YFrms/resources/linux/99-SaleaeLogic.rules | sudo tee /etc/udev/rules.d/99-SaleaeLogic.rules > /dev/null && echo "finished installing /etc/udev/rules.d/99-SaleaeLogic.rules"
|
|
|
|
# OpenRocket simulator
|
|
wget https://github.com/openrocket/openrocket/releases/download/release-15.03/OpenRocket-15.03.AppImage
|
|
mv OpenRocket-*.AppImage ~/Applications/
|
|
AppImageLauncher ~/Applications/OpenRocket-*.AppImage
|
|
|
|
# Digilent waveforms
|
|
wget https://digilent.s3-us-west-2.amazonaws.com/Software/Adept2+Runtime/2.27.9/digilent.adept.runtime_2.27.9-amd64.deb
|
|
sudo apt-get install -y ./digilent.adept.runtime*.deb
|
|
wget https://s3-us-west-2.amazonaws.com/digilent/Software/Waveforms2015/3.22.2/digilent.waveforms_3.22.2_amd64.deb
|
|
sudo apt-get install -y ./digilent.waveforms*.deb
|
|
# For new versions see:
|
|
# https://mautic.digilentinc.com/adept-runtime-download
|
|
# https://digilent.com/shop/software/digilent-waveforms/download
|
|
|
|
# Picoscope oscilloscope
|
|
wget -O - https://labs.picotech.com/Release.gpg.key | sudo apt-key add -
|
|
sudo bash -c 'echo "deb https://labs.picotech.com/rc/picoscope7/debian/ picoscope main" >/etc/apt/sources.list.d/picoscope7.list'
|
|
sudo apt-get update
|
|
sudo apt-get install -y picoscope
|
|
|
|
# ADI Pluto SDR
|
|
sudo apt-get install -y libiio-dev
|
|
pip3 install pylibiio pyadi-iio
|
|
|
|
# OpenTX Radio Companion (RC controller)
|
|
wget https://downloads.open-tx.org/2.3/release/companion/linux/companion23_2.3.14_amd64.deb
|
|
sudo apt-get install -y ./companion23*.deb
|
|
wget http://downloads.open-tx.org/tools/dfu-util-0.7_0.7-1~precise_amd64.deb
|
|
sudo apt-get install -y ./dfu-util*.deb
|
|
|
|
# Git status indicators
|
|
# https://github.com/chrisjbillington/git-nautilus-icons
|
|
sudo apt-get install -y python3-gi python3-nautilus
|
|
pip3 install --user git-nautilus-icons
|
|
killall nautilus
|
|
|
|
# Act runner
|
|
wget -qO act.tar.gz https://github.com/nektos/act/releases/latest/download/act_Linux_x86_64.tar.gz
|
|
sudo tar xf act.tar.gz -C /usr/local/bin act
|
|
|
|
# Bitwarden
|
|
sudo snap install bitwarden
|
|
|
|
# Steam
|
|
wget --content-disposition https://cdn.akamai.steamstatic.com/client/installer/steam.deb
|
|
sudo apt-get install -y ./steam*.deb
|
|
# TODO: this requires an ENTER to continue and creates a new terminal
|
|
|
|
wget https://launcher.mojang.com/download/Minecraft.deb
|
|
sudo apt-get install -y ./Minecraft.deb
|
|
|
|
# 3D rendering and animation
|
|
sudo snap install blender --classic
|
|
|
|
# brltty breaks CH340 USB-UART adapters
|
|
# see https://askubuntu.com/questions/1403705/dev-ttyusb0-not-present-in-ubuntu-22-04
|
|
sudo apt-get remove -y brltty
|
|
|
|
# Wireshark
|
|
# https://askubuntu.com/questions/1275842/install-wireshark-without-confirm
|
|
echo "wireshark-common wireshark-common/install-setuid boolean false" | sudo debconf-set-selections
|
|
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y wireshark
|
|
sudo groupadd wireshark
|
|
sudo usermod -a -G wireshark $USER
|
|
|
|
# Android development
|
|
# needed for 64b machines
|
|
sudo apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
|
|
# latest version of android studio can be found at: https://developer.android.com/studio/
|
|
wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.3.1.18/android-studio-2023.3.1.18-linux.tar.gz
|
|
tar -xvzf android-studio-*-linux.tar.gz
|
|
sudo mv android-studio /opt/android-studio
|
|
# TODO: finish install manually
|
|
/opt/android-studio/bin/studio.sh
|
|
|
|
# Prevent sleeping
|
|
sudo apt-get install -y caffeine
|
|
mkdir -p ~/.config/autostart/
|
|
cp /usr/share/applications/caffeine-indicator.desktop ~/.config/autostart/
|
|
|
|
# Serial terminal
|
|
sudo snap install tio --classic
|
|
|
|
# Split images into multiple pages for printing posters
|
|
sudo apt-get install -y posterazor
|
|
|
|
# Web automation/scraping
|
|
sudo apt-get install -y chromium-browser chromium-chromedriver
|
|
cargo install geckodriver
|
|
|
|
# File transfer
|
|
sudo apt-get install -y filezilla
|
|
|
|
# Video editor
|
|
sudo apt-get install -y shotcut
|
|
|
|
# Element (matrix client)
|
|
sudo apt-get install -y wget apt-transport-https
|
|
sudo wget -O /usr/share/keyrings/element-io-archive-keyring.gpg https://packages.element.io/debian/element-io-archive-keyring.gpg
|
|
echo "deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main" | sudo tee /etc/apt/sources.list.d/element-io.list
|
|
sudo apt-get update
|
|
sudo apt-get install -y element-desktop
|
|
|
|
# Joplin
|
|
wget https://github.com/laurent22/joplin/releases/download/v2.9.17/Joplin-2.9.17.AppImage
|
|
echo "https://webdav.brendanhaines.com/joplin" | xclip -sel clip
|
|
AppImageLauncher Joplin-*.AppImage &
|
|
|
|
# CHIRP (handheld radio programmer)
|
|
# TODO: automatically grab latest version from https://trac.chirp.danplanet.com/download?stream=next
|
|
sudo apt install -y git python3-wxgtk4.0 python3-serial python3-six python3-future python3-requests python3-pip
|
|
wget https://trac.chirp.danplanet.com/chirp_next/next-20230219/chirp-20230219.tar.gz
|
|
# TODO: get this to work with pipx?
|
|
# pipx install ./chirp-*.tar.gz
|
|
pip3 install ./chirp-*.tar.gz
|
|
|
|
# Ebooks
|
|
# sudo apt-get install -y calibre
|
|
sudo apt-get install -y sqlite3
|
|
|
|
# Printer
|
|
lpadmin -p "m118dw.brendanhaines.com" -D "HP LaserJet Pro M118dw" -L "Home Office" -m everywhere -v "ipp://m118dw.brendanhaines.com" # add printer
|
|
lpadmin -d "m118dw.brendanhaines.com" # set default printer
|
|
|
|
|
|
#################
|
|
## PREFERENCES ##
|
|
#################
|
|
|
|
# Shotwell image library
|
|
gsettings set org.yorba.shotwell.preferences.files import-dir "/home/$USER/Pictures"
|
|
gsettings set org.yorba.shotwell.preferences.files directory-pattern '%Y/%m/%d'
|
|
gsettings set org.yorba.shotwell.preferences.files auto-import true
|
|
gsettings set org.yorba.shotwell.preferences.files commit-metadata true
|
|
gsettings set org.yorba.shotwell.preferences.editing external-photo-editor 'gimp %U' # this is a symlink to latest version of gimp
|
|
gsettings set org.yorba.shotwell.preferences.editing external-raw-editor 'darktable %U'
|
|
gsettings set org.yorba.shotwell.plugins.enable-state publishing-flickr false
|
|
gsettings set org.yorba.shotwell.plugins.enable-state publishing-youtube false
|
|
|
|
sudo apt-get install -y gnome-tweaks
|
|
|
|
cat << EOF
|
|
MANUAL STEP: gnome settings
|
|
default applications-> video: VLC
|
|
EOF
|
|
gnome-control-center default-apps
|
|
read -n 1 -p "Press any key to continue..."
|
|
|
|
# Set gedit color scheme before setting dark mode to avoid unreadable text
|
|
gsettings set org.gnome.gedit.preferences.editor scheme 'Yaru-dark'
|
|
|
|
# dark mode
|
|
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
|
gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-dark'
|
|
|
|
# <Super>e to launch nautilus
|
|
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name "Files"
|
|
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command "nautilus"
|
|
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding "<Super>e"
|
|
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
|
|
|
|
# Automatic night light
|
|
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
|
|
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-automatic true
|
|
|
|
# clock style
|
|
gsettings set org.gnome.desktop.interface clock-show-weekday false
|
|
gsettings set org.gnome.desktop.interface clock-format "24h"
|
|
|
|
# sound
|
|
gsettings set org.gnome.desktop.sound allow-volume-above-100-percent true
|
|
|
|
# privacy
|
|
gsettings set org.gnome.desktop.privacy remove-old-temp-files true
|
|
gsettings set org.gnome.desktop.privacy remove-old-trash-files true
|
|
gsettings set org.gnome.desktop.privacy old-files-age 30
|
|
|
|
# indicators
|
|
gsettings set org.gnome.desktop.interface show-battery-percentage true
|
|
|
|
# TODO: I think I need to do more than add these to this list
|
|
#gsettings set org.gnome.shell enabled-extensions "['user-theme@gnome-shell-extensions.gcampax.github.com', 'launch-new-instance@gnome-shell-extensions.gcampax.github.com', 'Resource_Monitor@Ory0n']"
|
|
|
|
# hidden file visibility
|
|
gsettings set org.gtk.gtk4.Settings.FileChooser show-hidden false
|
|
gsettings set org.gnome.nautilus.preferences show-hidden-files true
|
|
|
|
# hide desktop icons
|
|
gsettings set org.gnome.shell.extensions.ding show-home false
|
|
|
|
# terminal colors (previously was manual)
|
|
# colors: Tango dark, Tango palette, show bold text in bright colors
|
|
# b1dcc9dd-5262-4d8d-a863-c897e6d979b9 appears to always be the default profile.
|
|
# gsettings get org.gnome.Terminal.ProfilesList default # this will retreive the default profile if this id ever changes
|
|
# https://www.growingwiththeweb.com/2015/05/colours-in-gnome-terminal.html
|
|
# Tango Dark colors
|
|
dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/background-color "'rgb(46,52,54)'"
|
|
dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/foreground-color "'rgb(211,215,207)'"
|
|
dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/palette "['rgb(46,52,54)', 'rgb(204,0,0)', 'rgb(78,154,6)', 'rgb(196,160,0)', 'rgb(52,101,164)', 'rgb(117,80,123)', 'rgb(6,152,154)', 'rgb(211,215,207)', 'rgb(85,87,83)', 'rgb(239,41,41)', 'rgb(138,226,52)', 'rgb(252,233,79)', 'rgb(114,159,207)', 'rgb(173,127,168)', 'rgb(52,226,226)', 'rgb(238,238,236)']"
|
|
dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/bold-is-bright true
|
|
dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/use-theme-colors false
|
|
|
|
# Eliminate excess favorites on the sidebar
|
|
gsettings get org.gnome.shell favorite-apps ['org.gnome.Nautilus.desktop', 'org.gnome.Terminal.desktop', 'brave-browser.desktop', 'code_code.desktop', 'org.kicad.kicad.desktop', 'spotify_spotify.desktop']
|
|
|
|
# Create bookmarks in Nautilus
|
|
echo "file:///home/$USER/Documents/projects" >> ~/.config/gtk-3.0/bookmarks
|
|
echo "smb://nas.brendanhaines.com/ nas.brendanhaines.com" >> ~/.config/gtk-3.0/bookmarks
|
|
|
|
sudo apt-get install -y gnome-shell-extensions
|
|
brave-browser https://extensions.gnome.org/extension/19/user-themes/
|
|
brave-browser https://extensions.gnome.org/extension/600/launch-new-instance/
|
|
brave-browser https://extensions.gnome.org/extension/1634/resource-monitor/
|
|
cat << EOF
|
|
MANUAL STEP: resource monitor extension settings (right click)
|
|
cpu -> width=40
|
|
ram -> width=40
|
|
swap -> width=40
|
|
disk off (both stats and space)
|
|
net -> auto-hide=false, width=80 each
|
|
thermal -> off if not getting valid temperatures
|
|
EOF
|
|
read -n 1 -p "Press any key to continue..."
|
|
|
|
# TODO: manual step
|
|
# settings->applications->remmina->enable "inhibit system keyboard shortcuts"
|
|
|
|
echo "ALL DONE!"
|
|
|
|
cd ..
|
|
read -n 1 -p "Press ENTER to erase temporary files, <Ctrl>c to keep..." # TODO: actually abort on CTRL+C
|
|
rm -r temp_install
|
|
|
|
sudo snap install node --classic
|
|
sudo npm i -g @immich/cli
|