{
  description = "Laptop System Config";

  inputs = {
    # NixOS packages
    nixpkgs.url = "nixpkgs/nixos-23.05";

    # Manage dotfiles in a home directory
    home-manager.url = "github:nix-community/home-manager/release-23.05";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";

    # Secureboot Configuration
    lanzaboote.url = "github:nix-community/lanzaboote";
    lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = { nixpkgs, home-manager, lanzaboote, ... }:
  let
    # Secureboot Configuration

    system = "x86_64-linux";
    pkgs = import nixpkgs {
      # Tells Flake what OS version we are using
      inherit system;
      config = { allowUnfree = true; };
    };

    lib = nixpkgs.lib;
  in {
    nixosConfigurations = {
      nixos-p1 = lib.nixosSystem { 
        inherit system;

        modules = [
          ./hardware-configuration.nix
          lanzaboote.nixosModules.lanzaboote
          ./configuration.nix

          home-manager.nixosModules.home-manager {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
          }
        ];
      };
    };
  };
}