From 90f0c114b3ad3b00149b05122205ae9999465bb4 Mon Sep 17 00:00:00 2001
From: Leyla Becker <git@jan-leila.com>
Date: Sun, 24 Nov 2024 15:23:04 -0600
Subject: [PATCH] created home manager nixos adapter modules

---
 enviroments/client/default.nix            | 3 ---
 home-modules/default.nix                  | 5 +++++
 home-modules/flipperzero.nix              | 3 +++
 homes/ester/default.nix                   | 4 ++++
 homes/eve/default.nix                     | 4 ++++
 homes/leyla/default.nix                   | 7 ++-----
 host-modules/default.nix                  | 1 +
 host-modules/home-manager/default.nix     | 6 ++++++
 host-modules/home-manager/flipperzero.nix | 9 +++++++++
 9 files changed, 34 insertions(+), 8 deletions(-)
 create mode 100644 home-modules/default.nix
 create mode 100644 home-modules/flipperzero.nix
 create mode 100644 host-modules/home-manager/default.nix
 create mode 100644 host-modules/home-manager/flipperzero.nix

diff --git a/enviroments/client/default.nix b/enviroments/client/default.nix
index 052651e..f1de375 100644
--- a/enviroments/client/default.nix
+++ b/enviroments/client/default.nix
@@ -3,9 +3,6 @@
     ../common
   ];
 
-  # # Enable sound with pipewire.
-  # hardware.flipperzero.enable = true;
-
   environment.systemPackages = with pkgs; [
     cachefilesd
   ];
diff --git a/home-modules/default.nix b/home-modules/default.nix
new file mode 100644
index 0000000..1fb9724
--- /dev/null
+++ b/home-modules/default.nix
@@ -0,0 +1,5 @@
+{...}: {
+  imports = [
+    ./flipperzero.nix
+  ];
+}
diff --git a/home-modules/flipperzero.nix b/home-modules/flipperzero.nix
new file mode 100644
index 0000000..6354bc0
--- /dev/null
+++ b/home-modules/flipperzero.nix
@@ -0,0 +1,3 @@
+{lib, ...}: {
+  options.hardware.flipperzero.enable = lib.mkEnableOption "enable flipperzero hardware";
+}
diff --git a/homes/ester/default.nix b/homes/ester/default.nix
index e0d5e86..dfe8175 100644
--- a/homes/ester/default.nix
+++ b/homes/ester/default.nix
@@ -6,6 +6,10 @@
 }: let
   cfg = osConfig.host.users.ester;
 in {
+  imports = [
+    ../../home-modules
+  ];
+
   config = {
     home = {
       username = "ester";
diff --git a/homes/eve/default.nix b/homes/eve/default.nix
index d358b0d..3d7d7c3 100644
--- a/homes/eve/default.nix
+++ b/homes/eve/default.nix
@@ -6,6 +6,10 @@
 }: let
   cfg = osConfig.host.users.eve;
 in {
+  imports = [
+    ../../home-modules
+  ];
+
   config = {
     home = {
       username = "eve";
diff --git a/homes/leyla/default.nix b/homes/leyla/default.nix
index 9886335..84eb5bf 100644
--- a/homes/leyla/default.nix
+++ b/homes/leyla/default.nix
@@ -1,10 +1,7 @@
-{
-  pkgs,
-  osConfig,
-  ...
-}: {
+{pkgs, ...}: {
   imports = [
     ./packages.nix
+    ../../home-modules
   ];
 
   config = {
diff --git a/host-modules/default.nix b/host-modules/default.nix
index 2087f1a..a90caf1 100644
--- a/host-modules/default.nix
+++ b/host-modules/default.nix
@@ -5,5 +5,6 @@
     ./users.nix
     ./desktop.nix
     ./nix-development.nix
+    ./home-manager
   ];
 }
diff --git a/host-modules/home-manager/default.nix b/host-modules/home-manager/default.nix
new file mode 100644
index 0000000..885e035
--- /dev/null
+++ b/host-modules/home-manager/default.nix
@@ -0,0 +1,6 @@
+# modules in this folder are to adapt home manager modules defined in `home-modules` to any nix module configs that they need to set
+{...}: {
+  imports = [
+    ./flipperzero.nix
+  ];
+}
diff --git a/host-modules/home-manager/flipperzero.nix b/host-modules/home-manager/flipperzero.nix
new file mode 100644
index 0000000..6c94773
--- /dev/null
+++ b/host-modules/home-manager/flipperzero.nix
@@ -0,0 +1,9 @@
+{
+  lib,
+  config,
+  ...
+}: let
+  home-users = lib.attrsets.mapAttrsToList (_: user: user) config.home-manager.users;
+in {
+  hardware.flipperzero.enable = lib.lists.any (home-user: home-user.hardware.flipperzero.enable) home-users;
+}