Your one-stop-cake-shop for everything Freshly Baked has to offer
Nix 63.3%
Shell 25.4%
Rust 7.5%
QML 1.8%
HTML 0.2%
Python 0.1%
Other 1.7%
548 49 0

Clone this repository

https://tangled.org/freshlybakedca.ke/patisserie
git@tangled.org:freshlybakedca.ke/patisserie

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Welcome to the patisserie#

~ your one-stop-cake-shop for everything Freshly Baked has to offer ~

Structure#

Patisserie is a monorepo, which means there are multiple projects hosted here. Here's a list!

Project Shortcode Description
menu m Our URL shortening and golinks ("Quickly get to what you want to order")
packetmix pm Our NixOS configurations ("All you need to bake a delicious system")
sprinkles s Our Niri widgets ("Add some decoration to your Niri desktop")

Projects are developed in individual directories, and have a workspace file in projects/${name} to help you clone them down with everything they need.

Shortcodes are used in commit messages as the first component of the area name in Conventional Commit style. For example, feature commits to PacketMix should start with something like feat(pm/...):. For commits that affect all areas, the special shortcode * is used.

Cloning a single project#

You may clone and push to patisserie via tangled as you usually would. If you'd like to clone only a single project, however, we provide a public josh proxy which can be used to filter your clone:

git clone https://git.freshlybakedca.ke/patisserie.git:workspace=projects/packetmix.git
# Swap out the "packetmix" at the end of the command for whatever project you want to clone

If you need to push then, as with tangled normally, you are required to use SSH.

Josh can push via SSH, but requires you to forward your SSH agent to authenticate your push:

# In ~/.ssh/config
Host git.freshlybakedca.ke
  User git
  ForwardAgent yes

When you've added this section to your ssh config, you can add a custom push URL to use SSH.

git remote set-url --push ssh://git@git.freshlybakedca.ke/patisserie.git:workspace=projects/packetmix.git
# Swap out "packetmix" at the end of the URL for whatever project you have cloned

Except for when creating branches, pushing will work as-normal for SSH clones.

Creating new branches#

When pushing to josh, creating branches won't work on a regular git push. This is because josh doesn't know what state you want the rest of the repository to be for your branch

You can tell josh by providing the base= push option like so:

git push origin HEAD:my-new-branch -o base=main

If you're using a git frontend (e.g. Jujutsu) which does not allow you to set push options, you may find it useful to temporarily set them through the git configuration while performing git operations. In Jujutsu, you might do that through these aliases:

[aliases]
josh-push-base-main = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption base=main && jj git push "$@"; git config --unset push.pushOption', '--' ]
josh-push-create = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption create && jj git push "$@"; git config --unset push.pushOption', '--' ]
josh-push-force = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption force && jj git push "$@"; git config --unset push.pushOption', '--' ]
josh-push-merge = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption merge && jj git push "$@"; git config --unset push.pushOption', '--' ]

You must make sure you always unset the push option, even if your push failed. Pushing with unexpected push options can cause accidental and annoying-to-fix actions to be taken on your behalf

Signing commits#

As josh rewrites commits, they will not be validly signed everywhere. We therefore recommend you turn off commit signing for patisserie or any subprojects which you clone down

For example,

git config commit.gpgsign false

or

jj config set --repo git.sign-on-push false