Configuration

CLI

For the full help, you can check out the --help option. If anything there is unclear, please feel free to open up an issue and we can clear it up for you and make the help text, more helpful :)

onboardme --help
Full Help Text

screenshot of full output of onboardme --help

Config files

onboardme uses a config.yml in its installation directory that has defaults. Those defaults can be altered per machine by creating a config file like:

~/.config/onboardme/config.yml
---
# ______________________________________________________________ #
#         Config file for the onboardme cli command.             #
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
#  - If this files exists as: ~/.config/onboardme/config.yaml    #
#    then its loaded instead of the default config               #
# -------------------------------------------------------------- #


log:
  # Full path to a file you'd like to log to. Creates file if it doesn't exist
  file: ""
  # what level of logs to output (debug, info, warn, error)
  level: "warn"

# steps refer to a specific function in the list of functions we run
steps:
  # these are mac specific steps
  Darwin:
    - dot_files
    - packages
    - font_setup
    - neovim_setup
    - sudo_setup
  # these are linux specific steps
  Linux:
    - dot_files
    - packages
    - font_setup
    - neovim_setup
    - group_setup

dot_files:
  # personal git repo URL for your dot files, defaults to jessebot/dot_files
  git_url: "https://github.com/jessebot/dot_files.git"
  # the branch to use for the git repo above, defaults to main
  git_branch: "main"
  # this is where the actual git config for your dot files lives
  # it can't live in ~/.git because that will affect _everything_ under ~/
  git_config_dir: "~/.config/dot_files"
  # !!CAREFUL: runs a `git reset --hard`, which will overwite/delete files in
  # $HOME that conflict with the above defined git repo url and branch.
  # You should run the following to get the files that would be overwritten:
  # onboardme -s dot_files
  # if set to true, then using onboardme -O will toggle it back to false
  overwrite: false

# This is the basic package config.
package:
  # Remove any of the below pkg managers to only run the remaining pkg managers
  managers:
    # macOS specific steps
    Darwin:
      - brew
      - pip3.12
    # Debian/Ubuntu specific steps
    Linux:
      - apt
      - brew
      - pip3.12
      - flatpak
      - snap
  # list of extra existing packages groups to install
  groups:
    default:
      # basic tui stuff to have a nice time in the terminal :)
      - default
    # move these package.groups.default to always install them
    optional:
      # setting up more python data science specific tooling
      - data_science
      # kubernetes and docker tools
      - devops
      # gaming always installs gui
      - gaming
      # freetube and other gui applications
      - gui
      # this configures neomutt and offlineimap
      - mail
      # sets up useful music tui stuff for spotify and youtube
      - music
      # things like zoom and slack
      - work

If the comments in this configuration file are unclear, please feel free to open up an issue and we’ll help! :)

We also use a package file called packages.yml which you can also place in your ~/.config/onboardme directory, to take precedence over our defaults.

Config Sections and Explanations

Steps

Steps refer to a specific function in the list of functions we run and can be configured for both macOS and Linux seperately. These steps include:

  • setting up dot files in your home directory (.bashrc, etc)
  • managing packages using package managers (brew, pip3.12, apt, snap, flatpak)
  • installing fonts
  • setting up basic TUI IDE, neovim
  • setting up groups

They can be configured via the steps parameter in the config.yml above, or via the the cli like:

# this runs only the dot_file management step
onboardme -s dot_files

or for multiple steps:

# this runs both the dot_file management step and the neovim setup step
onboardme -s dot_files -s neovim_setup

If you try to run a step that requires another step, we will automatically run that step so for instance, to set up neovim, we need dot files. e.g.

This command: onboardme -s neovim_setup

In the background becomes: onboardme -s dot_files -s neovim_setup

dot files

The dot files for your home directory are installed from a git URL and branch that you can configure either via the config file, or the cli. If your local files conflict with the files in the repo, we will not overwrite them by default. If you always want your local dot files overwritten, you can pass in the -O switch or --overwrite option or set overwrite in your local ~/.config/onboardme/config.yml.

onboardme cli

# run onboardme with a custom git url and branch that overwrites existing files
# and use the ~/.config/dot_files dir for storing the git config for the dot files
onboardme --git_url https://github.com/jessebot/dot_files.git \
          --git_branch main \
          --git_config_dir ~/.config/dot_files \
          --overwrite

config.yml

dot_files:
  git_url: "https://github.com/jessebot/dot_files.git"
  git_branch: "main"
  overwrite: true

Package Management

All of the packages are installed using package managers, and each package manager has groups of packages they can install. You can specify specific package managers and package groups via the config.yml file, or via the cli.

By default, we install the default package groups for all package managers. This includes everything you need for a basic cli experience and a slim ide.

The default package managers for macOS and Linux are: brew and pip3.12

For Linux, we also include: apt, snap, and flatpak

See the examples below:

Install the “default” and “gui” package groups

This would install the default packages for the basic cli experience and a slim ide PLUS GUI tools, like vlc and freetube.

onboardme cli
# can also be: onboardme -g default -g gui
onboardme --pkg_groups default --pkg_groups gui
config.yml
package:
  groups:
    default:
      - default
      - gui

Only install the “devops” package group for only the brew package manager

This will install only additional tooling for devops work. Note: This will not install/upgrade the default package group.

onboardme cli
# can also be: onboardme -p brew -g devops
onboardme --pkg_managers brew --pkg_groups devops
config.yml
package:
  managers:
      Darwin:
        - brew
      Linux:
        - brew
  groups:
    default:
      - devops
    # none of the packages below will be run be default, but can specified via the cli
    optional:
      - gui
      - work