{
  description = "Lyes' nix files";

  inputs = {
    # nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
    nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.05";

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

    nixos-hardware.url = "github:NixOS/nixos-hardware/master";
    nix-flatpak.url = "github:gmodena/nix-flatpak/latest";
    zen-browser.url = "github:0xc000022070/zen-browser-flake";

    mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver";

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

    agenix = {
      url = "github:ryantm/agenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, mailserver, ... }@inputs: {
    nixosConfigurations = {
      # Framework Computer
      piaf = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = inputs;
        modules = [ ./hosts/piaf ];
      };

      # Crans Server
      zora = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = inputs;
        modules = [
          ./hosts/zora
          mailserver.nixosModules.default
        ];
      };

      # Desktop ISO
      triforce = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = inputs;
        modules = [ ./hosts/triforce ];
      };
    };

    packages."x86_64-linux" = {
      desktop-iso = self.nixosConfigurations.desktop-iso.config.system.build.isoImage;
    };
  };
}
