jessebot / onboardme

💻 Beautiful cross-platform personal onboarding for your daily driver, or docker image, running macOS or Debian based distros across amd64/arm64 :blue_heart:
https://jessebot.github.io/onboardme/onboardme
GNU Affero General Public License v3.0
18 stars 1 forks source link
automation debian desktop-setup dotfiles foss-transition linux macos neovim onboarding personal-automation python3 rcfiles

💻 onboardme

Get your daily driver, or personalized 🐳 container, just the way you like it! From dot files management, to package installation, to setting up neovim, to other little features you didn't know you needed, onboardme intends to save you time with initializing and maintaining your personal evironments ✨

screenshot of color samples and image of dog using a computer using sixel

Features

Keep your Dot Files Up To Date Across multiple systems

`onboardme` can manage your [dot files] using a git by turning your home directory into a repo. We even provide default dot files, so you don't have to manage them - The [default dot files] are open source, and the maintainers use these themselves - They cover a lot of common apps/tools you probably want anyway - They have consistent colorschemes accross different CLI/TUI programs 😃 - They set all the helpful BASH aliases you could need (zsh support coming soon)

Package management accross multiple package managers

We install and upgrade libraries and apps using common package managers. We also provide a currated list of default packages. - checkout the [default packages] - supports `brew`, `apt`, `snap`, `flatpak`, and `pip` (and you can add your own 😄) - group together packages for different kinds of environments - onboardme provides default package groups: - default (no desktop GUI apps installed by default, always installed) - macOS (default apps for _macOS only_ apps, always installed on macOS) - gui (default GUI apps for Linux desktops, optionally installed) - devops (devops related tooling, optionally installed) **Linux ARM Users NOTE**: `brew` is currently [unsupported on linux/arm64](https://docs.brew.sh/Homebrew-on-Linux#arm-unsupported), and as we'd have to compile everything from source anyway, we don't support running the brew package manager via onboardme on linux/arm64 or (AArch64) at all right now._ We do have a docker image ([jessebot/onboardme:latest-arm](https://hub.docker.com/r/jessebot/onboardme)) optimized for arm though that you can run on AArch64 and it's perfect for a dockerized dev environment on an M1 or later mac or any other ARM 64 device that runs docker :)

NeoVim Plugin Installtion and Updates

`onboardme` keeps your neovim plugins installed and up to date with [lazy.nvim] under the hood.

Why no vim though?

If you haven't already made the switch from Vim to [NeoVim], you can try out NeoVim today with `onboardme` :D We used to support both neovim _and_ vim, but these days none of the primary developers of this repo use pure vim anymore, so we can't ensure it's up to standards. All of your knowledge from vim is still helpful in neovim though, and we highly recommend switching as neovim has a lot more features and a very active plugin community :) NeoVim maintains a guide on how to switch from vim [here](https://neovim.io/doc/user/nvim.html#nvim-from-vim).

Easy yaml config files using XDG Base Directory Spec

We use use [XDG Base Directory Spec] for config files, so you always know where they are :) Config files are in `$XDG_CONFIG_HOME/onboardme/`, or `~/.config/onboardme/` if `$XDG_CONFIG_HOME` is not defined. Learn more about configuration in the [config docs](https://jessebot.github.io/onboardme/onboardme/getting-started).

Docker image for an on-the-go dev workspace

The docker image is built nightly, and on push to `main` via GHA. The base image is `debian:bookworm`, but we will rollout support for Ubuntu down the line :) See the [dockerhub page](https://hub.docker.com/r/jessebot/onboardme) for more info!

Other optional configurations

- Enable touchID for sudo on macOS - Add your user to the docker group - Install [nerdfonts](https://www.nerdfonts.com) (defaults to mononoki and Symbols Only) - Install [cronjobs](https://github.com/jessebot/onboardme/pull/276) to keep everything up to date everywhere, everyday :)

Screenshots

Example of onboardme --help

screenshot of full output of onboardme --help

Examples of the terminal after onboardme runs

### neovim screenshot of neovim with colors ### Powerline and ls screenshot of powerline and lsd ### Powerline with git screenshot of powerline and git colors ### Image and colors ### Python virtual env in powerline and cat screenshot of using bat and python virtual env in powerline

Installation

Install Locally

You'll need curl, brew, git, and Python 3.12 to get started. We have a setup script to install those (except curl) and help you get your environment to the XDG spec under Locally. For docker, see the section below.

Local prereq install script .
curl, a pre-prereq ```bash # Debian/Ubuntu may not have curl installed depending on where you are, so this will install it for you type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y) ```
Make sure you have sudo access, otherwise we won't be able to install certain things. The quickest way to get started on a fresh macOS or distro of Debian (including Ubuntu) is: ```bash # this will download setup.sh to your current directory and run it /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/jessebot/onboardme/main/setup.sh)" ``` #### Linux Source your updated `.bashrc`: ```bash # for linux source ~/.bashrc ``` #### MacOS source your updated `.bash_profile`: ```bash bash source ~/.bash_profile ``` You will still have to set your default shell to BASH to if you want to take advantage of the default dot files for onboardme. You can do that like this: ```bash brew install bash sudo -i # if you're on an M1 or newer: echo "/opt/homebrew/bin/bash" >> /etc/shells && exit chsh -s /opt/homebrew/bin/bash $(whoami) # if you're on a mac earlier than the M1: echo "/usr/local/bin/bash" >> /etc/shells && exit chsh -s /usr/local/bin/bash $(whoami) ``` After that, you can also set the shell directly in your terminal app via the settings.

If you've already got all the above prereq on your machine, you can just do:

# should also work with pipx, if you'd like to use that instead
pip install --user --upgrade onboardme

Using the Docker image

Read more about our docker tags and how to use them at jessebot/onboardme on DockerHub.

Usage

Learn more about configuration in the config docs, but by default you can get started with:

# this will display the help text for onboardme
onboardme --help

# Running this won't overwrite any existing dot files, but it may add new ones
# and it may install new packages. Don't run this till you've looked at the files
# in ~/.config/onboardme/
onboardme

From here, if you want to completely wipe your existing dot files for a fresh start with with onboardme, you can run:

# WARNING: This will overwrite your local dotfiles, including your .bashrc and .bash_profile
# can also be done with: onboardme -O
onboardme --overwrite

You can read more in depth at the Getting Started Docs 💙! There's also more docs on basically every program that onboardme touches.

Upgrades

If you're on python 3.12, you should be able to do:

pip3.12 install --upgrade onboardme

Under the Hood

Made and tested for these operating systems:

Tested on Ventura 13.4 with a 13-inch M1 Macbook pro and a 13-inch AMD 1,4 GHz Quad-Core Intel Core i5 2020 Macbook Pro Tested only on Debian Bookworm (debian:bookworm) Tested only on ubuntu servers

And optomized for the following programs:

made-with-neovim made-with-python made-with-bash made-with-powerline

Built using these great tools:

rich python library logo with with yellow snake nerd-fonts: Iconic font aggregator, collection, and patcher

Status

</a> <br></br>

Actively used by the maintainers daily, but software is always changing, so please report 🐛 in the GitHub issues, and we will collect them, and release them back into the wild, because we are vegan and nice. (Kidding, we will help! 😌)

:star: If you like this project, please star it to help us keep motivated :3

Contributors

We love contributors! Feel free to open a pull request, and we will review it asap! :)

jessebot
JesseBot
cloudymax
Max!

Shameless plugs for other projects

Get running on a machine using a bootable USB stick with pxeless.

Get started with virtual machines and QEMU with scrap metal.

Get started with testing kubernetes on metal with smol k8s lab.