Git Product home page Git Product logo

pop-os-bootstrap's Introduction

Pop_OS! Bootstrap Project

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!

Installation

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

Included Software

  • 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/

Helper Scripts

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.

magerun

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

magerun2

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

wp-cli

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

mageafterpull

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.

mageclean

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.

php-version

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).

vpn-connect

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.

Recommended Software

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.

Useful Tips

Keyboard Shortcuts

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 search
  • Super + 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 ~ key
  • Super + V - Open/Close Calendar/Notifications Tray
  • Super + T - Open a new Terminal window
  • Super + Up Arrow/Super + Down Arrow - Change your virtual desktop workspace
  • Ctrl + Super + Up Arrow - Maximize/Restore current window on current workspace
  • Ctrl + Super + Left Arrow/Ctrl + Super + Right Arrow - Move window to left/right half of the current workspace
  • Ctrl + Super + Shift + Left Arrow/Ctrl + Super + Shift + Right Arrow - Move window left/right to the next display (multiple monitors)

Known Bugs

None

TODO (in no particular order)

  • 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

pop-os-bootstrap's People

Contributors

bneff84 avatar

Stargazers

 avatar Daniel Strunk avatar Sean Breeden avatar Josh avatar Jared avatar Mikel Bitson avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.