diff options
| author | Alexander Kassouni <alex@kassouni.net> | 2026-09-29 23:29:28 -0700 |
|---|---|---|
| committer | Alexander Kassouni <alex@kassouni.net> | 2026-09-29 23:29:28 -0700 |
| commit | 52cdeaf4cc9da9d32926821c78fd331bc8d2f14a (patch) | |
| tree | 1b57b1c4d7c4e70202d9f07bab8a8e1a477078b9 /git/default.nix | |
| parent | a570da443586fa3b3490b5add88ea5932456a5b3 (diff) | |
restructure for cgit css
Diffstat (limited to 'git/default.nix')
| -rw-r--r-- | git/default.nix | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/git/default.nix b/git/default.nix new file mode 100644 index 0000000..f46c3ab --- /dev/null +++ b/git/default.nix @@ -0,0 +1,51 @@ +{config, inputs, pkgs, ...}: let + domain = "git.kassouni.net"; + repoRoot = "/srv/git"; + theme = inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.cgit-theme; +in { + users.users.git = { + isSystemUser = true; + group = "git"; + home = repoRoot; + createHome = true; + homeMode = "750"; + shell = "${pkgs.git}/bin/git-shell"; + openssh.authorizedKeys.keys = config.my.gitKeys; + }; + users.groups.git = { }; + + environment.systemPackages = [ pkgs.git ]; + + services.openssh.extraConfig = '' + Match user git + AllowTcpForwarding no + AllowAgentForwarding no + PermitTTY no + ''; + + services.cgit.${domain} = { + enable = true; + scanPath = repoRoot; + group = "git"; # so cgit can traverse a non-world-readable repoRoot + gitHttpBackend.checkExportOkFiles = true; + settings = { + # cgit adds one <link> per css entry, in order + css = [ "/cgit.css" "/theme.css" ]; + strict-export = "git-daemon-export-ok"; + remove-suffix = true; + readme = [ ":README.md" ":README" ":readme.md" ]; + clone-url = "git@${domain}:$CGIT_REPO_URL https://${domain}/$CGIT_REPO_URL"; + source-filter = "${pkgs.cgit}/lib/cgit/filters/syntax-highlighting.py"; + about-filter = "${pkgs.cgit}/lib/cgit/filters/about-formatting.sh"; + }; + }; + + services.nginx.virtualHosts.${domain} = { + forceSSL = true; + enableACME = true; + locations = { + "= /theme.css".alias = "${theme}/theme.css"; + "/fonts/".alias = "${theme}/fonts/"; + }; + }; +} |