Skip to content

Caleb-T-Owens/Sherman

Repository files navigation

Sherman the shell config

Warning: There is LOTS of shell scripting that may delete EVERYTHING.

What is in sherman?

Sherman is a living mono-repo where I do my computing. Here is an overview of what is inside.

  • projects: The main home of projects in Sherman.
  • configsets: Contains configuration for most thinks on my macOs devices, including: Brew package management, NVM installation, Git configuration, Alacritty configuration, Emacs configuration, LinearMouse configuration, NeoVim configuration, SdkMan installation, WezTerm configuration, and ZSH configuration, Ghostty configuration & theme.
  • bin: Contains root scripts for controling Sherman.
    • clone: Runs project cloner inside my projects folder.
    • deploy: A script ran exclusivly on my miniPC to deploy it.
    • electron_deploy: Ran on a computer with SSH access into my miniPC to redeploy all the services on my miniPC (With minimal downtime!).
    • run: Re-applies the configsets and makes sure that any projects managed via project cloner are fetched. This is the main script I run after changing configs or when I want to sync my setup between different machines.
  • deploy: Contains scripts related to deploying my
    • electron: A little miniPC that runs some of the cto.je infastructure.
      • services/maybe: The docker setup I run for maybe. I don't actually use this anymore in favor of gnucash, but it is a handy project that I recommend checking out.
      • services/microblog_api: A pocketbase server for a microblog I was building, but have not yet finished.
      • services/penpot: An open source clone to figma that is pretty cool.
      • services/serverless: A second pocketbase server that doesn't have a fixed schema, that I use for quick experiments.
      • services/website3: The docker setup for deploying my core website at cto.je
      • services/whiteboard: A supporting service as part of my nextcloud setup, allowing me to have private cloud persisted excalidraw.
      • services/wiki: A mediawiki instance I host for note taking and thinks like that.

Why?

Sherman started out life as a simple dotfiles repo with a little bit of automation to move config files into their respective homes. Through quite a few iterations, it's turned into the mono-repo that it is today.

My initial motivation for using a mono-repo for computing was simply so that I don't ever loose any code again. Previously, I might start a project or idea, get something that half-way works, and then just leave it to rot. I never would bother to create a git repository. As a result, when changing hardware, often these "unimportant" experiments would get lost to time. By working in a mono-repo, everything is in version control by default, and easily pushable to any git server.

Is it a good idea? I think something interesting that has come out of computing inside a mono-repo is the ease of starting a small experiment and having some fun. I'm still expanding on the idea, but it feels like I'm following the unix dream of having little programs that can be composed together.

About

My bad idea for syncing app configuration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published