{
  description = "Nixos configuration for Timo";

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-25.05";

    nixpkgs-unstable.url = "nixpkgs/nixos-unstable";

    home-manager = {
      url = "github:nix-community/home-manager/release-25.05";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nixos-hardware.url = "github:NixOS/nixos-hardware/master";

    nix-colors.url = "github:misterio77/nix-colors";

    stylix.url = "github:danth/stylix/release-25.05";

    sops-nix.url = "github:Mic92/sops-nix";
    niri.url = "github:sodiboo/niri-flake";

    disko.url = "github:nix-community/disko";
    disko.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = {
    self,
    nixpkgs,
    home-manager,
    nix-colors,
    stylix,
    sops-nix,
    niri,
    disko,
    ...
  } @ inputs: let
    inherit (self) outputs;
    systems = [
      "x86_64-linux"
      "aarch64-linux"
    ];
    forAllSystems = nixpkgs.lib.genAttrs systems;
  in 
  {
    packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system} );
    overlays = import ./overlays { inherit inputs; };
  
    nixosConfigurations = {
      ti-clt-lpt01 = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs outputs; };
        modules = [
          inputs.nixos-hardware.nixosModules.framework-13-7040-amd

          ./hosts/ti-clt-lpt01/configuration.nix
        ];
      };

      ch-clt-dsk01 = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/ch-clt-dsk01/configuration.nix
        ];
      };

      ti-clt-tbl01 = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs outputs; };
        modules = [
          inputs.nixos-hardware.nixosModules.microsoft-surface-go

          ./hosts/ti-clt-tbl01/configuration.nix
        ];
      };

      # Timo's desktop
      ti-clt-dsk01 = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/ti-clt-dsk01/configuration.nix
        ];
      };

      v-th-ctr-01 = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/v-th-ctr-01/configuration.nix
        ];
      };

      # Raspberry pi
      p-th-rpi-01 = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/p-th-rpi-01/configuration.nix
        ];
      };
    };

    homeConfigurations = {
      # Timo
      "xeovalyte@ti-clt-lpt01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/ti-clt-lpt01/home.nix
        ];
      };

      "xeovalyte@ti-clt-tbl01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/ti-clt-tbl01/home.nix
        ];
      };

      "xeovalyte@ti-clt-dsk01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/ti-clt-dsk01/home.nix
        ];
      };

      # Christa
      "kiiwy@ch-clt-dsk01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/ch-clt-dsk01/home.nix
        ];
      };

      # Deploy
      "deploy@v-th-ctr-01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/v-th-ctr-01/home.nix
        ];
      };

      # Deploy
      "deploy@p-th-rpi-01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.aarch64-linux;
        extraSpecialArgs = { inherit inputs outputs; };
        modules = [
          ./hosts/p-th-rpi-01/home.nix
        ];
      };
    };
  };
}

