commit f56424e43252d7389ded5ad6eabcc6ef6890967b Author: Brendan Haines Date: Sat Aug 24 12:28:55 2024 -0600 initial commit: copy publishable information out of private installation notes repo diff --git a/README.md b/README.md new file mode 100644 index 0000000..4538a6b --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Installation Notes + +This repository documents installation scripts and notes + +## TODO +- [ ] qt and pyside2/6 +- [ ] limesdr \ No newline at end of file diff --git a/proxmox.md b/proxmox.md new file mode 100644 index 0000000..402420d --- /dev/null +++ b/proxmox.md @@ -0,0 +1,42 @@ +## General +`apt update && apt install vim -y` + +## UPS +`lsusb` to determine bus and device of ups. +in this case bus `001`, device `004` +`lsusb -v -s 001:004` +``` +apt update && apt install nut -y +nut-scanner -U +``` + +my results: +``` +[nutdev1] + driver = "usbhid-ups" + port = "auto" + vendorid = "0764" + productid = "0601" + serial = "CXXJW2003020" + vendor = "CPS" + bus = "001" +``` + +`vim /etc/nut/nut.conf` +Change Mode=none to Mode=netserver + +`vim /etc/nut/ups.conf` +``` +pollinterval = 15 +maxretry = 3 + +[ups] + driver = "usbhid-ups" + port = "auto" + desc = "CyberPower1500VA" + vendorid = "0764" + productid = "0601" + serial = "CXXJW2003020" +``` + +upsdrvctl start \ No newline at end of file diff --git a/ubuntu_docker.sh b/ubuntu_docker.sh new file mode 100644 index 0000000..2c87235 --- /dev/null +++ b/ubuntu_docker.sh @@ -0,0 +1,28 @@ +# Add Docker's official GPG key: +apt-get update +apt-get install ca-certificates curl gnupg +install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg +chmod a+r /etc/apt/keyrings/docker.gpg + +# Add the repository to Apt sources: +echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null +apt-get update + + +apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + + + +docker run hello-world + + + +apt-get update +apt-get install docker-compose-plugin + + +docker compose version diff --git a/ubuntu_laptop.sh b/ubuntu_laptop.sh new file mode 100644 index 0000000..027a5fa --- /dev/null +++ b/ubuntu_laptop.sh @@ -0,0 +1,746 @@ +# 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' + +# 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 diff --git a/ubuntu_vm_setup.sh b/ubuntu_vm_setup.sh new file mode 100644 index 0000000..cd118dc --- /dev/null +++ b/ubuntu_vm_setup.sh @@ -0,0 +1,25 @@ +# UBUNTU + +# Add Docker's official GPG key: +apt-get update +apt-get install -y ca-certificates curl gnupg +install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg +chmod a+r /etc/apt/keyrings/docker.gpg + +# Add the repository to Apt sources: +echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null +apt-get update + + +apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + + +docker run hello-world + +docker compose version + + diff --git a/windows10/gitea_runner.md b/windows10/gitea_runner.md new file mode 100644 index 0000000..dfb6c64 --- /dev/null +++ b/windows10/gitea_runner.md @@ -0,0 +1,27 @@ +# Gitea Runner on Windows 10 + +## Setup +1. Download `.exe` from https://gitea.com/gitea/act_runner/releases +2. Register runner +3. Move `.exe` and `.runner` to `C:\Program Files\gitea\` +4. Add `C:\Program Files\gitea\runner.bat` + ```bat + cd "C:\Program Files\gitea" + act_runner-0.2.6-windows-amd64.exe daemon + ``` +5. Add startup task with task scheduler. + Program: `C:\Windows\System32\cmd.exe` + Arguments: `/k "C:\Program Files\gitea\runner.bat"` + - Disable auto-stop after 3 days + - Run whether user is logged in or not +6. From admin powershell change the execution policy + `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine` +7. Download `nvm-setup.exe` from https://github.com/coreybutler/nvm-windows/releases and install + - Verify installation with `nvm ls` which should say `No installations recognized.` +8. `nvm list available` to determine the latest LTS version +9. Install the latest LTS version `nvm install 20.11.1` (replace version) +10. `nvm use 20.11.1` to select what was just installed +11. Download and install git (64b) from https://git-scm.com/download/win (default settings are fine) + +## Updating +Just download a new `.exe` and update the path in `runner.bat` diff --git a/windows10/windows10.md b/windows10/windows10.md new file mode 100644 index 0000000..ac12c5d --- /dev/null +++ b/windows10/windows10.md @@ -0,0 +1,81 @@ +# Windows 10 + +## Virtual Machine + +- virtio drivers are required during the installation process. They can be found here: https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md +- Enable remote desktop +- Hide all the random crap in the start menu and taskbar (weather, news, giant grid of apps) + +### To do +- [ ] Fix shutdown command from PVE + +## Guest agent +https://pve.proxmox.com/wiki/Qemu-guest-agent + +> First you have to download the virtio-win driver iso (see Windows VirtIO Drivers). +> +> Then install the virtio-serial driver: +> - Attach the ISO to your windows VM (virtio-*.iso) +> - Go to the windows Device Manager +> - Look for "PCI Simple Communications Controller" +> - Right Click -> Update Driver and select on the mounted iso in DRIVE:\vioserial\\ where is your Windows Version (e.g. 2k12R2 for Windows 2012 R2) +> +> After that, you have to install the qemu-guest-agent: +> - Go to the mounted ISO in explorer +> - The guest agent installer is in the directory guest-agent +> - Execute the installer with double click (either qemu-ga-x86_64.msi (64-bit) or qemu-ga-i386.msi (32-bit) + +## Basic software + +### Terminal + +You can try doing it through the windows store but that was giving me issues if I didn't log into a microsoft account. +Instead just use this command from powershell + +```powershell +winget install --id Microsoft.WindowsTerminal -e +``` + +### Downloads + +- [Chrome](https://www.google.com/chrome/index.html) +- [Firefox](https://www.mozilla.org/en-US/firefox/download/thanks/) +- [7-zip](https://www.7-zip.org/) +- [git](https://git-scm.com/download/win) +- [Tortoise Git](https://tortoisegit.org/download/) +- [WinDirStat](https://windirstat.net/download.html) +- [Greenshot](https://getgreenshot.org/downloads/) +- [Python](https://www.python.org/downloads/) + +### Resize Boot Disk + +The boot disk includes a recovery partion after the `C:` partition so increasing the partition size after resizing the virtual disk is problematic. + +From admin powershell: + +```powershell +reagentc /info +reagentc /disable +reagentc /info +``` + +This should now report `Disabled` + +Now it's time to remove the recovery partition + +```powershell +diskpart +``` + +From within `diskpart` run the following (changing the disk and partition numbers of course) + +``` +list disk +select disk 0 +list partition +select partition 3 +delete partition override +exit +``` + +Then from the disk management GUI, extend the `C:` partition to fill the disk. \ No newline at end of file