{
  description = "NixOS System Config";
  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
    nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
    home-manager.url = "github:nix-community/home-manager/master";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
    lanzaboote.url = "github:nix-community/lanzaboote";
    lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
    nur.url = "github:nix-community/NUR";
    sops-nix.url = "github:Mic92/sops-nix";
    doom-emacs.url = "github:nix-community/nix-doom-emacs";
    nixos-hardware.url = "github:NixOS/nixos-hardware/master";
    nixos-generators.url = "github:/nix-community/nixos-generators";
    nixos-generators.inputs.nixpkgs.follows = "nixpkgs";
  };
  outputs = { self, nixpkgs, nixpkgs-wayland, home-manager, lanzaboote, nur, sops-nix, doom-emacs, ... } @inputs:
  let
    inherit (self) outputs;
    stateVersion = "unstable";
    hmStateVersion = "23.11";
    libx = import ./lib { inherit inputs outputs stateVersion hmStateVersion; };
  in {
    nixosConfigurations = {
      # Virtual Machines
      nixos-vm-01     = libx.mkHost { hostname = "nixos-vm-01"; };
      # Physical Machines
      nixos-laptop    = libx.mkHost { hostname = "nixos-laptop";    desktop = "hyprland"; gpu = "intel";  theme = "gruvbox"; };
      nixos-framework = libx.mkHost { hostname = "nixos-framework"; desktop = "hyprland"; gpu = "intel";  theme = "gruvbox"; };
      nixos-rpi4-01   = libx.mkHost { hostname = "nixos-rpi4-01";   platform = "aarch64-linux"; };
      nixos-rpi4-02   = libx.mkHost { hostname = "nixos-rpi4-02";   platform = "aarch64-linux"; };
      nixos-rpi4-03   = libx.mkHost { hostname = "nixos-rpi4-03";   platform = "aarch64-linux"; };
    };
    homeConfigurations = {
      # Virtual Machines
      "albert@nixos-vm-01"     = libx.mkHome { hostname = "nixos-vm-01"; };
      # Physical Machines
      "albert@nixos-laptop"    = libx.mkHome { hostname = "nixos-laptop";    desktop = "hyprland"; theme = "gruvbox"; };
      "albert@nixos-framework" = libx.mkHome { hostname = "nixos-framework"; desktop = "hyprland"; theme = "gruvbox"; };
      "albert@nixos-rpi4-01"   = libx.mkHome { hostname = "nixos-rpi4-01";   platform = "aarch64-linux"; };
      "albert@nixos-rpi4-02"   = libx.mkHome { hostname = "nixos-rpi4-02";   platform = "aarch64-linux"; };
      "albert@nixos-rpi4-03"   = libx.mkHome { hostname = "nixos-rpi4-03";   platform = "aarch64-linux"; };
    };
    imageConfigurations = {
      nixos-rpi4-img = nixos-generators.nixosGenerate { system = "aarch64-linux"; format = "sd-aarch64"; };
    };
  };
}