This is an Ansible playbook meant to configure a Manjaro OS (Arch Linux distribution) GNOME 3 desktop. It should run locally after a clean OS install.
This playbook follows the Manjaro community recommendation when installing the additional software packages from the Arch User Repository:
- Using Arch Linux Package Manager pacman to install Arch Linux official packages
- Using the command line Pamac for a more automated way of installing AUR packages
- Using a bespoke script install-aur.sh to provide a "manual installation" for AUR packages
- Manjaro/Arch Linux Ansible Provision
Before applying the changes against your desktop/laptop, being able to test against a Docker container or a Vagrant VM machine allows to test the playbook safer, quicker and often.
Since this is a Manjaro/Arch Desktop setup, having a Virtual Box to be able to login and inspect the UI is somewhat useful, although this is still an experimentation as the preferred approach was to opt for a Docker container.
The Vagrant VM box is based on a Manjaro Gnome X64 21.0 box. This should not be an issue if you want the latest Manjaro release, as the playbook will upgrade the VM to the lastest Manjaro release version.
Install and configure Vagrant & Oracle VirtualBox locally
# if from a different Linux distribution or on a Mac make sure to install Vagrant and Oracle
# if you are using a Manjaro/Arch, install and configure Vagrant & Oracle VirtualBox locally
ansible-playbook playbook.yml -l localhost --extra-vars="user_name=USERNAME user_git_name=GIT_USERNAME" --ask-become-pass --tags virtualization
#Provision the Vagrant box
vagrant up --provision
# Run Ansible playbook against the Vagrant VM
ansible-playbook playbook.yml -l testbuild --extra-vars="user_name=USERNAME user_git_name=GIT_USERNAME user_email=EMAIL" --ask-become-pass
ansible-lint
ansible-playbook playbook.yml -l localhost --extra-vars="user_name=USERNAME user_git_name=GIT_USERNAME user_email=EMAIL" --ask-become-pass
ansible-lint
ansible-playbook -vvvv playbook.yml -l localhost --extra-vars="user_name=USERNAME user_git_name=GIT_USERNAME user_email=EMAIL" --ask-become-pass
ansible-lint
ansible-playbook -v playbook.yml -l localhost --extra-vars="user_name=USERNAME user_git_name=GIT_USERNAME user_email=EMAIL" --ask-become-pass --tags dev-tools
Roles supported:
Roles | Description |
---|---|
base | Install Linux util libraries, python-pip, xinput, terminator, snap and zsh |
users | Setup user accounts |
printers | Install printer drivers |
browsers | Install tor, google-chrome and chromedriver |
audio-tools | Install audacity |
dev-tools | Install tesseract, jq, xq, docker, docker-compose, go, nodejs, npm, nvm, jre8, jre10, maven, clojure, leiningen, sbt, scala, minikube, kubectl, kubectx, kubefwd, hub and heroku |
cloud-tools | Install google-cloud-sdk |
editors | Install vim, emacs, gimp, Intellij + JetBrains Toolbox, Goland, Visual Studio Code and Xmind |
media | Install Spotify and Peek (GIF Screen recorder) |
multimedia | Install gimp, darktable and kdenlive |
gnome | Configure the desktop environment |
comms | Install communication/Instant Messaging apps: signal-desktop, slack-desktop |
aur | Install Arch User Repository libraries |
security | Install clamav, clamtk, ufw, ufw-extras and gufw |
virtualization | Install vagrant, virtualbox and virtualbox-host-modules |
Example on how to install only browsers:
ansible-playbook playbook.yml --extra-vars="user_name=USERNAME user_git_name=GIT_USERNAME user_email=EMAIL" --ask-become-pass --tags browsers
Find out the name of the USB drive
lsblk
Flash the ISO image to the USB drive
dd bs=4M if=/path/to/iso of=/dev/sdx status=progress oflag=sync
Change boot order and install Manjaro.
2. Refresh pacaman mirrors, the copy of the master package database from the server and install ansible
, git
and xclip
After installing Manjaro, ensure that ansible, git and xclip are installed
sudo pacman-mirrors -f && sudo pacman -Syyu
sudo pacman -S ansible ansible-lint git xclip --noconfirm
Generate a new SSH Key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Start the ssh-agent in the background
eval "$(ssh-agent -s)"
Add SSH Key to the ssh-agent
ssh-add ~/.ssh/id_rsa
Copy the SSH public key to the clipboard
xclip -sel clip < ~/.ssh/id_rsa.pub
git clone git@github.com:PauloPortugal/manjaro-playbook.git
cd manjaro-playbook
On the command line run
gcloud init
gcloud auth login
For more information about Gcloud command lines read https://cloud.google.com/sdk/gcloud
- It would be nice to include more audio-tools.