{
  description = "NixOS System Config";
  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";                                # NixOS packages
    home-manager.url = "github:nix-community/home-manager/release-23.05";  # Manage dotfiles in a home directory
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
    lanzaboote.url = "github:nix-community/lanzaboote";                    # Secureboot Configuration
    lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
    nur.url = "github:nix-community/NUR";                                  # Nix User Repository
    sops-nix.url = "github:Mic92/sops-nix";                                # Encrypted secrets in Nix configuration files
  };
  outputs = {  
    self, nixpkgs,  home-manager,  lanzaboote,  nur,  sops-nix, ... 
  }@inputs:
  let
    inherit (self) outputs;
    stateVersion = "unstable";
    hmStateVersion = "23.05";
    libx = import ./lib { inherit inputs outputs hmStateVersion stateVersion; };
  in {
    nixosConfigurations = {
      nixos-laptop  = libx.mkHost { hostname = "nixos-laptop";  username = "albert"; desktop = "gnome"; };
      nixos-desktop = libx.mkHost { hostname = "nixos-desktop"; username = "albert"; desktop = "gnome"; };
    };
    homeConfigurations  = {
      "albert@nixos-laptop"  = libx.mkHome { hostname = "nixos-laptop";   username = "albert"; desktop = "gnome"; };
      "root@nixos-laptop"    = libx.mkHome { hostname = "nixos-laptop";   username = "root";   desktop = "gnome"; };

      "albert@nixos-desktop" = libx.mkHome { hostname = "nixos-desktop";  username = "albert"; desktop = "gnome"; };
      "root@nixos-desktop"   = libx.mkHome { hostname = "nixos-desktop";  username = "root";   desktop = "gnome"; };
    };
  };
}