{ description = "Droidnix: A dendritic NixOS + Home Manager configuration"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; emacs-overlay = { url = "github:nix-community/emacs-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; catppuccin = { url = "github:catppuccin/nix"; inputs.nixpkgs.follows = "nixpkgs"; }; zen-browser = { url = "github:youwen5/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland.url = "github:hyprwm/Hyprland"; }; outputs = inputs@{ nixpkgs, home-manager, emacs-overlay, catppuccin, zen-browser, hyprland, ... }: let lib = nixpkgs.lib; system = "x86_64-linux"; # Define the system explicitly user = import ./assets/flake/users/henrov.nix; machines = [ "traveldroid" "maindroid" ]; in { nixosConfigurations = lib.genAttrs machines ( machine: lib.nixosSystem { inherit system; modules = [ # Import machine-specific configurations ./assets/flake/machines/${machine}/top.nix # Home Manager and theme modules home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit user inputs; }; } inputs.catppuccin.nixosModules.catppuccin # Let's start importing the whole generated tree ./generated/top.nix ]; specialArgs = { inherit user inputs; flakeRoot = ./.; }; } ); devShells.${system}.default = import ./assets/flake/terminal_shell/devshell.nix { inherit (nixpkgs) mkShell; }; }; }