Unverified Commit 20832d59 authored by Herwig Hochleitner's avatar Herwig Hochleitner Committed by GitHub
Browse files

nixos/forgejo: changelog and migration instructions (#267248)



* nixos/forgejo: changelog and migration instructions

* nixos/forgejo/docs: clarify sentence

Co-authored-by: default avatarTrolli Schmittlauch <schmittlauch@users.noreply.github.com>

* nixos/forgejo/docs: document migration via gitea impersonation

* nixos/forgejo/docs: note about url change on migration

* nixos/forgejo/docs: note about migration (non-)requirement

* nixos/forgejo/docs: header ids

* nixos/forgejo/docs: clarify release notes entry

Co-authored-by: default avatarEmily <git@emilylange.de>

* nixos/forgejo/docs: improve manual entry

Co-authored-by: default avatarEmily <git@emilylange.de>

* nixos/forgejo/docs: move changelog line to the middle of the section

as noted <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

---------

Co-authored-by: default avatarTrolli Schmittlauch <schmittlauch@users.noreply.github.com>
Co-authored-by: default avatarEmily <git@emilylange.de>
parent 139ccb05
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -104,6 +104,8 @@

- [eris-server](https://codeberg.org/eris/eris-go). [ERIS](https://eris.codeberg.page/) is an encoding for immutable storage and this server provides block exchange as well as content decoding over HTTP and through a FUSE file-system. Available as [services.eris-server](#opt-services.eris-server.enable).

- [forgejo](https://forgejo.org/), a git forge. Previously deployed as a drop-in replacement package in the [gitea module](#opt-services.gitea.package). Available as [services.forgejo](#opt-services.forgejo.enable). See migration instructions in the [NixOS manual](#module-forgejo) on how to migrate your forgejo instance using [`services.gitea.package = pkgs.forgejo`](#opt-services.gitea.package) to [`services.forgejo`](#opt-services.forgejo.enable).

- hardware/infiniband.nix adds infiniband subnet manager support using an [opensm](https://github.com/linux-rdma/opensm) systemd-template service, instantiated on card guids. The module also adds kernel modules and cli tooling to help administrators debug and measure performance. Available as [hardware.infiniband.enable](#opt-hardware.infiniband.enable).

- [zwave-js](https://github.com/zwave-js/zwave-js-server), a small server wrapper around Z-Wave JS to access it via a WebSocket. Available as [services.zwave-js](#opt-services.zwave-js.enable).
+79 −0
Original line number Diff line number Diff line
# Forgejo {#module-forgejo}

Forgejo is a soft-fork of gitea, with strong community focus, as well
as on self-hosting and federation. [Codeberg](https://codeberg.org) is
deployed from it.

See [upstream docs](https://forgejo.org/docs/latest/).

The method of choice for running forgejo is using [`services.forgejo`](#opt-services.forgejo.enable).

::: {.warning}
Running forgejo using `services.gitea.package = pkgs.forgejo` is no longer
recommended.
If you experience issues with your instance using `services.gitea`,
**DO NOT** report them to the `services.gitea` module maintainers.
**DO** report them to the `services.forgejo` module maintainers instead.
:::

## Migration from Gitea {#module-forgejo-migration-gitea}

::: {.note}
Migrating is, while not strictly necessary at this point, highly recommended.
Both modules and projects are likely to divide further with each release.
Which might lead to an even more involved migration.
:::

### Full-Migration {#module-forgejo-migration-gitea-default}

This will migrate the state directory (data), rename and chown the database and
delete the gitea user.

::: {.note}
This will also change the git remote ssh-url user from `gitea@` to `forgejo@`,
when using the host's openssh server (default) instead of the integrated one.
:::

Instructions for PostgreSQL (default). Adapt accordingly for other databases:

```sh
systemctl stop gitea
mv /var/lib/gitea /var/lib/forgejo
runuser -u postgres -- psql -c '
  ALTER USER gitea RENAME TO forgejo;
  ALTER DATABASE gitea RENAME TO forgejo;
'
nixos-rebuild switch
systemctl stop forgejo
chown -R forgejo:forgejo /var/lib/forgejo
systemctl restart forgejo
```

### Alternatively, keeping the gitea user {#module-forgejo-migration-gitea-impersonate}

Alternatively, instead of renaming the database, copying the state folder and
changing the user, the forgejo module can be set up to re-use the old storage
locations and database, instead of having to copy or rename them.
Make sure to disable `services.gitea`, when doing this.

```nix
services.gitea.enable = false;

services.forgejo = {
  enable = true;
  user = "gitea";
  group = "gitea";
  stateDir = "/var/lib/gitea";
  database.name = "gitea";
  database.user = "gitea";
};

users.users,gitea = {
  home = "/var/lib/gitea";
  useDefaultShell = true;
  group = "gitea";
  isSystemUser = true;
};

users.groups.gitea = {};
```
+1 −0
Original line number Diff line number Diff line
@@ -677,5 +677,6 @@ in
    };
  };

  meta.doc = ./forgejo.md;
  meta.maintainers = with lib.maintainers; [ bendlas emilylange ];
}