{
  description = "Master flake for all my setups";

  inputs = {
    unstable.url = "github:nixos/nixpkgs/nixos-unstable";

    darwin.url = "github:lnl7/nix-darwin/master";
    darwin.inputs.nixpkgs.follows = "unstable";

    nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew";

    homebrew-core.url = "github:homebrew/homebrew-core";
    homebrew-core.flake = false;

    homebrew-cask.url = "github:homebrew/homebrew-cask";
    homebrew-cask.flake = false;

    cask-fonts.url = "github:homebrew/homebrew-cask-fonts";
    cask-fonts.flake = false;

    home-manager.url = "github:nix-community/home-manager";
    home-manager.inputs.nixpkgs.follows = "unstable";
    
    hyprland-contrib.url = "github:hyprwm/contrib";
    hyprland-contrib.inputs.nixpkgs.follows = "unstable";

    # fix for app links on macos
    mac-app-util.url = "github:hraban/mac-app-util";
  };

  outputs = { unstable, home-manager, darwin, hyprland-contrib, nix-homebrew, homebrew-core, homebrew-cask, cask-fonts, ...}@inputs: {
    nixosConfigurations = {
      gunther = unstable.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [
          ./gunther/configuration.nix
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.leonv = import ./gunther/leonv.nix;
            home-manager.extraSpecialArgs = { inherit inputs; };
          }
        ];
      };
      absol = unstable.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [
          ./absol/configuration.nix
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.leonv = import ./absol/leonv.nix;
            home-manager.extraSpecialArgs = { inherit inputs; };
          }
        ];
      };
      iso = unstable.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [
          "${unstable}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
          ./iso/configuration.nix
        ];
      };
      willem = unstable.lib.nixosSystem {
        system = "aarch64-linux";
        specialArgs = { inherit inputs; };
        modules = [ ./willem/configuration.nix ];
      };
      dafoe = unstable.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [ ./dafoe/configuration.nix ];
      };
    };
    darwinConfigurations = {
      shinx = darwin.lib.darwinSystem {
        system = "aarch64-darwin";
        specialArgs = { inherit inputs; };
        modules = [
          ./shinx/default.nix
          home-manager.darwinModules.home-manager 
          nix-homebrew.darwinModules.nix-homebrew 
          {
            nix-homebrew = {
              enable = true;
              enableRosetta = true;
              user = "leonvatthauer";
              taps = {
                "homebrew/homebrew-core" = homebrew-core;
                "homebrew/homebrew-cask" = homebrew-cask;
                "homebrew/homebrew-cask-fonts" = cask-fonts;
              };
            };
          }
        ];
      };
    };
  };
}