No description
Find a file
2024-11-11 18:01:36 -05:00
etc Use org-babel-tangle to generate a channel declaration 2024-11-11 17:55:50 -05:00
modules/guix-punk add forgejo-service-type 2024-11-11 01:48:55 -05:00
.dir-locals.el Remove nonguix info from .dir-locals.el 2024-11-10 22:09:45 -05:00
.envrc.sample Add modules to guix path in the .envrc.sample 2024-11-10 22:22:43 -05:00
.gitignore add forgejo-service-type 2024-11-11 01:48:55 -05:00
.guix-authorizations Update guix-authorizations 2024-11-10 22:05:54 -05:00
.guix-channel Move channel packages into modules subdir 2024-11-10 22:03:07 -05:00
manifest.scm add readme info for getting started 2024-11-11 17:35:49 -05:00
README.org Run spellcheck. XD 2024-11-11 18:01:36 -05:00

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:

  1. Add the new entity's key to the keyring branch, using the NAME.key pattern.
  2. 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.