* Overview The guix channel for all solarpunk packages and services! * Authentication To set up automatic authentication, run the following: #+begin_src sh mkdir -p .git/hooks # Optional, but ensures that hooks will be installed automatically git pull origin keyring:keyring guix git authenticate e5386665c5b75c317a9073cfb990b49706318fcf 1086326DE207068C1C025129A64F41345C7400AF #+end_src If you are adding this channel to your guix channels, use the following definition: #+begin_src scheme :tangle etc/generated/guix-punk-channel.scm (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")))) #+end_src A generated version of the definition can be found at [[file:etc/generated/guix-punk-channel.scm][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 [[https://direnv.net][direnv]] when hacking on the channel. The [[file:.envrc.sample][.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=): #+begin_src sh use_guix() { eval "$(guix shell --search-paths "$@")" } #+end_src ** 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). #+begin_src sh gpg --default-new-key-algo ed25519 --gen-key #+end_src 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. #+begin_src sh gpg --list-secret-keys --keyid-format=long #+end_src That will get you any secret keys you have. For example, for TakeV: #+begin_src sec rsa3072/640A6795ECDAAC2F 2022-02-20 [C] [expires: 2026-10-19] 908EF02651C362EC776ADA98640A6795ECDAAC2F uid [ultimate] TakeV 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] #+end_src 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: #+begin_src sh gpg config user.signingkey gpg config commit.gpgsign true #+end_src 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 [[file:.guix-authorizations][.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 [[file:.guix-authorizations][.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 [[file:etc/generated][generated]] directory.