{
  description = "NixOS configuration of Thomas Syms";
  nixConfig = {experimental-features = ["nix-command" "flakes"];};
  inputs = {
    # Nixpkgs
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

    # NUR
    nur.url = "github:nix-community/NUR";

    # NixOS-Hardware
    nixos-hardware.url = "github:NixOS/nixos-hardware";

    # Nix-ld
    nix-ld = {
      url = "github:Mic92/nix-ld";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    # Disko
    disko = {
      url = "github:nix-community/disko";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    # Home Manager
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    #VSCode Extensions
    nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";

    # Theming
    stylix.url = "github:danth/stylix";

    #kde2nix
    #kde2nix.url = "github:nix-community/kde2nix";
  };
  outputs = inputs @ {
    nixpkgs,
    nur,
    stylix,
    home-manager,
    nix-ld,
    ...
  }: let
    system = "x86_64-linux";
    pkgs = import nixpkgs {
      inherit system;
      overlays = [
        (_final: prev: {
          gnome = prev.gnome.overrideScope (_gnomeFinal: gnomePrev: {
            mutter = gnomePrev.mutter.overrideAttrs (_old: {
              src = pkgs.fetchgit {
                url = "https://gitlab.gnome.org/vanvugt/mutter.git";
                rev = "663f19bc02c1b4e3d1a67b4ad72d644f9b9d6970";
                sha256 = "sha256-I1s4yz5JEWJY65g+dgprchwZuPGP9djgYXrMMxDQGrs=";
              };
            });
          });
        })
      ];
    };
  in {
    nixosConfigurations = {
      Equinox = nixpkgs.lib.nixosSystem {
        # System
        system = "x86_64-linux";
        specialArgs = {
          inherit inputs;
          inherit system;
        };

        # Modules
        modules = [
          nix-ld.nixosModules.nix-ld
          {programs.nix-ld.dev.enable = true;}

          #kde2nix Module
          #inputs.kde2nix.nixosModules.default

          # NUR Modules
          nur.nixosModules.nur

          # Theme Modules
          stylix.nixosModules.stylix
          ./themes/targets/all.nix
          ./themes/tokyonight

          # Host Module
          ./hosts/Equinox

          # Home Manager Modules
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {
              inherit inputs;
              inherit system;
            };
            home-manager.users.panotaka = {
              imports = [
                nur.hmModules.nur
                ./home
                ./home/shell
                ./home/applications
                ./home/desktops/kde
              ];
            };
          }
        ];
      };

      Blackbird = nixpkgs.lib.nixosSystem {
        # System
        system = "x86_64-linux";
        specialArgs = {
          inherit inputs;
          inherit system;
        };

        # Modules
        modules = [
          nix-ld.nixosModules.nix-ld
          {programs.nix-ld.dev.enable = true;}

          # NUR Modules
          nur.nixosModules.nur

          # Theme Modules
          stylix.nixosModules.stylix
          ./themes/targets/all.nix
          ./themes/tokyonight

          # Host Module
          ./hosts/Blackbird

          # Home Manager Modules
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {
              inherit inputs;
              inherit system;
            };

            home-manager.users.panotaka = {
              imports = [
                nur.hmModules.nur
                ./home
                ./home/shell
                ./home/applications
                ./home/desktops/gnome
              ];
            };
          }
        ];
      };

      Pegasus = nixpkgs.lib.nixosSystem {
        # System
        system = "x86_64-linux";
        specialArgs = {
          inherit inputs;
          inherit system;
        };

        # Modules
        modules = [
          nix-ld.nixosModules.nix-ld
          {programs.nix-ld.dev.enable = true;}

          #kde2nix Module
          #inputs.kde2nix.nixosModules.default

          # NUR Modules
          nur.nixosModules.nur

          # Theme Modules
          stylix.nixosModules.stylix
          ./themes/targets/all.nix
          ./themes/tokyonight

          # Host Module
          ./hosts/Pegasus

          # Home Manager Modules
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {
              inherit inputs;
              inherit system;
            };
            home-manager.users.panotaka = {
              imports = [
                nur.hmModules.nur
                ./home
                ./home/shell
                ./home/applications
                ./home/desktops/kde
              ];
            };
          }
        ];
      };
    };

    homeConfigurations.panotaka = home-manager.lib.homeManagerConfiguration {
      inherit pkgs;

      modules = [
        ./home
        ./home/shell
      ];
    };
  };
}
