{
  description = "My system flake";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

    nix-flatpak.url = "github:gmodena/nix-flatpak";

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

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

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

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

    agenix = {
      url = "github:ryantm/agenix";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        home-manager.follows = "home-manager";
        darwin.follows = "";
      };
    };
  };

  outputs =
    inputs@{ self, nixpkgs, ... }:
    let
      hosts = {
        "wenar-nix" = "x86_64-linux";
        "lenar" = "x86_64-linux";
      };
    in
    {
      # Please replace my-nixos with your hostname
      nixosConfigurations = nixpkgs.lib.genAttrs (builtins.attrNames hosts) (
        host:
        let
          arch = hosts.${host};
        in
        nixpkgs.lib.nixosSystem {
          system = arch;
          modules = [
            (import ./overlays)
            ./nixosModules
            ./hosts/${host}
            ./hosts/base
          ];
          specialArgs = {
            inherit inputs;
          };
        }
      );
      packages.x86_64-linux =
        let
          pkgs = import nixpkgs {
            system = "x86_64-linux";
            allowUnfree = true;
          };
        in
        {
          uv-bin = pkgs.callPackage ./packages/uv { };
        };
      formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
      hydraJobs = {
        inherit (self) packages;
      };
    };
}