# 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 sudo apt-get install flatpak # KiCad stable flatpak install --from https://flathub.org/repo/appstream/org.kicad.KiCad.flatpakref # KiCad testing flatpak install --from https://flathub.org/beta-repo/appstream/org.kicad.KiCad.flatpakref # flatpak run org.kicad.KiCad//stable # flatpak run org.kicad.KiCad//beta # 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' # 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 "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, c to keep..." # TODO: actually abort on CTRL+C rm -r temp_install sudo snap install node --classic sudo npm i -g @immich/cli