├── .github └── workflows │ └── installations.yml ├── README.md └── startup.sh /.github/workflows/installations.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the master branch 7 | on: [pull_request, push] 8 | 9 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 10 | jobs: 11 | # This workflow contains a single job called "build" 12 | build: 13 | # The type of runner that the job will run on 14 | runs-on: ubuntu-latest 15 | 16 | # Steps represent a sequence of tasks that will be executed as part of the job 17 | steps: 18 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 19 | - uses: actions/checkout@v2 20 | 21 | # Runs a single command using the runners shell 22 | - name: Test installations 23 | run: sh startup.sh 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Linux Workstation Setup 2 | 3 | ![CI](https://github.com/lukemorales/ubuntu-dev-setup/workflows/CI/badge.svg) 4 | 5 | This configs were made based on [Erick Wendel's setup](https://github.com/ErickWendel/ew-ubuntu-setup) and my own needs as a JS Developer and other personal stuff. 6 | 7 | ## Getting Started 8 | 9 | Just clone this repo or download and execute 10 | 11 | ```bash 12 | sh startup.sh 13 | ``` 14 | 15 | ## You'll be installing 16 | 17 | * [Curl](https://curl.haxx.se/) - Command line tool and library for transferring data with URLs 18 | * [Neofetch](https://github.com/dylanaraps/neofetch) - Command line tool that displays information about your operating system, software and hardware in an aesthetic and visually pleasing way 19 | * [Xclip](https://opensource.com/article/19/7/xclip) - Command line interface to the X11 clipboard 20 | * [Git](https://git-scm.com/) - Free and open source distributed version control system 21 | * [python3-pip](https://www.python.org/) - The package installer for Python, necessary to install getgist 22 | * [getgist](https://github.com/cuducos/getgist) - Easily download any file from a GitHub Gist, with one single command. 23 | * [Oh-My-Zsh](https://ohmyz.sh/) - Framework for managing your ZSH configuration 24 | * [Fira Code](https://github.com/tonsky/FiraCode) - Monospaced font with programming ligatures 25 | * [NVM](https://github.com/nvm-sh/nvm) - Version manager for NodeJS 26 | * [NodeJS](https://nodejs.org/en/) - JavaScript runtime built on Chrome's V8 JavaScript engine 27 | * [Yarn](https://classic.yarnpkg.com/en/) - Fast reliable and secure dependency management 28 | * [Typescript](https://www.typescriptlang.org/) - Typed superset of JavaScript that compiles to plain JavaScript 29 | * [AdonisJS CLI](https://github.com/adonisjs/adonis-cli) - Adonis cli is built on top of Adonis ace and helps you scaffold new Adonisjs projects 30 | * [Lerna](https://github.com/lerna/lerna) - A tool for managing JavaScript projects with multiple packages 31 | * [VSCode](https://code.visualstudio.com/) - Source-code editor made by Microsoft 32 | * [Settings Sync](https://github.com/shanalikhan/code-settings-sync) - Sync your VSCode settings from Gist 33 | * [Vivaldi](https://vivaldi.com/) - The new Vivaldi browser protects you from trackers, blocks unwanted ads, and puts you in control with unique built-in features 34 | * [Docker](https://www.docker.com/) - Platform for building, deploying, and managing containerized applications 35 | * [Docker Compose](https://docs.docker.com/compose/) - Tool for defining and running multi-container Docker applications 36 | * [Heroku CLI](https://devcenter.heroku.com/categories/command-line) - Create and manage your Heroku apps 37 | * [PostBird](https://github.com/Paxa/postbird) - Open source PostgreSQL GUI client for macOS, Linux and Windows 38 | * [Insomnia Core](https://insomnia.rest/) - The Desktop API client for REST and GraphQL. Make requests, inspect responses 39 | * [Omni Theme](https://github.com/getomni) - A dark theme based on Dracula 🧛🏻‍♂️ 40 | * [Android Studio](https://developer.android.com/studio) - Android Studio provides the fastest tools for building apps on every type of Android device 41 | * [VLC](https://www.videolan.org/vlc/) - Media player 42 | * [Discord](https://discord.com/new) - Chat for Communities and Friends 43 | * [Zoom](https://zoom.us/) - Zoom is the leader in modern enterprise video communications, with an easy, reliable cloud platform for video and audio conferencing, chat, and webinars across mobile, desktop, and room systems 44 | * [Spotify](https://www.spotify.com/) - Music streaming and media services provider 45 | * [Peek](https://github.com/phw/peek) - Simple animated GIF screen recorder with an easy to use interface 46 | * [OBS Studio](https://obsproject.com/) - Free and open source software for video recording and live streaming 47 | * [Robo3t](https://robomongo.org/) - MongoDB GUI 48 | * [Lotion](https://github.com/puneetsl/lotion) - Unofficial Notion.so app for Linux 49 | 50 | ## Authors 51 | 52 | * **Erick Wendel** - *Initial work* - [Erick Wendel](https://github.com/ErickWendel) 53 | 54 | * **Olavio Lacerda** - Additions and modifications 55 | 56 | * **Luke Morales** - Additions and modifications 57 | 58 | ## License 59 | 60 | This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details 61 | -------------------------------------------------------------------------------- /startup.sh: -------------------------------------------------------------------------------- 1 | echo "Welcome! Let's start setting up your system. It could take more than 10 minutes, be patient" 2 | 3 | echo "What name do you want to use in GIT user.name?" 4 | echo "For example, mine will be \"Luke Morales\"" 5 | read git_config_user_name 6 | 7 | echo "What email do you want to use in GIT user.email?" 8 | echo "For example, mine will be \"lukemorales@live.com\"" 9 | read git_config_user_email 10 | 11 | echo "What is your github username?" 12 | echo "For example, mine will be \"lukemorales\"" 13 | read username 14 | 15 | cd ~ && sudo apt-get update 16 | 17 | echo 'Installing curl' 18 | sudo apt-get install curl -y 19 | 20 | echo 'Installing neofetch' 21 | sudo apt-get install neofetch -y 22 | 23 | echo 'Installing tool to handle clipboard via CLI' 24 | sudo apt-get install xclip -y 25 | 26 | echo 'Installing latest git' 27 | sudo add-apt-repository ppa:git-core/ppa -y 28 | sudo apt-get update && sudo apt-get install git -y 29 | 30 | echo 'Installing python3-pip' 31 | sudo apt-get install python3-pip -y 32 | 33 | echo 'Installing getgist to download dot files from gist' 34 | sudo pip3 install getgist 35 | export GETGIST_USER=$username 36 | 37 | if [$XDG_CURRENT_DESKTOP == 'KDE'] ; then 38 | echo 'Cloning your Konsole configs from gist' 39 | cd ~/.local/share/konsole && getmy OmniKonsole.profile && getmy OmniTheme.colorscheme 40 | 41 | echo 'Installing Latte Dock' 42 | sudo add-apt-repository ppa:kubuntu-ppa/backports -y 43 | sudo apt-get update && sudo apt-get dist-upgrade 44 | sudo apt-get install cmake extra-cmake-modules qtdeclarative5-dev libqt5x11extras5-dev libkf5iconthemes-dev libkf5plasma-dev libkf5windowsystem-dev libkf5declarative-dev libkf5xmlgui-dev libkf5activities-dev build-essential libxcb-util-dev libkf5wayland-dev git gettext libkf5archive-dev libkf5notifications-dev libxcb-util0-dev libsm-dev libkf5crash-dev libkf5newstuff-dev libxcb-shape0-dev libxcb-randr0-dev libx11-dev libx11-xcb-dev -y 45 | sudo git clone https://github.com/KDE/latte-dock.git /usr/local/latte-dock 46 | cd /usr/local/latte-dock && sudo sh install.sh 47 | 48 | echo 'Installing Kvantum Manager' 49 | sudo add-apt-repository ppa:papirus/papirus -y 50 | sudo apt-get update && sudo apt install qt5-style-kvantum -y 51 | fi 52 | 53 | echo "Setting up your git global user name and email" 54 | git config --global user.name "$git_config_user_name" 55 | git config --global user.email $git_config_user_email 56 | 57 | echo 'Cloning your .gitconfig from gist' 58 | getmy .gitconfig 59 | 60 | echo 'Generating a SSH Key' 61 | ssh-keygen -t rsa -b 4096 -C $git_config_user_email 62 | ssh-add ~/.ssh/id_rsa 63 | cat ~/.ssh/id_rsa.pub | xclip -selection clipboard 64 | 65 | echo 'Installing ZSH' 66 | sudo apt-get install zsh -y 67 | sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" 68 | chsh -s $(which zsh) 69 | 70 | echo 'Cloning your .zshrc from gist' 71 | getmy .zshrc 72 | 73 | echo 'Indexing snap to ZSH' 74 | sudo chmod 777 /etc/zsh/zprofile 75 | echo "emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'" >> /etc/zsh/zprofile 76 | 77 | echo 'Installing Spaceship ZSH Theme' 78 | git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" 79 | ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme" 80 | source ~/.zshrc 81 | 82 | echo 'Installing FiraCode' 83 | sudo apt-get install fonts-firacode -y 84 | 85 | echo 'Installing NVM' 86 | sh -c "$(curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash)" 87 | 88 | export NVM_DIR="$HOME/.nvm" && ( 89 | git clone https://github.com/creationix/nvm.git "$NVM_DIR" 90 | cd "$NVM_DIR" 91 | git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)` 92 | ) && \. "$NVM_DIR/nvm.sh" 93 | 94 | export NVM_DIR="$HOME/.nvm" 95 | [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" 96 | 97 | source ~/.zshrc 98 | clear 99 | 100 | echo 'Installing NodeJS LTS' 101 | nvm --version 102 | nvm install --lts 103 | nvm current 104 | 105 | echo 'Installing Yarn' 106 | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - 107 | echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list 108 | sudo apt-get update && sudo apt-get install --no-install-recommends yarn 109 | echo '"--emoji" true' >> ~/.yarnrc 110 | 111 | echo 'Installing Typescript, AdonisJS CLI and Lerna' 112 | yarn global add typescript @adonisjs/cli lerna 113 | clear 114 | 115 | echo 'Installing VSCode' 116 | curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg 117 | sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ 118 | sudo sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' 119 | sudo apt-get install apt-transport-https -y 120 | sudo apt-get update && sudo apt-get install code -y 121 | 122 | echo 'Installing Code Settings Sync' 123 | code --install-extension Shan.code-settings-sync 124 | sudo apt-get install gnome-keyring -y 125 | cls 126 | 127 | echo 'Installing Vivaldi' 128 | wget -qO- https://repo.vivaldi.com/archive/linux_signing_key.pub | sudo apt-key add - 129 | sudo add-apt-repository 'deb https://repo.vivaldi.com/archive/deb/ stable main' -y 130 | sudo apt update && sudo apt install vivaldi-stable 131 | 132 | echo 'Launching Vivaldi on Github so you can paste your keys' 133 | vivaldi https://github.com/settings/keys /dev/null 2>&1 & disown 134 | 135 | echo 'Installing Docker' 136 | sudo apt-get purge docker docker-engine docker.io 137 | sudo apt-get install docker.io -y 138 | sudo systemctl start docker 139 | sudo systemctl enable docker 140 | docker --version 141 | 142 | sudo groupadd docker 143 | sudo usermod -aG docker $USER 144 | sudo chmod 777 /var/run/docker.sock 145 | 146 | echo 'Installing docker-compose' 147 | sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 148 | sudo chmod +x /usr/local/bin/docker-compose 149 | docker-compose --version 150 | 151 | echo 'Installing Heroku CLI' 152 | curl https://cli-assets.heroku.com/install-ubuntu.sh | sh 153 | heroku --version 154 | 155 | echo 'Installing PostBird' 156 | wget -c https://github.com/Paxa/postbird/releases/download/0.8.4/Postbird_0.8.4_amd64.deb 157 | sudo dpkg -i Postbird_0.8.4_amd64.deb 158 | sudo apt-get install -f -y && rm Postbird_0.8.4_amd64.deb 159 | 160 | echo 'Installing Insomnia Core and Omni Theme' 161 | echo "deb https://dl.bintray.com/getinsomnia/Insomnia /" \ 162 | | sudo tee -a /etc/apt/sources.list.d/insomnia.list 163 | wget --quiet -O - https://insomnia.rest/keys/debian-public.key.asc \ 164 | | sudo apt-key add - 165 | sudo apt-get update && sudo apt-get install insomnia -y 166 | mkdir ~/.config/Insomnia/plugins && cd ~/.config/Insomnia/plugins 167 | git clone https://github.com/Rocketseat/insomnia-omni.git omni-theme && cd ~ 168 | 169 | echo 'Installing Android Studio' 170 | sudo add-apt-repository ppa:maarten-fonville/android-studio -y 171 | sudo apt-get update && sudo apt-get install android-studio -y 172 | 173 | echo 'Installing VLC' 174 | sudo apt-get install vlc -y 175 | sudo apt-get install vlc-plugin-access-extra libbluray-bdj libdvdcss2 -y 176 | 177 | echo 'Installing Discord' 178 | wget -O discord.deb "https://discordapp.com/api/download?platform=linux&format=deb" 179 | sudo dpkg -i discord.deb 180 | sudo apt-get install -f -y && rm discord.deb 181 | 182 | echo 'Installing Zoom' 183 | wget -c https://zoom.us/client/latest/zoom_amd64.deb 184 | sudo dpkg -i zoom_amd64.deb 185 | sudo apt-get install -f -y && rm zoom_amd64.deb 186 | 187 | echo 'Installing Spotify' 188 | curl -sS https://download.spotify.com/debian/pubkey.gpg | sudo apt-key add - 189 | echo "deb http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list 190 | sudo apt-get update && sudo apt-get install spotify-client -y 191 | 192 | echo 'Installing Peek' 193 | sudo add-apt-repository ppa:peek-developers/stable -y 194 | sudo apt-get update && sudo apt-get install peek -y 195 | 196 | echo 'Installing OBS Studio' 197 | sudo apt-get install ffmpeg && sudo snap install obs-studio 198 | 199 | echo 'Enabling KVM for Android Studio' 200 | sudo apt-get install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager -y 201 | sudo adduser $USER libvirt 202 | sudo adduser $USER libvirt-qemu 203 | 204 | echo 'Installing Robo3t' 205 | sudo snap install robo3t-snap 206 | 207 | echo 'Installing Lotion' 208 | sudo git clone https://github.com/puneetsl/lotion.git /usr/local/lotion 209 | cd /usr/local/lotion && sudo ./install.sh 210 | 211 | echo 'Updating and Cleaning Unnecessary Packages' 212 | sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get full-upgrade -y; apt-get autoremove -y; apt-get autoclean -y' 213 | clear 214 | 215 | echo 'Installing postgis container' 216 | docker run --name postgis -e POSTGRES_PASSWORD=docker -p 5432:5432 -d kartoza/postgis 217 | 218 | echo 'Installing mongodb container' 219 | docker run --name mongodb -p 27017:27017 -d -t mongo 220 | 221 | echo 'Installing redis container' 222 | docker run --name redis_skylab -p 6379:6379 -d -t redis:alpine 223 | clear 224 | 225 | echo 'Bumping the max file watchers' 226 | echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p 227 | 228 | echo 'Generating GPG key' 229 | gpg --full-generate-key 230 | gpg --list-secret-keys --keyid-format LONG 231 | 232 | echo 'Paste the GPG key ID to export and add to your global .gitconfig' 233 | read gpg_key_id 234 | git config --global user.signingkey $gpg_key_id 235 | gpg --armor --export $gpg_key_id 236 | 237 | echo 'All setup, enjoy!' 238 | --------------------------------------------------------------------------------