{
  description = "Home Manager configuration of ryan";

  inputs = {
    # Specify the source of Home Manager and Nixpkgs.
    nixpkgs.url = "github:nixos/nixpkgs/2a55bdc8cfcf41551323a4a6cef24d3f566c824d";
    home-manager = {
      url = "github:nix-community/home-manager/122f70545b29ccb922e655b08acfe05bfb44ec68";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    hyprpicker-git = {
      url = "github:hyprwm/hyprpicker/v0.4.1";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    hyprland = {
      url = "github:hyprwm/hyprland/v0.44.1";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    nixgl = {
      url = "github:nix-community/nixGL/310f8e49a149e4c9ea52f1adf70cdc768ec53f8a";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { nixpkgs, home-manager, hyprpicker-git, hyprland, nixgl, ... }@inputs:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
      overlays = [
        hyprpicker-git.overlays.default
        nixgl.overlay
      ];
    in {
      homeConfigurations."ryan" = home-manager.lib.homeManagerConfiguration {
        inherit pkgs;

        # Specify your home configuration modules here, for example,
        # the path to your home.nix.
        modules = [
          ./home.nix
          {nixpkgs.overlays = overlays;}
          {
            _module.args = {
              inherit hyprland;
              inherit nixgl;
            };
          }
        ];

        # Optionally use extraSpecialArgs
        # to pass through arguments to home.nix
        #extraSpecialArgs = { inherit inputs; };
      };
    };
}