{ self, inputs, ... }: let # shorten paths inherit (inputs.nixpkgs.lib) nixosSystem; mod = "${self}/system"; home = "${self}/home"; # get the basic config to build on top of inherit (import "${self}/system") tty desktop laptop; # get these into the module system specialArgs = {inherit inputs self;}; # shared modules for all configurations sharedModules = [ ./aesthetic "${mod}/services/gnome-services.nix" "${mod}/core/limine.nix" "${home}" inputs.agenix.nixosModules.default ]; in { flake.nixosConfigurations = { # TTY: desktop headless (no GUI) tty = nixosSystem { inherit specialArgs; modules = tty ++ sharedModules; }; # Desktop: desktop with GUI desktop = nixosSystem { inherit specialArgs; modules = desktop ++ sharedModules; }; # Laptop: laptop with GUI + battery + bluetooth laptop = nixosSystem { inherit specialArgs; modules = laptop ++ sharedModules; }; }; }