]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Add a first gemini capsule
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Sat, 8 May 2021 18:17:41 +0000 (20:17 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Sat, 8 May 2021 18:17:41 +0000 (20:17 +0200)
modules/private/default.nix
modules/private/gemini/default.nix [new file with mode: 0644]
modules/private/gemini/public/index.gmi [new file with mode: 0644]
modules/private/monitoring/default.nix
modules/private/system/eldiron.nix
pkgs/default.nix
pkgs/twins/default.nix [new file with mode: 0644]

index 54b9f158f28e49324a30e0cdc21767bad4b0e192..8542e209c9c4f1ca592a012760ae0d7ddc431bc9 100644 (file)
@@ -16,6 +16,7 @@ set = {
   openldapReplication = ./databases/openldap_replication.nix;
 
   websites = ./websites;
+  gemini = ./gemini;
 
 
   # Personal websites
diff --git a/modules/private/gemini/default.nix b/modules/private/gemini/default.nix
new file mode 100644 (file)
index 0000000..ffe8a12
--- /dev/null
@@ -0,0 +1,26 @@
+{ 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 {
+    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";
+    };
+  };
+}
diff --git a/modules/private/gemini/public/index.gmi b/modules/private/gemini/public/index.gmi
new file mode 100644 (file)
index 0000000..034a0d9
--- /dev/null
@@ -0,0 +1,70 @@
+# 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
index 12e94c9e574a6166bc831dc0cef66a57153978b4..6c7462f86a14f43c3bd00ddaa4b0cb731f6a5794 100644 (file)
@@ -27,7 +27,7 @@ let
       interface = "eth0";
     };
     eldiron = {
-      processWarn = "250"; processAlert = "400";
+      processWarn = "400"; processAlert = "500";
       loadWarn = "1.0"; loadAlert = "1.2";
       interface = "eth0";
     };
index fdc3692f0cc404376b20fe9419a86abaa864f14d..4fb18a0f1e0334b9818e47243534e24b92437261 100644 (file)
   myServices.dns.enable = true;
   myServices.certificates.enable = true;
   myServices.websites.enable = true;
+  myServices.gemini.enable = true;
   myServices.mail.enable = true;
   myServices.ejabberd.enable = true;
   myServices.vpn.enable = true;
index 5b347be537d49ddc0f3100cc59488d5df3408e96..fcc92d1bdd226e9e63e269b3a21c7e380e901a7d 100644 (file)
@@ -33,6 +33,7 @@ rec {
   telegramircd = callPackage ./telegramircd { inherit mylibs; telethon = callPackage ./telethon_sync {}; };
   terminal-velocity = callPackage ./terminal-velocity {};
   tiv = callPackage ./tiv {};
+  twins = callPackage ./twins {};
   unicodeDoc = callPackage ./unicode {};
 
   cardano = callPackage ./crypto/cardano { inherit mylibs; };
diff --git a/pkgs/twins/default.nix b/pkgs/twins/default.nix
new file mode 100644 (file)
index 0000000..d0656bb
--- /dev/null
@@ -0,0 +1,15 @@
+{ buildGoModule, fetchgit }:
+
+buildGoModule {
+  pname = "twins";
+  version = "master-cd85204";
+  src = fetchgit {
+    url = "https://code.rocketnine.space/tslocum/twins.git";
+    branchName = "master";
+    rev = "cd8520468072c39914ce5c8f6900dd804848d7ad";
+    sha256 = "14pxcq24g3cllq8w76dwn7mmcphdpw4f5d2nhwxh06hs8ci22fz3";
+  };
+
+  vendorSha256 = "1h8bk8v1p52b3qwk71mv8015p990jczq31p7b7bwypb4im5l5pd9";
+
+}