{ inputs, self, ... }: { flake.nixosModules.graphics = { config, pkgs, lib, ... }: { options.components = { displayManager = lib.mkOption { # enum that dynamically populates itself with the contents of the display-managers directory type = lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/display-managers") )); default = "lightdm"; }; windowManagers = lib.mkOption { type = lib.types.either (lib.types.listOf ( lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") )) )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") ))); default = []; }; shells = lib.mkOption { type = lib.types.either (lib.types.listOf ( lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/shells") )) )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/shells") ))); default = []; }; }; config = { environment.systemPackages = with pkgs; [ wayland-utils mesa-demos vulkan-tools ]; fonts.packages = with pkgs; [ iosevka-comfy.comfy nerd-fonts.jetbrains-mono ]; }; }; flake.homeModules.graphics = { config, pkgs, lib, ... }: { options.components = { windowManagers = lib.mkOption { type = lib.types.either (lib.types.listOf ( lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") )) )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") ))); default = []; }; shells = lib.mkOption { type = lib.types.either (lib.types.listOf ( lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/shells") )) )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( builtins.attrNames (builtins.readDir "${self}/modules/components/shells") ))); default = []; }; }; config = { home.packages = with pkgs; [ bibata-cursors x264 gparted vlc iosevka-comfy.comfy nerd-fonts.jetbrains-mono ]; dconf.settings = { "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; }; }; home.pointerCursor = { enable = true; package = pkgs.bibata-cursors; name = "Bibata-Modern-Ice"; size = 22; gtk.enable = true; x11.enable = true; }; gtk = { enable = true; colorScheme = "dark"; gtk2.configLocation = "${config.home.homeDirectory}/.config/.gtkrc-2.0"; # prevents file conflicts between this and other parts of the nix config gtk2.force = true; }; }; }; }