{
  description = "Freya Nix Flake";

  inputs = {
    # nixpkgs
    nixpkgs.url = "github:nixos/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367";

    # home manager
    home-manager.url = "github:nix-community/home-manager/a46e702093a5c46e192243edbd977d5749e7f294";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";

    # nixgl
    nixgl.url = "github:nix-community/nixGL/310f8e49a149e4c9ea52f1adf70cdc768ec53f8a";
    nixgl.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = {
    self,
    nixpkgs,
    home-manager,
    nixgl,
    ...
  } @ inputs: let
    inherit (self) outputs;
    system = "x86_64-linux";
    pkgs = nixpkgs.legacyPackages.${system};
    overlays = [
      nixgl.overlay
    ];
  in {
    homeConfigurations."freya" =
      home-manager.lib.homeManagerConfiguration {
        inherit pkgs;
        extraSpecialArgs = {inherit inputs outputs;};
        modules = [
          {nixpkgs.overlays = overlays;}
          ./home.nix
          {
            _module.args = {
              inherit nixgl;
            };
          }
        ];
      };
  };
}