]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Migrate gemini capsule to user config
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 6 Oct 2023 12:56:57 +0000 (14:56 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 6 Oct 2023 15:05:06 +0000 (17:05 +0200)
deploy/flake.lock
flake.lock
flakes/flake.lock
systems/eldiron/gemini/default.nix
systems/eldiron/gemini/public/index.gmi [deleted file]

index 73e45f7d015f1b202717f1f86492f5d8924dfad7..07a54737086f141da4cdad511f2b15aeda61e59f 100644 (file)
       },
       "locked": {
         "lastModified": 1,
-        "narHash": "sha256-uXrrLvmLWqk4wm2wIJVvWKWbTzc//GSU70qdTy3NDzE=",
+        "narHash": "sha256-nEhIk4RloOuTKmJxzvJP3l4Ap1kqjg5YjnpjKHyE1N0=",
         "path": "../flakes",
         "type": "path"
       },
       },
       "locked": {
         "lastModified": 1,
-        "narHash": "sha256-wiEcgRls3HyHMPKsPfsKvrOHMntsJXy0lQNrBk/JJFY=",
+        "narHash": "sha256-5Cvss4/y9e4l3QMI3azrsjfqnKnKJcW79IviACOVpX8=",
         "path": "../systems/eldiron",
         "type": "path"
       },
         "nixpkgs": "nixpkgs_106"
       },
       "locked": {
-        "lastModified": 1696428371,
-        "narHash": "sha256-Pod6jxwxtg6lz1z6lX4F2z6/DiXaEIxVdPWGBF8MkEo=",
+        "lastModified": 1696596844,
+        "narHash": "sha256-qtQL21ZF1N3EMqGo5RJq4ytWngsKYOv5mE/pSSxaJJM=",
         "ref": "master",
-        "rev": "5d6e12a0d26171adb523689ce54ea70616ca5ce7",
-        "revCount": 697,
+        "rev": "ac58ff30d8f1712ef115d3c8aaf8da2211662e90",
+        "revCount": 698,
         "type": "git",
         "url": "git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets"
       },
index c33b9385408976791525f7cf85df452e1fded5e5..61d73718ea4e48de2ecb4cbd9db2cf0f4135bac2 100644 (file)
       },
       "locked": {
         "lastModified": 1,
-        "narHash": "sha256-uXrrLvmLWqk4wm2wIJVvWKWbTzc//GSU70qdTy3NDzE=",
+        "narHash": "sha256-nEhIk4RloOuTKmJxzvJP3l4Ap1kqjg5YjnpjKHyE1N0=",
         "path": "./flakes",
         "type": "path"
       },
       },
       "locked": {
         "lastModified": 1,
-        "narHash": "sha256-wiEcgRls3HyHMPKsPfsKvrOHMntsJXy0lQNrBk/JJFY=",
+        "narHash": "sha256-5Cvss4/y9e4l3QMI3azrsjfqnKnKJcW79IviACOVpX8=",
         "path": "../systems/eldiron",
         "type": "path"
       },
index 87f7424e3af4ea45a37c0de932fe767e55fd95cc..677625d4a5b65b36b7e1a196ebcc9a666ab36c0a 100644 (file)
       },
       "locked": {
         "lastModified": 1,
-        "narHash": "sha256-wiEcgRls3HyHMPKsPfsKvrOHMntsJXy0lQNrBk/JJFY=",
+        "narHash": "sha256-5Cvss4/y9e4l3QMI3azrsjfqnKnKJcW79IviACOVpX8=",
         "path": "../systems/eldiron",
         "type": "path"
       },
index 600afbc9cab5342f0bd80a97dedba72c471ada2a..fc214130a941e99cbb9e117b67da20fa16b605d6 100644 (file)
@@ -1,22 +1,7 @@
 { lib, config, pkgs, ... }:
