commit ef7a763d4bf47fb2ce913c6620bc723a847ab8e1 Author: Evan Date: Sat Jul 11 16:52:50 2026 -0500 first draft of installing programs diff --git a/desktop-env.sh b/desktop-env.sh new file mode 100644 index 0000000..a2ae190 --- /dev/null +++ b/desktop-env.sh @@ -0,0 +1,9 @@ +########################### +## DESKTOP ENVIRONMENT ## +########################### +# Designed & tested on Cinnamon XX.x + +echo "desktop-env.sh not populated" + +# remap caps-lock to escape (more efficient neovim) +gsettings set org.gnome.libgnomekbd.keyboard options "['grp\tgrp:win_space_toggle', 'terminate\tterminate:ctrl_alt_bksp', 'caps\tcaps:escape']" diff --git a/main.sh b/main.sh new file mode 100644 index 0000000..8ab722d --- /dev/null +++ b/main.sh @@ -0,0 +1,143 @@ +#!/bin/bash +# Last updated: 7/4/2026 +# This was designed for Linux Mint XX.x; most of it should work for other distros. the desktop-environment.sh code will probably need to be different for anything that's not Cinnamon. + +USER_DIR="/home/evan" + +# Some things here require manual install because they aren't in apt repositories, don't have another stable installation source, and I don't want to rely on a static download location. +# These things will all be put into a TODO.md file in the current directory along with brief notes/instructions. + +# check for root access +if [ "$EUID" -ne 0 ] + then echo "please run this script as root" + exit +fi + +touch todo.md +mkdir -p /usr/local/bin +chmod 755 /usr/local/bin +apt-get update + +####################### +## DEV/PROGRAMMING ## +## ESSENTIAL TOOLS ## +####################### +echo "## dev/programming & essential tools/programs" | tee todo.md -a + +# Install some apt packages +apt-get install -y git jq build-essentials unzip # for development +apt-get install -y ripgrep # I honestly don't remember why I installed these +echo "* globstar?" | tee todo.md -a + +# Install Python & uv (package manager) + +# link /usr/bin/python to a real python install +echo "* install python" | tee todo.md -a + +# Node.js 24 (with nvm - https://github.com/nvm-sh/nvm) +# also required for pyright language server (neovim) +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash +\. "$HOME/.nvm/nvm.sh" # in lieu of restarting the shell +nvm install 24 +echo "* verify nvm stuff added to correct bashrc" | tee todo.md -a + +# install a nerd font (provides special symbols for zsh/starship) +mkdir -p /usr/share/fonts/truetype/DejaVuSansMono/ +unzip ./utils/DejaVuSansMono.zip /usr/share/fonts/truetype/DejaVuSansMono/ + +# zsh (better shell) +echo "* add zsh and starship, etc. + nerd font" | tee todo.md -a +apt-get install -y zsh + +# starship (shell prompt) +curl -sS https://starship.rs/install.sh | sh +# echo 'eval "$(starship init zsh)"' | tee "#USER_DIR/.zshrc" -a # should already be in zshrc +mkdir -p "$USER_DIR/.config" +cp ./utils/starship.toml "$USER_DIR/.config/starship.toml" + +# Neovim +echo "* install neovim & clone config" | tee todo.md -a + +# Other editor(s) (TBD) +echo "* investigate and install other IDE(s)" | tee todo.md -a + +# Brave browser +curl -fsS https://dl.brave.com/install.sh | sh + +# GitHub SSH keys +echo "* generate new SSH key and add to GitHub?" | tee todo.md -a + +# things I'd rather not install but have to +# Discord (chat) +echo "* install Discord (chat)" | tee todo.md -a + +# Zoom (video call) +echo "* install Zoom (video call)" | tee todo.md -a + + +############################ +## WORKFLOW/SMALL TOOLS ## +############################ +echo "## workflow helpers, small tools, and utilities" | tee todo.md -a + +# pbcopy/pbpaste (from macOS) +apt-get install -y xclip +printf '#!/bin/bash \nxclip -selection clipboard' | tee /usr/local/bin/pbcopy +chmod 755 /usr/local/bin/pbcopy +printf '#!/bin/bash \nxclip -selection clipboard -o' | tee /usr/local/bin/pbpaste +chmod 755 /usr/local/bin/pbpaste + +# WordNet & def utility +apt-get install -y wordnet +printf '#!/bin/bash \nwn $1 -over' | tee /usr/local/bin/def +chmod 755 /usr/local/bin/def + +# Artha (WordNet dictionary) +apt-get install -y artha + +# qpdf (pdf manipulation) +apt-get install -y qpdf + +# rndrmarkdown markdown renderer +apt-get install -y pandoc +cp ./utils/rndrmarkdown /usr/local/bin/rndrmarkdown +chmod 755 /usr/local/bin/rndrmarkdown +echo 'alias rmd="rndrmarkdown"' | tee ~/.bashrc -a + +# readline (for piping 1 line into wc) +printf '#!/bin/bash \necho "$(head -n $1 $2 | tail -n 1)"' | tee /usr/local/bin/rline +chmod 755 /usr/local/bin/rline +echo "* verify rline formatted correctly" + +# Calc (command-line calculator) +apt-get install -y calc + +# OpenSSH server (prob already has ssh client) +apt-get install -y openssh-server +echo "* verify has openSSH client" | tee todo.md -a + +# Wine (run windoze apps) +apt-get install -y winehq + +# Gpick (color picker) +apt-get install -y gpick + +# ksnip (screenshot) +apt-get install -y ksnip + +# btop (system resource monitor) +apt-get install -y btop + + +########################## +## SPECIALTY PROGRAMS ## +########################## +source user-programs.sh + + +########################### +## DESKTOP ENVIRONMENT ## +########################### +# designed & tested on Cinnamon XX.x +source ./desktop-env.sh + diff --git a/removing-stuff.sh b/removing-stuff.sh new file mode 100644 index 0000000..56e7a23 --- /dev/null +++ b/removing-stuff.sh @@ -0,0 +1,6 @@ +###################### +## REMOVING STUFF ## +###################### +echo "## removing stuff" | tee todo.md -a + +echo "* remove ~/Videos, etc" | tee todo.md -a diff --git a/user-programs.sh b/user-programs.sh new file mode 100644 index 0000000..11648ec --- /dev/null +++ b/user-programs.sh @@ -0,0 +1,46 @@ +########################## +## SPECIALTY PROGRAMS ## +########################## +echo "## special/single-use/professional programs" | tee todo.md -a + +# GIMP (image manipulation) +apt-get install -y gimp + +# Audacity (audio manipulation) +apt-get install -y audacity + +# VLC (video player) +apt-get install -y vlc + +# ffmpeg (A/V transcoding) +apt-get install -y ffmpeg + +# OBS studio (screen recording) +add-apt-repository ppa:obsproject/obs-studio +apt-get update +apt-get install -y obs-studio + +# FreeCAD (3D parametric modeling) +apt-get install -y freecad + +# 3D printing slicer +echo "* choose and install 3D slicer" | tee todo.md -a + +# ProtonVPN +echo "* install protonVPN" | tee todo.md -a + +# Minecraft +echo "* install Minecraft" | tee todo.md -a + + +# unsure about right now +# qbittorrent +# MakeMKV? +# godot? +# remote access software? +# libreoffice? +# Docker? +# Homebrew? +# Obsidian? +# Gparted/parted? + diff --git a/utils/DejaVuSansMono.zip b/utils/DejaVuSansMono.zip new file mode 100644 index 0000000..56735c0 Binary files /dev/null and b/utils/DejaVuSansMono.zip differ diff --git a/utils/rndrmarkdown b/utils/rndrmarkdown new file mode 100644 index 0000000..f37b63e --- /dev/null +++ b/utils/rndrmarkdown @@ -0,0 +1,51 @@ +#!/bin/bash +outfile="output.pdf" +display=false +identity=false # keep same filename, but append '.pdf' +# -o flag with argument for output file (default output.pdf) +# -i flag (short for identity) to simply add '.pdf' to the filename +# -d flag to automatically display the output file after rendering +while getopts "o:id" opt; do + case ${opt} in + o) + outfile=$OPTARG + ;; + i) + identity=true + ;; + d) + display=true + ;; + esac +done + +# remove all processed args +shift $((OPTIND - 1)) + +if [[ $1 == '' ]] ; then + echo "fatal: please provide an input file" + echo "usage: rndrmarkdown [-d] [-o ] infile.md" + echo "usage: rndrmarkdown [-d] [-i] infile.md" + exit 1 +fi + +infile=$1 + +if [ $identity = true ]; then + outfile="$1.pdf" +fi + +echo "in $infile out $outfile display $display" + +pandoc -s \ + -V linkcolor:blue \ + -V fontfamily:courier \ + -V fontsize=12pt \ + -V geometry:margin=0.85in \ + -o "$outfile" "$infile" + +if [[ $display == true ]] ; then + echo "opening $outfile..." + xdg-open $outfile +fi +