Basejump
Basejump automates the setup of apps, dotfiles, configs, and one-liners in Alipine Linux using Ansible
Install / Use
/learn @philcryer/BasejumpREADME
basejump
Basejump is a bash script that runs on Linux hosts that checks if Ansible is installed, if not it will install ansible, along with ansible-lint, and then run ansible to automate the setup and configuration of the host. Look in the ansible directory at main.yml and the files in tasks/ to see what it does to start.
what does it do?
Once run, basejump checks for, and then installs if they'er not present: ansible and ansible-lint, then ansible takes over and runs the following:
-
- Install base packages, generic across all Linuxes (see packages_installed)
- Install base packages, specifically for Alpine Linux (see packages_installed_alpine)
- Install base packages, specifically for Arch Linux (see packages_installed_arch)
- Install base packages, specifically for GNU/Debian Linux (see packages_installed_debian)
- Install base packages, specifically for Ubuntu Linux (see packages_installed_ubuntu)
- Install base packages, specifically for Fedora Linux (see packages_installed_fedora)
- This then calls the specific
tasks
-
- user.yml - setup the base user with the same groups and configuration, while varying details for different distros via
- base-config.yml - handles the setup of user specific dotfiles and configurations:
- gitconfig: install configuration file .gitconfig TIP - define
gitconfig_emailandgitconfig_namein group_vars/all.yml, then uncomment the two lines in this file to have it automatically populate - profile: install
.profileto user's home directory to define new$PATH - fish functions: define functions for the
fishshell, mainly to useneovimin place ofvi,vim, and evennvim
- gitconfig: install configuration file .gitconfig TIP - define
- neovim.yml - install and configuration via
.config/nvimusing LazyVim goodness - lazyvim.yml - install and configure LazyVim for neovim to have a great base to start with
- Nerd Font: install the Fira Code font from Nerd Fonts, then update the system's font cache so it's usable with Starship
- Starship: install and configure Starship, my favorite shell prompt
This creates a consistent base environment in Linux, regardless of the distribution.
what does it support?
- Alpine Linux (3.23+)
- CachyOS, based on Arch Linux (any)
- Debian (forky/testing/14+)
- Ubuntu (25.10+)
- Fedora (42+)
[!NOTE] some current distros have an older version of
neovim(0.11.2 and prior) in their repositories whichlazyVimdoesn't support, basejump currently targets:
Soon I want to add more Ansible logic for setting up and configuring a desktop environment, as my current Hyprland desktop manager's configs are very many and customized, not something I want to do over, and over, again across multiple hosts!
requirements
To run basejump you only need a supported version of Linux, with only minimal packages required:
- bash
- sudo -or- doas, which stands for "dedicated openbsd application subexecutor, but like anything developed by the OpenBSD team it's minimal, secure and preferred over the bloated sudo, which I rarely see anyone using fully anyway. Look sudo is useful, it can do a ton, but 99% of the time it's a blanket "use sudo, it's setup with NOPASSWD" which hardly seems smart.
usage
Checkout the code, change into the directory:
git clone https://github.com/philcryer/basejump.git
cd basejump
[!TIP] define your SSH and/or BECOME password in
$HOME/.ansible/become-pass, otherwise you will be prompted for those when Ansible needs them during the run
[!TIP] to include your GitHub username and email in
.gitconfig, editansible/group_vars/all.yml, uncomment and define the variables:gitconfig_nameandgitconfig_name
Look over what's going to be done by reading ansible/main.yml, then run basejump, which will automatically install Ansible if it's not already, and then hand it off to Ansible to do the syncing work
./basejump
action!
Check out the action! See the useless ascii art header! See how I've evolved over the years to (try) and make bash script output more palatable! Marvel at the multiple Linux distros supported out of the box! (Pull requests welcome )
<div align="center" border="0"> <picture> <source media="(prefers-color-scheme: dark)" srcset="img/screenshot.png"> <source media="(prefers-color-scheme: light)" srcset="img/screenshot.png"> <img alt="basejump script" src="img/screenshot.png"> </picture> </div>license
The MIT License
thanks
Related Skills
imsg
344.1kiMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.
oracle
344.1kBest practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
tmux
344.1kRemote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
lobster
344.1kLobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (s
