This repo contains a few files intended to make setting up a brand new development environment on Pop_OS! 19.04 quick and easy.
I work primarily as a Magento developer. So this bootstrap may include some software (like the Magento Cloud CLI Tool) that you don't need. Feel free to customize this to your liking, and happy coding!
To use, just install Pop!_OS 20.04, clone the repo to a local folder, and run the bootstrap.sh
script from the command
line. The bootstrap script will automatically download and configure software to get you up and running quickly.
sudo apt install -y git
git clone https://github.com/bneff84/pop-os-bootstrap
./pop-os-bootstrap/bootstrap.sh
- Valet Linux - Lightning fast, low-memory local development using PHP/Nginx.
- OpenConnect 8 - Command-line VPN Utility with GlobalProtect Support.
- DBeaver - Database Management GUI for many popular databases.
- Gnome Evolution - Arguably the best Mail/Calendar client for Linux distros. Supports Microsoft Exchange right out of the box.
- Magento Cloud CLI Tool - Used for working on Magento Cloud Projects
- sshmenu - Handy tool for saving SSH connections for easy use later. Add your own connections in
~/.config/sshmenu/config.json
- MySQL Server - SQL-based RDBMS
- Redis - Lightning fast in-memory object/data caching.
- Git - Distributed version control system. If you're not using this for your projects, you're doing it wrong.
- Composer - Package Manager for PHP Projects
- PHP 7.3, 7.2, 7.1 and 5.6 - My favorite web development language :)
- Node JS - Javascript-based server side processing language.
- Node Version Manager(NVM) Allows the use of multiple versions of node at once.
- Postman Hands-down the best API tool I've worked with in my career.
- MailHog Capture local email relay to test email functionality during local development. Access the webmail interface at: http://localhost:8025/
This bootstrap script comes with some helper scripts and will install a few others long the way. These helper scripts are
symlinked to /usr/local/bin
and should be available for use in any terminal window.
The n98-magerun script. AKA the missing CLI for Magento 1. Installed by default
and globally accessible. If you ever need to update this, just download a new version to {bootstrap_root}/helpers/magerun
The n98-magerun2 script. AKA the improved CLI for Magento 2. Installed by default
and globally accessible. If you ever need to update this, just download a new version to {bootstrap_root}/helpers/magerun2
The wp-cli script. AKA the missing CLI for Wordpress. Installed by default and globally accessible.
If you ever need to update this, just download a new version to {bootstrap_root}/helpers/wp-cli
To quickly run all your "after pull" tasks on any Magento project (composer install, setup:upgrade, etc). Auto-detects the current version of Magento being used and handles all the standard upgrade tasks for that version.
To quickly clear all appropriate caches, generated files, etc in both Magento 1 and Magento 2, use this command. It should be run from the Magento root, and will auto-detect the Magento version in use and clear all appropriate caches.
To change PHP versions, use the php-version
helper script which will allow you to easily swap between PHP versions for
both valet (FPM) and CLI. If you ever need to change just the CLI version for any reason, you can do this with the
sudo update-alternatives --set php /usr/bin/php7.1
command. Just swap out 7.1
for the version you'd like to use
(it has to already be installed).
I connect to a GlobalProtect VPN for my current job, so this bootstrap script includes some setup to allow this to work on Pop!_OS for me out of the box. If you use a GlobalProtect VPN with web-based authentication, this should work for you as well, but I've only tested it with my own personal use case.
To connect to the VPN, open a new terminal window and run the vpn-connect
helper included with this bootstrap script.
This will open a WebKit headless browser window via the gp-saml-gui.py
helper script
, which will allow you to authenticate using web-based auth. The helper will grab the authentication cookie returned by your
web-based sign-on provider and pass it to the OpenConnect CLI call to log you into the VPN.
The vpnc-script
included has been altered from the version packaged with OpenConnect, and should be used. It resolves
a compatibility issue that prevented the VPN's DNS servers from taking precedence over the ones defined by the local
network since valet-linux
installs dnsmasq
which is used as your sole DNS server. This change forces strict ordering
for dnsmasq's downstream DNS servers and makes sure the VPN DNS servers are first on that list.
The vpn-connect
script now saves your last used gateway so you can run the command without needing to type the gateway
each time you connect. For your first run, use vpn-connect portal.example.com
and then on subsequent connections you
can simply vpn-connect
to use the last used gateway.
While I've included most of the "major" software, there are some packages that are not automatically installed, but
are very helpful programs to improve the development experience. Pop_OS! Sits on top of Ubuntu, which is Debian based.
So in general, any .deb
package installer should work and any software you may use on Ubuntu should be
compatible.
- GitKraken - Git GUI, Merge/Diff Tool, Repo Browser
- JetBrains Toolbox - Simple Widget-like Utility for managing/installing JetBrains software like PHPStorm and other IntelliJ IDEA Platform tools
- Google Chrome - Google's Web Browser based on Chromium - Don't forget you can "install" many web-applications built using PWA architecture (like Office 365/Outlook) so they run like native apps
- Slack - Work chat for your whole team!
- Ksnip - Screenshot utility with quick markup features (compare to Monosnap)
- Pop!_Shop - Basically a GUI for the command line package manager. Allows you to browse available software and install
or remove programs. Definitely worth a look for quick applications you might need access to without downloading a
.deb
installer.
Pop! comes with a lot of helpful keyboard shortcuts built in right off the bat. Many of these provide similar functionality to that of a certain fruit-based computer. An up-to-date listing of these can always be found on the Pop!_OS Website but some of the more common ones are outlined here. Your "super" key is the "Windows" key on most US keyboards.
Tap the Super Key
- Activities Overview - Shows thumbnails of all open windows and allows global searchSuper + Tab
- Switch between active applications (similar to alt-tab on windows)Super + Grave
- Switch between windows in the current application. For the uninitiated, the "grave" is the ` symbol on the ~ keySuper + V
- Open/Close Calendar/Notifications TraySuper + T
- Open a new Terminal windowSuper + Up Arrow
/Super + Down Arrow
- Change your virtual desktop workspaceCtrl + Super + Up Arrow
- Maximize/Restore current window on current workspaceCtrl + Super + Left Arrow
/Ctrl + Super + Right Arrow
- Move window to left/right half of the current workspaceCtrl + Super + Shift + Left Arrow
/Ctrl + Super + Shift + Right Arrow
- Move window left/right to the next display (multiple monitors)
None
- Change bootstrap.sh to be able to run incremental updates to the system as well as the initial install by compartmentalizing the functionality into routines
- Look into a way to configure
dnsmasq
to automatically map all local.x.x URLs into the local environment instead of using .test - Add a single "magerun" helper which auto-detects the magento version and runs the appropriate underlying tool
- Add php.ini configurations to set the default memory limit/other settings to proper values for Magento
- Remove Evolution as outlook 365 has a PWA that can be installed via Chrome and works much better than Evolution does