{
  inputs,
  lib,
  self,
  ...
}: {
  imports = [inputs.easy-hosts.flakeModule];

  config.easy-hosts = {
    shared.specialArgs.marleylib = import ../lib {inherit lib;};

    # shared.modules = with inputs; [
    #   # TODO: Move module imports to custom module
    #   {
    #     home-manager.sharedModules = [
    #       nixcord.homeModules.nixcord
    #     ];
    #   }
    # ];

    perClass = class: {
      modules = ["${self}/modules/${class}/default.nix"];
    };

    hosts = {
      ### Desktop ###
      nyx = {
        arch = "x86_64";
        class = "nixos";
      };

      ### Macbook Air ###
      mairley = {
        arch = "aarch64";
        class = "darwin";
        nixpkgs = inputs.nixpkgs-darwin;
      };

      ### Servers ###

      marleycentre = {
        arch = "x86_64";
        class = "nixos";
      };

      marleynet = {
        arch = "x86_64";
        class = "nixos";
      };
    };
  };
}
