{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; ironbar = { url = "github:JakeStanger/ironbar"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, home-manager, ... }@inputs: let supportedSystems = nixpkgs.lib.systems.flakeExposed; forAllSystems = nixpkgs.lib.genAttrs supportedSystems; mkNixosSystem = hostname: system: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs hostname; inputs' = builtins.mapAttrs (_: flake: { legacyPackages = flake.legacyPackages.${system} or { }; packages = flake.packages.${system} or { }; }) inputs; }; modules = [ ./hosts/common ./hosts/${hostname} ]; }; in { formatter = forAllSystems ( system: let pkgs = nixpkgs.legacyPackages.${system}; in pkgs.nixfmt ); nixosConfigurations = { dahlia = mkNixosSystem "dahlia" "x86_64-linux"; ivy = mkNixosSystem "ivy" "x86_64-linux"; }; homeConfigurations = { "willow@dahlia" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages."x86_64-linux"; extraSpecialArgs = { inherit inputs; hostname = "dahlia"; }; modules = [ ./home/apr-dahlia.nix inputs.ironbar.homeManagerModules.default ]; }; "willow@ivy" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages."x86_64-linux"; extraSpecialArgs = { inherit inputs; hostname = "ivy"; }; modules = [ ./home/apr-ivy.nix ]; }; }; }; }