summaryrefslogtreecommitdiff
path: root/modules/nixos/git.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2023-02-15 22:44:13 +0300
committerAzat Bahawi <azat@bahawi.net>2023-02-15 22:44:13 +0300
commit32cc6847c481c8ffc88240d0149fe495f3b22de5 (patch)
tree103f5abd20b59250b90746ce7d7cd0b24c321848 /modules/nixos/git.nix
parent7ed022bc9a3c89834016c866e387b60ba4523eb6 (diff)
2023-02-15
Diffstat (limited to 'modules/nixos/git.nix')
-rw-r--r--modules/nixos/git.nix117
1 files changed, 0 insertions, 117 deletions
diff --git a/modules/nixos/git.nix b/modules/nixos/git.nix
deleted file mode 100644
index f754588..0000000
--- a/modules/nixos/git.nix
+++ /dev/null
@@ -1,117 +0,0 @@
-{
- config,
- lib,
- inputs,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.nixfiles.modules.git;
-in {
- options.nixfiles.modules.git.server = {
- enable = mkEnableOption "Git server";
-
- domain = mkOption {
- description = "Domain name sans protocol scheme.";
- type = with types; nullOr str;
- default = "git.${config.networking.domain}";
- };
-
- package = mkOption {
- description = "Package.";
- type = types.package;
- default = pkgs.cgit-pink;
- };
- };
-
- config = mkMerge [
- (mkIf cfg.client.enable {
- secrets = {
- glab-cli-config = {
- file = "${inputs.self}/secrets/glab-cli-config";
- path = "${config.dirs.config}/glab-cli/config.yml";
- owner = my.username;
- inherit (config.my) group;
- };
- gh-hosts = {
- file = "${inputs.self}/secrets/gh-hosts";
- path = "${config.dirs.config}/gh/hosts.yml";
- owner = my.username;
- inherit (config.my) group;
- };
- hut = {
- file = "${inputs.self}/secrets/hut";
- path = "${config.dirs.config}/hut/config";
- owner = my.username;
- inherit (config.my) group;
- };
- };
- })
- (mkIf cfg.server.enable {
- nixfiles.modules.nginx = {
- enable = true;
- virtualHosts.${cfg.server.domain} = {
- locations = {
- "/".extraConfig = let
- cgitrc = pkgs.writeText "cgitrc" ''
- root-title=azahi’s git stuff
- root-desc=鯛も一人はうまからず
-
- about-filter=${cfg.server.package}/lib/cgit/filters/about-formatting.sh
- source-filter=${cfg.server.package}/lib/cgit/filters/syntax-highlighting.py
- commit-filter=${cfg.server.package}/lib/cgit/filters/commit-links.sh
-
- enable-git-config=1
- enable-gitweb-owner=1
- remove-suffix=1
-
- snapshots=tar.gz tar.bz2 zip
-
- readme=:README
- readme=:README.md
- readme=:README.org
- readme=:README.txt
- readme=:readme
- readme=:readme.md
- readme=:readme.org
- readme=:readme.txt
-
- scan-path=${config.services.gitolite.dataDir}/repositories
- '';
- in ''
- include ${config.services.nginx.package}/conf/fastcgi_params;
- fastcgi_split_path_info ^(/?)(.+)$;
- fastcgi_pass unix:${config.services.fcgiwrap.socketAddress};
- fastcgi_param SCRIPT_FILENAME ${cfg.server.package}/cgit/cgit.cgi;
- fastcgi_param CGIT_CONFIG ${cgitrc};
- fastcgi_param PATH_INFO $uri;
- fastcgi_param QUERY_STRING $args;
- fastcgi_param HTTP_HOST $server_name;
- '';
- # FIXME This breaks sources previewing for these files.
- "~* ^/(.+.(ico|css|png))$".extraConfig = ''
- alias ${cfg.server.package}/cgit/$1;
- '';
- };
- };
- };
-
- services = let
- user = "git";
- group = "git";
- in {
- gitolite = {
- # TODO Make the configuration purely declarative.
- enable = true;
- inherit user group;
- adminPubkey = my.ssh.key;
- };
-
- fcgiwrap = {
- enable = true;
- inherit user group;
- };
- };
- })
- ];
-}