Linux tools and tips

Linux is our preferred operating system (however we also allow Apple Macs running macOS), and developers are highly encouraged to run PopOS!. Bear in mind it is assumed you are capable of self-support when running Linux - there is a #linux channel in Slack where one can exchange tips and tricks, but it is not yet intended as an official helpdesk resource.

The following is a guide to go over the basics of what is recommended for installation to get you up and running as quickly as possible.

  • Not everything listed here may apply to your use case.
  • This document will not cover the customization desired for your own personal configuration and setup of your desktop/window manager/etc.
  • This guide is intended to be very generic. Be aware package names listed here may be named differently on your distro of choice.
  • And as always, there are multiple ways to do many things, so if you have a better preference or are more familiar with another method, feel free to do so and contribute back to this document.

Basic Setup

Outside of the basics listed here for all laptop and desktop systems, there are a few additional steps required for Linux. Currently, the recommended laptop for Linux is a System76, Framework, or Thinkpad running PopOS!.

PopOS! utilizes Full Disk Encryption (FDE) out of the box, and is recommended. Additionally we have a PopOS setup script available at https://gitlab.com/brmbl-io/devbox

These instructions assume that setup, so for alternate choices in hardware or Linux distribution it is recommended you use this as a general guideline but adapt as needed.

General Applications

  • Enable the firewall with the following command:

    $ sudo ufw enable

  • The prompt will respond with “Firewall is active and enabled on system startup”.

  • Some common applications to install include Google Chrome, Slack, and Zoom. Not all may be available via the normal Ubuntu repository, but you can download them via their respective sites with up-to-date installation instructions:

Security and Compliance

  • Full Disk Encryption
    • Comes Out of the box with PopOS, if you use the whole disk
    • If you are running dual boot - see these instructions
  • Install the Drata Agent
  • Enable Updates
  • Antivirus
    • sudo apt-get install clamav
    • To run your first scan: sudo clamscan --max-filesize=3999M --max-scansize=3999M --exclude-dir=/sys/* -i -r /

Engineering/coding tools

  • It’s advised to have some sort of version manager for programming languages as what’s supplied by repos is typically not sufficient
    • asdf is pretty good, and usable across many platforms
      • This project includes a large amount of plugins to control various packages as well as languages that you’d need
  • Other common packages - this list includes things that always appear to be required no matter what realm of work you are in:
    • gcc
    • git
    • libereadline-dev
    • libssl-dev
    • make
  • Abide by our security practices:

Production engineering

  • As a Production Engineer, we’ll need some common tooling
  • Other important packages:
    • gnupg2
    • pwgen
    • yubikey-personalization
  • If you chose to utilize asdf as mentioned above, install a few plugins to prep yourself to be ready to install a few tools in the future:
    • asdf plugin-add kubectl
    • asdf plugin-add golang
    • asdf plugin-add pulumi
  • Then you’ll need to find out which version of the above needs to be installed
    • Check the appropriate repos or ask someone e.g.
    • asdf install pulumi 3.13.0

Development

  • If you chose to utilize asdf as mentioned above, install a few plugins to prep yourself to be ready to install a few tools in the future:
    • asdf plugin-add erlang
    • asdf plugin-add elixir
    • asdf plugin-add nodejs
    • asdf plugin-add yarn
    • asdf plugin-add postgres
  • Then you’ll need to find out which version of the above needs to be installed
    • Check the appropriate repos or ask someone e.g.
    • asdf install erlang 24.0.6.

Troubleshooting

Here’s a list of common situations that sometimes prove to be problematic on linux. You’ll want to ensure these components work as desired:

  • Audio through various types of headphones
  • Video capturing - Obs, Zoom video and Zoom screen sharing
  • Display - screen resolution or video card related issues