{ description = "Rosa's NixOS configurations"; inputs = { disko = { inputs.nixpkgs.follows = "nixpkgs"; url = "github:nix-community/disko"; }; home-manager = { inputs.nixpkgs.follows = "nixpkgs"; url = "github:nix-community/home-manager"; }; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; outputs = { self, disko, home-manager, nixpkgs, }: let pkgs = nixpkgs.legacyPackages.x86_64-linux; mkSystem = { additionalModules ? [ ], hostName, system ? "x86_64-linux", }: nixpkgs.lib.nixosSystem { modules = [ ./hosts/${hostName} ./hosts/${hostName}/hardware-configuration.nix ./modules # include custom system modules ./modules/core.nix # always include core settings { networking.hostName = hostName; } ] ++ additionalModules; inherit system; }; in { formatter.x86_64-linux = pkgs.nixfmt; nixosConfigurations = { the-meowchine = mkSystem { additionalModules = [ home-manager.nixosModules.home-manager ]; hostName = "the-meowchine"; }; meowbook = mkSystem { additionalModules = [ disko.nixosModules.disko home-manager.nixosModules.home-manager ]; hostName = "meowbook"; }; canadian-government-system = mkSystem { additionalModules = [ disko.nixosModules.disko ]; hostName = "canadian-government-system"; }; }; }; }