aboutsummaryrefslogtreecommitdiff
path: root/modules/gemini/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gemini/default.nix')
-rw-r--r--modules/gemini/default.nix57
1 files changed, 57 insertions, 0 deletions
diff --git a/modules/gemini/default.nix b/modules/gemini/default.nix
new file mode 100644
index 0000000..d59f65f
--- /dev/null
+++ b/modules/gemini/default.nix
@@ -0,0 +1,57 @@
+{ config, pkgs, lib, ... }:
+{
+ services.agate = {
+ enable = true;
+
+ hostnames = [ "aethrvmn.gr" ];
+ addresses = [ "0.0.0.0:1965" ];
+ language = "en";
+ contentDir = "/srv/gemini";
+ };
+
+ networking.firewall.allowedTCPPorts = [ 1965 ];
+
+ users = {
+ groups.agate = { };
+ users = {
+ agate = {
+ isSystemUser = true;
+ description = "gemini user";
+ group = "agate";
+ home = "/srv/gemini";
+ createHome = true;
+ shell = "${pkgs.git}/bin/git-shell";
+ };
+ };
+ };
+
+ systemd = {
+ # set service
+ services."gemini" = {
+ description = "Update Gemini site from repo";
+
+ script = ''
+ if [ -d /srv/gemini/.git ]; then
+ ${pkgs.git}/bin/git -C /srv/gemini pull
+ else
+ ${pkgs.git}/bin/git clone https://apo.theke.ml/aethrvmn/gemini.git /srv/gemini
+ fi
+ '';
+
+ serviceConfig = {
+ Type = "oneshot";
+ User = "agate";
+ };
+ };
+
+ timers."gemini" = {
+ description = "Hourly Gemini-site update";
+ wantedBy = [ "timers.target" ];
+
+ timerConfig = {
+ OnCalendar = "hourly";
+ Persistent = true;
+ };
+ };
+ };
+}
Directive (EU) 2019/790, Article 4(3); all rights regarding Text and Data Mining (TDM) are reserved.