From 5048eae58df610c9e1766fc157713fa614632140 Mon Sep 17 00:00:00 2001
From: Gabriel Arazas <foodogsquared@foodogsquared.one>
Date: Sun, 28 Jul 2024 19:57:54 +0800
Subject: [PATCH] lib/env-builders: add builders for home-manager and
 wrapper-manager

---
 lib/env-builders.nix | 55 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/lib/env-builders.nix b/lib/env-builders.nix
index 775a2265..7552938a 100644
--- a/lib/env-builders.nix
+++ b/lib/env-builders.nix
@@ -82,4 +82,59 @@ rec {
       };
     in
     nixosSystem.config.system.build.${nixosSystem.config.formatAttr};
+
+  mkHome = {
+    pkgs,
+    homeManagerSrc,
+    lib ? pkgs.lib,
+    modules ? [ ],
+    specialArgs ? { },
+  }:
+    let
+      homeModules = ../modules/home-manager;
+    in
+    import "${homeManagerSrc}/modules" {
+      inherit pkgs lib;
+      check = true;
+      extraSpecialArgs = specialArgs // {
+        foodogsquaredModulesPath = builtins.toString homeModules;
+      };
+      configuration = { lib, ... }: {
+        imports = modules ++ lib.singleton {
+          imports = [
+            homeModules
+            ../modules/home-manager/_private
+          ];
+        };
+        config = {
+          programs.home-manager.path = homeManagerSrc;
+          inherit (pkgs) overlays;
+          nixpkgs.config = lib.mkDefault pkgs.config;
+        };
+      };
+    };
+
+  mkWrapper = {
+    pkgs,
+    lib ? pkgs.lib,
+    wrapperManagerSrc,
+    modules ? [ ],
+    specialArgs ? { },
+  }:
+    let
+      wrapperManagerModules = ../modules/wrapper-manager;
+      wrapperManager = import wrapperManagerSrc { };
+    in
+      wrapperManager.lib.build {
+        inherit pkgs lib;
+        specialArgs = specialArgs // {
+          foodogsquaredModulesPath = builtins.toString wrapperManagerModules;
+        };
+        modules = modules ++ lib.singleton {
+          imports = [
+            wrapperManagerModules
+            ../modules/wrapper-manager/_private
+          ];
+        };
+      };
 }