From cf26a62567b7fe78ae6f4e4fa2701228535f5ce5 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Sat, 8 Aug 2026 21:14:51 +0300 Subject: [PATCH] nix: add gitmirror Signed-off-by: Seongmin Lee --- flake.nix | 7 +++++++ nix/modules/knotmirror.nix | 32 +++++++++++++++++++++++++++++++- nix/pkgs/gitmirror.nix | 20 ++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 nix/pkgs/gitmirror.nix diff --git a/flake.nix b/flake.nix index a6334055..31808078 100644 --- a/flake.nix +++ b/flake.nix @@ -127,6 +127,7 @@ ./shuttle ./bobbin ./knot2 + ./gitmirror ]); }; buildGoApplication = @@ -188,6 +189,9 @@ dolly = self.callPackage ./nix/pkgs/dolly.nix {}; tap = self.callPackage ./nix/pkgs/tap.nix {}; knotmirror = self.callPackage ./nix/pkgs/knotmirror.nix {}; + gitmirror = self.callPackage ./nix/pkgs/gitmirror.nix { + src = self.rustSrc; + }; bobbin = self.callPackage ./nix/pkgs/bobbin.nix {}; zoekt-webserver = self.callPackage ./nix/pkgs/zoekt-webserver.nix {}; zoekt-tngl-indexserver = self.callPackage ./nix/pkgs/zoekt-tngl-indexserver.nix {}; @@ -216,6 +220,7 @@ dolly tap knotmirror + gitmirror bobbin zoekt-webserver zoekt-tngl-indexserver @@ -258,6 +263,7 @@ dolly tap knotmirror + gitmirror bobbin zoekt-webserver zoekt-tngl-indexserver @@ -689,6 +695,7 @@ services.tangled.knotmirror.tap-package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.tap; services.tangled.knotmirror.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.knotmirror; + services.tangled.knotmirror.v2.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.gitmirror; }; nixosModules.zoekt-tnglserver = { lib, diff --git a/nix/modules/knotmirror.nix b/nix/modules/knotmirror.nix index 7f5ef0eb..c8441e26 100644 --- a/nix/modules/knotmirror.nix +++ b/nix/modules/knotmirror.nix @@ -11,7 +11,7 @@ in enable = mkOption { type = types.bool; default = false; - description = "Enable a tangled knot"; + description = "Enable a tangled knotmirror"; }; package = mkOption { @@ -19,6 +19,19 @@ in description = "Package to use for the knotmirror"; }; + v2 = { + package = mkOption { + type = types.package; + description = "Package to use for the knotmirror/v2"; + }; + + listenAddr = mkOption { + type = types.str; + default = "127.0.0.1:9001"; + description = "Address to listen on"; + }; + }; + tap-package = mkOption { type = types.package; description = "tap package to use for the knotmirror"; @@ -165,10 +178,27 @@ in "MIRROR_ADMIN_LISTEN=${cfg.adminListenAddr}" "MIRROR_SLURPER_CONCURRENCY=4" "MIRROR_SEARCH_ZOEKT_URL=${cfg.zoektUrl}" + "MIRROR_V2_HOST=http://${cfg.v2.listenAddr}" ]; ExecStart = "${getExe cfg.package} serve"; Restart = "always"; }; }; + + systemd.services.gitmirror = { + description = "gitmirror service"; + after = ["network.target" "knotmirror.service"]; + wantedBy = ["multi-user.target"]; + serviceConfig = { + LogsDirectory = "gitmirror"; + StateDirectory = "gitmirror"; + Environment = [ + "GITMIRROR_ADDR=${cfg.v2.listenAddr}" + "GITMIRROR_REPO_BASE=/var/lib/knotmirror/repos" + ]; + ExecStart = "${getExe cfg.v2.package} serve"; + Restart = "always"; + }; + }; }; } diff --git a/nix/pkgs/gitmirror.nix b/nix/pkgs/gitmirror.nix new file mode 100644 index 00000000..275ad9bf --- /dev/null +++ b/nix/pkgs/gitmirror.nix @@ -0,0 +1,20 @@ +{ + rustPlatform, + src, + ... +}: let + flags = ["--bin" "gitmirror" "-p" "gitmirror"]; +in + rustPlatform.buildRustPackage { + pname = "gitmirror"; + version = "0.0.1"; + + inherit src; + + doCheck = false; + + cargoLock.lockFile = "${src}/Cargo.lock"; + + cargoBuildFlags = flags; + cargoTestFlags = flags; + } -- 2.51.2