skozombie

first_run setup script for Linux Mint my way

Jan 27th, 2025
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.28 KB | Software | 0 0
  1. #!/bin/bash
  2. # Do boring setup stuff. Will need to type the password for your SSH key home and
  3. # your password for sudo the first time, but apart from that it's automated
  4.  
  5. SSH_KEY_HOME="[email protected]:/home/user/.ssh"
  6.  
  7. mkdir -p ~/.ssh
  8. chmod 700 ~/.ssh
  9. echo "# Copying ssh keys "
  10. if ! ls ~/.ssh/id_* &> /dev/null; then
  11.     scp ${SSH_KEY_HOME}/id* ~/.ssh
  12.     echo "... done"
  13. else
  14.     echo "... already got keys"
  15. fi
  16.  
  17. echo "# Setup better hotkey bindings ..."
  18. gsettings set org.cinnamon.desktop.keybindings.media-keys terminal "['<Super>t']"
  19. gsettings set org.cinnamon.desktop.keybindings looking-glass-keybinding "[]"
  20. gsettings set org.cinnamon.desktop.keybindings.media-keys screensaver "['<Super>l', 'XF86ScreenSaver']"
  21. gsettings set org.cinnamon.desktop.keybindings.wm panel-run-dialog "['<Super>r']"
  22. gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt']"
  23. gsettings set org.cinnamon.desktop.input-sources xkb-options "['compose:ralt']"
  24. gsettings set org.cinnamon.sounds tile-enabled false
  25.  
  26. echo "# Install NodeJS v22 ..."
  27. curl -fsSL https://deb.nodesource.com/setup_22.x -o /tmp/nodesource_setup.sh
  28. sudo -E bash /tmp/nodesource_setup.sh
  29.  
  30. echo "# Setup Jetbrains PPA ..."
  31. if [ ! -f /usr/share/keyrings/jetbrains-ppa-archive-keyring.gpg ]; then
  32.     curl -s https://s3.eu-central-1.amazonaws.com/jetbrains-ppa/0xA6E8698A.pub.asc | gpg --dearmor | sudo tee /usr/share/keyrings/jetbrains-ppa-archive-keyring.gpg > /dev/null
  33.     echo "deb [signed-by=/usr/share/keyrings/jetbrains-ppa-archive-keyring.gpg] http://jetbrains-ppa.s3-website.eu-central-1.amazonaws.com any main" | sudo tee /etc/apt/sources.list.d/jetbrains-ppa.list > /dev/null
  34. else
  35.     echo "... already setup"
  36. fi
  37.  
  38. echo "# Setup Signal PPA ..."
  39. wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
  40. cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
  41. echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
  42.  
  43. if [ ! -f /etc/server_colour ]; then
  44.     # Pick a randomish colour based on hostname
  45.     COLOUR=$(( (0x$(hostname | md5sum | awk '{print substr($1,1,2)}') % 7) + (30 + (0x$(hostname | md5sum | awk '{print substr($1,1,2)}') % 7 >= 2)) ))
  46.     sudo bash -c 'cat > /etc/server_colour' <<EOF
  47. #!/bin/sh
  48. #
  49. # /etc/server_colour
  50. # Set the colour for this server so that you don't forget what machine you're on
  51. #
  52. # Format: style;colour
  53. # eg: "1;36"
  54. #
  55. # Styles:
  56. # 0 - Normal Text
  57. # 1 - Bold
  58. # 4 - Underlined
  59. # 7 - Reversed
  60. #
  61. # Colours:
  62. # 30 - Black
  63. # 31 - Red
  64. # 32 - Green
  65. # 33 - Yellow
  66. # 34 - Blue
  67. # 35 - Purple
  68. # 36 - Cyan
  69. # 37 - White
  70.  
  71. server_colour="1;$COLOUR"
  72. EOF
  73. fi
  74.  
  75. echo "# Updating .bashrc for colours"
  76. if ! grep -q "server_colour" ~/.bashrc; then
  77.     echo "... updating bashrc"
  78.     cp ~/.bashrc ~/.bashrc.bak
  79.     sed -i '/\033/c\
  80.    [ -f /etc/server_colour ] && source /etc/server_colour || server_colour = "1;37"\
  81.    PS1="${debian_chroot:+($debian_chroot)}\\[\\033[01;32m\\]\\u\\[\\033[${server_colour}m\\]@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ "' ~/.bashrc
  82. else
  83.     echo "... looks updated, skipping"
  84. fi
  85.  
  86. sudo apt update
  87. sudo apt upgrade -y
  88. sudo apt install -y nala
  89. sudo nala install -y rustrover pycharm-professional webstorm vim curl build-essential gcc make python3-venv signal-desktop
  90.  
  91. echo "# Get and install discord ..."
  92. wget "https://discord.com/api/download?platform=linux&format=deb" -O /tmp/discord.deb && sudo dpkg -i /tmp/discord.deb
  93.  
  94. echo "Installing Rust ..."
  95. curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
  96.  
  97. echo "Fixing directories ..."
  98.  
  99. cd ~
  100. for dir in Desktop Documents Downloads Music Pictures Videos Templates Public; do
  101.     if [ -d "$dir" ]; then
  102.         echo " - Fixing '$dir' ..."
  103.         mv "$dir" "$(echo "$dir" | tr '[:upper:]' '[:lower:]')"
  104.     fi
  105. done
  106.  
  107. echo " - Updating ~/.config/user-dirs.dirs"
  108. sed -i 's|\(XDG_\w*_DIR=\)\"\$HOME/\(.*\)\"|\1"\$HOME/\L\2"|' ~/.config/user-dirs.dirs
  109. xdg-user-dirs-update
  110.  
  111. echo " - Updating nemo shortcuts (will restart nemo)"
  112. sed -i "s/.*/\L&/" ~/.config/gtk-3.0/bookmarks
  113. nemo --quit && nemo & disown -a
  114.  
  115. echo " DONE! (and a reboot wouldn't hurt)"
Add Comment
Please, Sign In to add comment