{ 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, ... }: { home.packages = with pkgs; [ bibata-cursors x264 gparted vlc ]; dconf.settings = { "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; }; }; gtk = { enable = true; }; }; }