etc | ||
modules/guix-punk | ||
.dir-locals.el | ||
.envrc.sample | ||
.gitignore | ||
.guix-authorizations | ||
.guix-channel | ||
manifest.scm | ||
README.org |
Overview
The guix channel for all solarpunk packages and services!
Authentication
To set up automatic authentication, run the following:
mkdir -p .git/hooks # Optional, but ensures that hooks will be installed automatically
git pull origin keyring:keyring
guix git authenticate e5386665c5b75c317a9073cfb990b49706318fcf 1086326DE207068C1C025129A64F41345C7400AF
If you are adding this channel to your guix channels, use the following definition:
(channel
(name 'guix-punk)
(url "https://git.solarpunk.moe/Solarpunk/guix-punk.git")
(branch "main")
(introduction
(make-channel-introduction
"e5386665c5b75c317a9073cfb990b49706318fcf"
(openpgp-fingerprint
"1086 326D E207 068C 1C02 5129 A64F 4134 5C74 00AF"))))
A generated version of the definition can be found at etc/generated/guix-punk-channel.scm
Committing
Given that solarpunk.moe is an anarcho-communist collective, we love to have anyone who wishes able to contribute whatever they want to the group, for anyone to use. Here are some things to help you get started.
guix
This is a guix channel, thus you should probably be using guix when working with it.
direnv
It is highly recommended that you use direnv when hacking on the channel. The .envrc.sample should get you set up very quickly, and will set up your guix shell, and configure guix to load the modules directory automatically. Just copy .envrc.sample
to .envrc
.
guix direnvrc
By default, the direnv use_guix
function uses the old guix environment
command, which is deprecated. It would be a good idea to put the following in your direnvrc
(by default $XDG_CONFIG_HOME/direnv/direnvrc
):
use_guix()
{
eval "$(guix shell --search-paths "$@")"
}
authentication
If you are a contributor, please make sure that you have signed all of your commits with a GPG key. If you need help setting that up, either contact TakeV, or follow the instructions below.
setting up gpg
If you do not have a gpg key, create one. This example uses ed25519 as the keys are smaller (though still secure). If you want to use rsa, you can replace ed25519
with rsa3072
or rsa4096
(the later is more secure, though 3072 is good enough).
gpg --default-new-key-algo ed25519 --gen-key
Follow the prompts. Use the email you have configured git to use.
setting up signing
Once you have a key, set up git to sign your commits using that key. First, get the key.
gpg --list-secret-keys --keyid-format=long
That will get you any secret keys you have. For example, for TakeV:
sec rsa3072/640A6795ECDAAC2F 2022-02-20 [C] [expires: 2026-10-19]
908EF02651C362EC776ADA98640A6795ECDAAC2F
uid [ultimate] TakeV <takev@disroot.org>
ssb rsa3072/A64F41345C7400AF 2022-02-20 [S] [expires: 2026-10-19]
ssb rsa3072/D7C59303CECD5F44 2022-02-20 [E] [expires: 2026-10-19]
ssb rsa3072/59B3307AECE32267 2022-02-20 [A] [expires: 2026-10-19]
Copy the value in the row labeled [S]
, in the second column, after the slash. In the example above, it would be A64F41345C7400AF
.
Run the following, using your keyid:
gpg config user.signingkey <YOUR KEY ID HERE>
gpg config commit.gpgsign true
You should be all set!
getting added an authorized committer
To get added as an authorized committer, talk to an existing committer (someone who is currently registered in .guix-authorizations). You will need to send them your public key.
If you are the one being talked to about getting added:
- Add the new entity's key to the keyring branch, using the
NAME.key
pattern. - Add their signing key fingerprint to .guix-authorizations.
the readme
Parts of this README use org-babel-tangle
to automatically generate files as a matter of convenience. If you change any of the source code blocks, it is probably a good idea to run tangle, just in case.
Tangled files should go into the generated directory.