{
  description = "system";

  inputs = {
    # nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
    nixpkgs.url = "nixpkgs/nixos-unstable";
    # nixpkgs.url = "nixpkgs/nixos-22.11";
    nixpkgs-stable.url = "nixpkgs/nixos-23.05";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    nixos-hardware.url = "github:networkException/nixos-hardware/apple-t2-init";
    mac-brcm-fw = {
      url = "path:./mac-brcm-fw";
      flake = false;
    };
    #mms.url = "github:mkaito/nixos-modded-minecraft-servers";
    easymacros.url = "git+https://gitlab.com/obsidianical/easymacros.git";
    meowsite.url = "git+https://gitlab.com/obsidianical/meowsite.git";
    wordsofgod.url = "git+https://gitlab.com/obsidianical/wordsofgod.git";
    karton.url = "git+https://gitlab.com/obsidianical/microbin.git";
    arion.url = "github:hercules-ci/arion";
    gumseite.url = "git+https://gitlab.com/schrottkatze/gum-schulsachen.git";
  };

  outputs = { self, nixpkgs, nixpkgs-stable, home-manager, nixos-hardware, mac-brcm-fw, ... }@inputs: {
    nixosConfigurations = {
      monosodium-glutamate-g = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs;
        };
        system = "x86_64-linux";
        modules = [
          ./hosts/monosodium-glutamate-g/configuration.nix
          home-manager.nixosModules.home-manager {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.jade = { nixosConfig, pkgs, ... }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "${nixosConfig.system.stateVersion}";
            };
          }
        ];
      };
      catbook-j = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs;
        };
        system = "x86_64-linux";
        modules = [
          ./hosts/catbook-j/configuration.nix
          home-manager.nixosModules.home-manager {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.jade = { nixosConfig, pkgs, ... }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "${nixosConfig.system.stateVersion}";
            };
          }
        ];
      };
      potatobook-g = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs;
        };
        system = "x86_64-linux";
        modules = [
          "${mac-brcm-fw}"
          ./hosts/potatobook-g/configuration.nix
          home-manager.nixosModules.home-manager {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.jade = { nixosConfig, pkgs, ... }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "${nixosConfig.system.stateVersion}";
            };
          }
          nixos-hardware.nixosModules.apple-t2
        ];
      };
      schrottserver = nixpkgs-stable.lib.nixosSystem {
        specialArgs = {
          inherit inputs;
        };
        system = "x86_64-linux";
        modules = [
          ./hosts/schrottserver/configuration.nix
          home-manager.nixosModules.home-manager {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.jade = { nixosConfig, pkgs, ... }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "${nixosConfig.system.stateVersion}";
            };
          }
        ];
      };
      katzencafe = nixpkgs-stable.lib.nixosSystem {
        specialArgs = {
          inherit inputs;
        };
        system = "aarch64-linux";
        modules = [
          ./hosts/katzencafe/configuration.nix
          home-manager.nixosModules.home-manager {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.jade = { nixosConfig, pkgs, ... }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "${nixosConfig.system.stateVersion}";
            };
          }
        ];
      };
    };
  };
}
