{
  description = "NixOS System Config";
  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
    # nixpkgs-wayland - Wayland-specific packages not in nixpkgs
    nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
    # home-manager - Dotfile mnagement
    home-manager.url = "github:nix-community/home-manager/master";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
    # lanzaboote - Secureboot Configuration
    lanzaboote.url = "github:nix-community/lanzaboote";
    lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
    # nur - Nix User Repository - user-submitted / maintained packages
    nur.url = "github:nix-community/NUR";
    # sops-nix - Secret Management with SOPS using GPG Keys
    sops-nix.url = "github:Mic92/sops-nix";
    # doom-emacs - The Doom Emacs distribution`
    doom-emacs.url = "github:nix-community/nix-doom-emacs";
    # nixos-hardware - Hardware Configurations
    nixos-hardware.url = "github:NixOS/nixos-hardware/master";
    # nixos-generators - Automated Image / ISO Creation
    nixos-generators.url = "github:nix-community/nixos-generators";
    nixos-generators.inputs.nixpkgs.follows = "nixpkgs";
    # disko - Declarative Disk Partitioning
    disko.url = "github:nix-community/disko";
    disko.inputs.nixpkgs.follows = "nixpkgs";
    # Firefox theme, for "Gradience" GTK Theming
    firefox-gnome-theme.url = "github:rafaelmardojai/firefox-gnome-theme";
    firefox-gnome-theme.flake = false;
  };
  outputs = { self, nixpkgs, nixpkgs-wayland, home-manager, lanzaboote, nur, sops-nix, doom-emacs, nixos-generators, ... } @inputs:
  let
    inherit (self) outputs;
    stateVersion = "unstable";
    hmStateVersion = "23.11";
    libx = import ./lib { inherit inputs outputs stateVersion hmStateVersion; };
  in {
    nixosConfigurations = {
      # Virtual
      osaka-vultr-01 = libx.mkHost { hostname = "osaka-vultr-01"; type = "small";};
      nixos-vm-01    = libx.mkHost { hostname = "nixos-vm-01"; };
      # Physical
      framework-server = libx.mkHost { hostname = "framework-server"; /*desktop = "gnome"; gpu = "intel";*/  };
      nixos-desktop    = libx.mkHost { hostname = "nixos-desktop";    desktop = "gnome"; gpu = "nvidia"; };
      nixos-framework  = libx.mkHost { hostname = "nixos-framework"; desktop = "hyprland"; gpu = "amd";  theme = "green"; };
      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
      "albert@osaka-vultr-01" = libx.mkHome { hostname = "osaka-vultr-01"; };
      "albert@nixos-vm-01"    = libx.mkHome { hostname = "nixos-vm-01"; };
      # Physical
      "albert@framework-server" = libx.mkHome { hostname = "framework-server"; };
      "albert@nixos-desktop"    = libx.mkHome { hostname = "nixos-desktop"; };
      "albert@nixos-framework"  = libx.mkHome { hostname = "nixos-framework"; desktop = "hyprland"; theme = "green"; };
      "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    = libx.mkImage { hostname = "nixos-rpi4-img";    format = "sd-aarch64";  platform = "aarch64-linux"; };
      nixos-iso-console = libx.mkImage { hostname = "nixos-iso-console"; format = "iso"; };
      nixos-iso-desktop = libx.mkImage { hostname = "nixos-iso-desktop"; format = "iso"; desktop = "gnome"; };
    };

    # Devshell for bootstrapping; acessible via 'nix develop'
    devShells = libx.forAllSystems (system:
      let pkgs = nixpkgs.legacyPackages.${system};
      in import ./shell.nix { inherit pkgs sops-nix; }
    );
  };
}