{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
    home-manager.url = "github:nix-community/home-manager/release-24.11";

    apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
    stylix.url = "github:danth/stylix/release-24.11";
    apple-emoji.url = "github:oxcl/apple-emoji-nix";

    ags.url = "github:Aylur/ags";

    fingerprint-sensor.url = "github:ahbnr/nixos-06cb-009a-fingerprint-sensor/24.11";
    android-nixpkgs.url = "github:tadfisher/android-nixpkgs";
    hyprspace.url = "github:KZDKM/Hyprspace";

    android-nixpkgs.inputs.nixpkgs.follows = "nixpkgs";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
    stylix.inputs.nixpkgs.follows = "nixpkgs";
    ags.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs =
    {
      self,
      nixpkgs,
      android-nixpkgs,
      ...
    }@inputs:
    let
      prefs = import ./preferences.nix { inherit inputs; };
      forAllSystems = nixpkgs.lib.genAttrs [
        "aarch64-linux"
        "x86_64-linux"
        "aarch64-darwin"
      ];
    in
    {
      nixosConfigurations = import ./hosts { inherit self prefs; };
      devShells = forAllSystems (
        system:
        let
          pkgs = nixpkgs.legacyPackages.${system};
        in
        {
          ddt4all = import ./shells/ddt4all.nix { inherit pkgs; };
          android = import ./shells/android.nix { inherit pkgs android-nixpkgs; };
          rust = import ./shells/rust.nix { inherit pkgs; };
        }
      );
    };
}
