summary refs log tree commit diff
path: root/services/cgit.nix
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-11-06 01:57:00 +0100
committerMel <einebeere@gmail.com>2024-11-06 01:57:00 +0100
commit21c8d688327d8f1a013c3991e828369053baa897 (patch)
treee7cadf15d79691cfb4a066a34ffebd7420b09f3d /services/cgit.nix
parent09037ccd3f4e58d409ab7f9b84f93c37add5f31c (diff)
downloadnetwork-21c8d688327d8f1a013c3991e828369053baa897.tar.zst
network-21c8d688327d8f1a013c3991e828369053baa897.zip
Add cgit OCI server
Signed-off-by: Mel <einebeere@gmail.com>
Diffstat (limited to 'services/cgit.nix')
-rw-r--r--services/cgit.nix57
1 files changed, 57 insertions, 0 deletions
diff --git a/services/cgit.nix b/services/cgit.nix
new file mode 100644
index 0000000..d8493f4
--- /dev/null
+++ b/services/cgit.nix
@@ -0,0 +1,57 @@
+{ pkgs, ... }:
+
+# TODO: bring in cgit text configuration in `/srv` into nixos repository.
+let
+  inherit (pkgs) dockerTools;
+  cgit = pkgs.cgit-pink;
+
+  cgitLocalPort = "3792";
+  cgitDir = "/srv/cgit";
+  gitDir = "/srv/git";
+
+  baseImage = dockerTools.pullImage {
+    imageName = "alpine";
+    imageDigest = "sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d";
+    sha256 = "0fzqhqvvb0pzkwvjwyqjfv3rw2w8006xz4mhk0dk5clmyb08hqwc";
+    finalImageName = "alpine";
+    finalImageTag = "3.20.3";
+  };
+
+  # TODO: replace `buildLayeredImage` with `streamLayeredImage`
+  # in the upcoming 24.11 release.
+  cgitImage = dockerTools.buildLayeredImage {
+    name = "cgit";
+    tag = cgit.version;
+    fromImage = baseImage;
+
+    contents = with pkgs; [
+      lighttpd zstd
+      python311 python311Packages.pygments
+    ] ++ [ cgit ];
+  };
+
+in
+{
+  virtualisation.oci-containers.containers = {
+    cgit = {
+      # TODO: see above. replace with `imageStream`.
+      imageFile = cgitImage;
+      image = "cgit:${cgit.version}"; # has to match `imageFile`.
+      ports = [ "127.0.0.1:${cgitLocalPort}:80"];
+
+      volumes = [
+        "${cgitDir}/config/cgitrc:/etc/cgitrc"
+        "${cgitDir}/config/lighttpd.conf:/etc/lighttpd/cgit.conf"
+        "${cgitDir}/data:/data"
+        
+        "${gitDir}:/var/www/cgit"
+      ];
+
+      entrypoint = "${pkgs.lighttpd}/bin/lighttpd";
+      cmd = [
+        "-D" # run in foreground
+        "-f" "/etc/lighttpd/cgit.conf"
+      ];
+    };
+  };
+}