{
    description = "System configuration";
    inputs = {
        nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
        nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";

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

        sops-nix.url = "github:Mic92/sops-nix";
        sops-nix.inputs.nixpkgs.follows = "nixpkgs";

        overlay.url = "path:./pkgs";
    };
    outputs =
        {
            self,
            nixpkgs,
            nixpkgs-unstable,
            home-manager,
            sops-nix,
            overlay,
        }@inputs:
        let
            systems = [
                "aarch64-linux"
                "i686-linux"
                "x86_64-linux"
                "aarch64-darwin"
                "x86_64-darwin"

            ];
            forAllSystems = nixpkgs.lib.genAttrs systems;
            hostname = "blueplum";
            env = import ./${hostname}.nix;
        in
        {
            formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt);

            nixosConfigurations.blueplum = nixpkgs.lib.nixosSystem {
                specialArgs = { inherit inputs hostname env; };
                modules = [
                    {
                        nixpkgs.overlays = [
                            overlay.overlays.default
                            (final: prev: {
                                unstable = import nixpkgs-unstable {
                                    inherit (final) config;
                                    inherit (final.stdenv.hostPlatform) system;
                                };
                            })
                        ];
                    }
                    ./configuration.nix
                    home-manager.nixosModules.home-manager
                    {
                        home-manager = {
                            useGlobalPkgs = true;
                            useUserPackages = true;
                            users.anton = import ./home.nix;
                            sharedModules = import ./modules;
                            extraSpecialArgs = { inherit hostname env; };
                        };
                    }
                    sops-nix.nixosModules.sops
                ];
            };

        };
}