-let
-  configFile = pkgs.writeText "config.yaml" ''
-    listen: ":1965"
-    hosts:
-      immae.eu:
-        cert: /var/lib/acme/immae/full.pem
-        key: /var/lib/acme/immae/key.pem
-        paths:
-          - path: /
-            root: ${./public}
-  '';
-in
 {
   options.myServices.gemini.enable = lib.mkEnableOption "enable Gemini capsule";
   config = lib.mkIf config.myServices.gemini.enable {
-    security.acme.certs.immae.postRun = ''
-      systemctl restart gemini.service
-    '';
     myServices.chatonsProperties.hostings.gemini = {
       file.datetime = "2022-08-27T18:00:00";
       hosting = {
@@ -30,21 +15,34 @@ in
         install.type = "PACKAGE";
       };
       software = {
-        name = "twins";
-        website = "https://code.rocketnine.space/tslocum/twins";
-        license.url = "https://code.rocketnine.space/tslocum/twins/src/branch/master/LICENSE";
-        license.name = "MIT License";
-        version = pkgs.twins.version;
-        source.url = "https://code.rocketnine.space/tslocum/twins";
+        name = "stargazer";
+        website = "https://git.sr.ht/~zethra/stargazer/";
+        license.url = "https://git.sr.ht/~zethra/stargazer/tree/main/LICENSE";
+        license.name = "GNU AFFERO GENERAL PUBLIC LICENSE Version 3";
+        version = pkgs.stargazer.version;
+        source.url = "https://git.sr.ht/~zethra/stargazer/";
       };
     };
     networking.firewall.allowedTCPPorts = [ 1965 ];
-    systemd.services.gemini = {
-      description = "Gemini capsule server";
-      wantedBy = [ "multi-user.target" ];
-      after = [ "network.target" ];
-      serviceConfig.ExecStart = "${pkgs.twins}/bin/twins -config ${configFile}";
-      serviceConfig.Type = "simple";
+    security.acme.certs = {
+      "gemini" = {
+        group = "stargazer";
+        domain = "immae.eu";
+        keyType = "rsa4096";
+        postRun = ''
+          cp -a key.pem key_pkcs8.pem
+          sed -i -e "s/ RSA PRIVATE KEY/ PRIVATE KEY/" key_pkcs8.pem
+          systemctl restart stargazer.service
+        '';
+        extraDomainNames = [];
+      };
+    };
+    services.stargazer = {
+      enable = true;
+      ipLog = true;
+      requestTimeout = 0;
+      genCerts = false;
+      regenCerts = false;
     };
   };
 }
diff --git a/systems/eldiron/gemini/public/index.gmi b/systems/eldiron/gemini/public/index.gmi
deleted file mode 100644 (file)
index 034a0d9..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# Immae
-
-## Présentation
-
-Dans le but de promouvoir la décentralisation des données personnelles et l’usage de logiciels open source, je propose un hébergement de divers services utiles. Ces services sont basés sur du code libre et déployés sur des systèmes libres également.
-
-Je suis un particulier, et dans la mesure de mes capacités, j’essaye toujours de fournir des services à ma famille et à mes amis proches en remplacement de services non libres fournis par les géants du web. J’ai décidé de faire le nécessaire pour étendre ces services à un public plus large, avec pour but de conserver une qualité suffisante.
-
-Lorsque c’est possible, les programmes que je développe sont également libres de droits (ce n’est pas toujours dépendant de ma volonté ou tributaire de ma disponibilité pour rendre le code accessible)
-
-Depuis juin 2019 je fais partie du collectif CHATONS, dont je respecte en particulier la charte:
-=> https://chatons.org CHATONS
-
-## Tarifs
-
-Je ne cherche pas à faire de profits en proposant ces services. Cependant, l’hébergement de ces services n’est pas gratuit, et maintenir ces services à un niveau de qualité suffisant demande de l’investissement en temps. Ainsi, selon l’usage désiré, le niveau de personnalisation et support dont vous avez besoin et les moyens à votre disposition et votre volonté, une participation pourra être demandée afin d’y accéder.
-=> https://www.immae.eu/licences_et_tip.html Tips
-
-## Services proposés
-
-Voici une liste non exhaustive de services que je propose :
-
-* Mastodon
-* Nextcloud
-* Calendrier/Contacts et synchronisation
-* Hébergement de vidéos (Mediagoblin)
-* Hébergement de vidéos (Peertube)
-* Kanboard
-* Flux RSS
-* "Lire plus tard" (wallabag)
-* Partage de liens (Shaarli)
-* Raccourcisseur d’URLs
-* Édition de texte collaborative
-* Réseau social
-* Hébergement de dépôts git privés et publics, gestion d’issues
-* Messagerie instantanée (XMPP/Jabber)
-* Comptes e-mails avec domaines personnalisés, IMAP/SMTP, MX backup
-* Hébergement et administration de sites web privés
-* Comptes shell protégés
-
-Un tableau de bord des services est disponible :
-=> https://tools.immae.eu Tableau de bord des services
-
-Je propose également de l’aide à distance (ou de visu si la distance est faible), pour l’usage de ces outils ou d’autres problèmes liés à l’informatique.
-
-Si vous ne voyez pas ce que vous voulez dans la liste, nous pourrons essayer de trouver une solution ensemble. Je suis ouvert aussi bien sûr à la création de nouveaux services (la liste est encore incomplète et d’autres services sont déjà prévus), dans le cadre défini en haut : basé sur des applications libres.
-
-=> https://status.immae.eu État des services
-
-## Comment faire ?
-
-Vous devez commencer par accepter les conditions générales dgutilisation :
-=> https://www.immae.eu/CGU Conditions générales d’utilisation
-Elles ne contiennent rien d’inhabituel mais elles ont été écrites par moi-même, donc sans jargon juridique. Elles vous permettront de décider si les garanties proposées sont en accord avec ce que vous pouvez vous permettre.
-
-Ensuite, contactez-moi avec vos vœux :
-=> https://www.immae.eu/contacts_fr.html Page de contact
-
-## Infrastructure et open source
-
-Dans le but de pouvoir décemment offrir une qualité de service suffisante sans pour autant y passer mes journées, l’installation des services est gérée via NixOS, permettant d’assurer la reproductibilité et l’automatisation des installations.
-
-Cette configuration est stockée publiquement dans un dépôt git, réutilisable et améliorable librement (avec probablement quelques ajustements).
-=> https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/ Dépôt git de la configuration
-
-
-=> https://www.immae.eu/contacts_fr.html Page de contact
-=> https://www.immae.eu/CGU Conditions générales d’utilisation
-=> https://www.immae.eu/mentions.html Mentions légales
-=> https://www.immae.eu/licences_et_tip.html Quelques informations sur les licences utilisées et tips