File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -18,8 +18,6 @@ with lib.my;
1818 let
1919 modulesPath = toString ./modules ;
2020 allModulePaths = mapModulesRec' modulesPath id ;
21- # Filter out NixOS-only directories on Darwin
22- nixosOnlyDirs = [ "hardware" ] ;
2321 # NixOS-only subdirectories within desktop (allow desktop/term for ghostty)
2422 nixosOnlyDesktopDirs = [
2523 "desktop/browsers"
@@ -48,7 +46,7 @@ with lib.my;
4846 "desktop/gnome.nix" # GNOME desktop environment
4947 "desktop/kde.nix" # KDE desktop environment
5048 "desktop/bspwm.nix" # BSPWM window manager
51- # NixOS-only hardware/ shell modules
49+ # NixOS-only shell modules
5250 "nushell.nix"
5351 "yubikey.nix"
5452 # NixOS-only services
@@ -81,7 +79,7 @@ with lib.my;
8179 lib . hasInfix "/modules/${ dir } /" pathStr
8280 # Files inside directory
8381 || lib . hasSuffix "/modules/${ dir } " pathStr # Directory itself
84- ) ( nixosOnlyDirs ++ nixosOnlyDesktopDirs )
82+ ) nixosOnlyDesktopDirs
8583 || lib . any (
8684 file :
8785 lib . hasSuffix file pathStr
Original file line number Diff line number Diff line change 99 isDarwin = hasSuffix "darwin" system ;
1010 isLinux = hasSuffix "linux" system ;
1111 isNixOS = isLinux ; # For clarity when we specifically mean NixOS
12+
13+ mkUnsupportedPlatformConfig =
14+ {
15+ enabled ,
16+ moduleName ,
17+ supportedPlatform ,
18+ unsupported ,
19+ config ,
20+ } :
21+ mkMerge (
22+ [
23+ {
24+ assertions = [
25+ {
26+ assertion = ! ( enabled && unsupported ) ;
27+ message = "${ moduleName } is only supported on ${ supportedPlatform } ." ;
28+ }
29+ ] ;
30+ }
31+ ]
32+ ++ optional ( ! unsupported ) ( mkIf enabled config )
33+ ) ;
34+
35+ mkNixOSOnlyConfig =
36+ isDarwin : moduleName : enabled : config :
37+ mkUnsupportedPlatformConfig {
38+ inherit enabled moduleName config ;
39+ supportedPlatform = "NixOS" ;
40+ unsupported = isDarwin ;
41+ } ;
42+
43+ mkDarwinOnlyConfig =
44+ isDarwin : moduleName : enabled : config :
45+ mkUnsupportedPlatformConfig {
46+ inherit enabled moduleName config ;
47+ supportedPlatform = "Darwin" ;
48+ unsupported = ! isDarwin ;
49+ } ;
1250in
1351{
1452 inherit
1553 isDarwin
1654 isLinux
1755 isNixOS
1856 system
57+ mkNixOSOnlyConfig
58+ mkDarwinOnlyConfig
1959 ;
2060
2161 # Helper to get the correct home base directory
Original file line number Diff line number Diff line change 22 config ,
33 lib ,
44 pkgs ,
5+ isDarwin ,
56 ...
67} :
78with lib ;
1516 easyeffects . enable = mkBoolOpt false ;
1617 } ;
1718
18- config = mkIf cfg . enable ( mkMerge [
19+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.audio" cfg . enable ( mkMerge [
1920 {
2021 services . pipewire = {
2122 enable = true ;
Original file line number Diff line number Diff line change 22 config ,
33 lib ,
44 pkgs ,
5+ isDarwin ,
56 ...
67} :
78with lib ;
1617 audio . enable = mkBoolOpt false ;
1718 } ;
1819
19- config = mkIf cfg . enable ( mkMerge [
20+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.bluetooth" cfg . enable ( mkMerge [
2021 { hardware . bluetooth . enable = true ; }
2122
2223 ( mkIf cfg . audio . enable {
Original file line number Diff line number Diff line change 22 config ,
33 lib ,
44 pkgs ,
5+ isDarwin ,
56 ...
67} :
78with lib ;
1920 } ;
2021 } ;
2122
22- config = mkIf cfg . enable {
23+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.ergodox" cfg . enable {
2324 user . packages = with pkgs ; [
2425 teensy-loader-cli
2526 # QMK build environment for local firmware compilation
Original file line number Diff line number Diff line change 22 config ,
33 lib ,
44 pkgs ,
5+ isDarwin ,
56 ...
67} :
78with lib ;
1718 # TODO automount.enable = mkBoolOpt false;
1819 } ;
1920
20- config = mkIf cfg . enable ( mkMerge [
21+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.fs" cfg . enable ( mkMerge [
2122 {
2223 programs . udevil . enable = true ;
2324
Original file line number Diff line number Diff line change 22 config ,
33 lib ,
44 pkgs ,
5+ isDarwin ,
56 ...
67} :
78with lib ;
1415 enable = mkBoolOpt false ;
1516 } ;
1617
17- config = mkIf cfg . enable {
18+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.nvidia" cfg . enable {
1819 hardware . graphics . enable = true ;
1920
2021 services . xserver . videoDrivers = [ "nvidia" ] ;
Original file line number Diff line number Diff line change 22 config ,
33 lib ,
44 pkgs ,
5+ isDarwin ,
56 ...
67} :
78with lib ;
1415 enable = mkBoolOpt false ;
1516 } ;
1617
17- config = mkIf cfg . enable {
18+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.printing" cfg . enable {
1819 services . printing . enable = true ;
1920 services . printing . drivers = [ pkgs . brlaser ] ;
2021 # Network discovery
Original file line number Diff line number Diff line change 22 config ,
33 lib ,
44 pkgs ,
5+ isDarwin ,
56 ...
67} :
78with lib ;
1415 enable = mkBoolOpt false ;
1516 } ;
1617
17- config = mkIf cfg . enable { user . packages = [ pkgs . lm_sensors ] ; } ;
18+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.sensors" cfg . enable {
19+ user . packages = [ pkgs . lm_sensors ] ;
20+ } ;
1821}
Original file line number Diff line number Diff line change 11{
22 config ,
33 lib ,
4+ isDarwin ,
45 ...
56} :
67with lib ;
1314 enable = mkBoolOpt false ;
1415 } ;
1516
16- config = mkIf cfg . enable {
17+ config = mkNixOSOnlyConfig isDarwin "modules.hardware.wacom" cfg . enable {
1718 # For my intuos4 pro. Doesn't work for cintiqs.
1819 services . xserver . wacom . enable = true ;
1920 # TODO Move this to udev
You can’t perform that action at this time.
0 commit comments