From edeaf0e3a54581c32a917fa2ced879400d953d1f Mon Sep 17 00:00:00 2001
From: zowoq <59103226+zowoq@users.noreply.github.com>
Date: Tue, 17 Sep 2024 09:31:40 +1000
Subject: [PATCH] modules/community-builder: add nixpkgs clone

Co-authored-by: nicoo <nicoo@mur.at>
---
 modules/darwin/community-builder/default.nix | 27 +++++++++++++++++++-
 modules/nixos/community-builder/default.nix  |  9 +++++++
 modules/shared/nixpkgs-clone.bash            |  5 ++++
 3 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 modules/shared/nixpkgs-clone.bash

diff --git a/modules/darwin/community-builder/default.nix b/modules/darwin/community-builder/default.nix
index 7c6e823..cb7f241 100644
--- a/modules/darwin/community-builder/default.nix
+++ b/modules/darwin/community-builder/default.nix
@@ -1,4 +1,9 @@
-{ inputs, pkgs, ... }:
+{
+  config,
+  inputs,
+  pkgs,
+  ...
+}:
 {
   imports = [
     "${inputs.self}/modules/shared/community-builder.nix"
@@ -9,4 +14,24 @@
   environment.systemPackages = [
     pkgs.vim
   ];
+
+  launchd.daemons.nixpkgs-clone = {
+    environment = {
+      inherit (config.environment.variables) NIX_SSL_CERT_FILE;
+    };
+    serviceConfig = {
+      StartCalendarInterval = [
+        {
+          Hour = 0;
+          Minute = 0;
+        }
+      ];
+      StandardErrorPath = "/var/log/nixpkgs-clone.log";
+      StandardOutPath = "/var/log/nixpkgs-clone.log";
+    };
+    path = [
+      pkgs.git
+    ];
+    script = builtins.readFile "${inputs.self}/modules/shared/nixpkgs-clone.bash";
+  };
 }
diff --git a/modules/nixos/community-builder/default.nix b/modules/nixos/community-builder/default.nix
index 6825beb..11f07b8 100644
--- a/modules/nixos/community-builder/default.nix
+++ b/modules/nixos/community-builder/default.nix
@@ -22,4 +22,13 @@
   programs.fish.enable = true;
   # disable generated completion
   environment.etc."fish/generated_completions".text = pkgs.lib.mkForce "";
+
+  systemd.services.nixpkgs-clone = {
+    serviceConfig.Type = "oneshot";
+    startAt = "daily";
+    path = [
+      pkgs.git
+    ];
+    script = builtins.readFile "${inputs.self}/modules/shared/nixpkgs-clone.bash";
+  };
 }
diff --git a/modules/shared/nixpkgs-clone.bash b/modules/shared/nixpkgs-clone.bash
new file mode 100644
index 0000000..c3c75ac
--- /dev/null
+++ b/modules/shared/nixpkgs-clone.bash
@@ -0,0 +1,5 @@
+CLONE_DIR="/var/lib/nixpkgs.git"
+if [ ! -d "$CLONE_DIR" ]; then
+  git clone --bare https://github.com/NixOS/nixpkgs.git "$CLONE_DIR"
+fi
+git -C "$CLONE_DIR" -c remote.origin.fetch="+refs/heads/*:refs/remotes/origin/*" -c fetch.prune=true fetch