{
  self,
  flake-utils,
  nixng,
  nginx,
  blog,
  nixpkgs,
  nixpkgs-master,
  ...
}:
flake-utils.lib.eachDefaultSystem (system: let
  images = {
    dnsmasq = ./dnsmasq.nix;
    attic = ./attic.nix;
    ntfy = ./ntfy.nix;
    radicale = ./radicale.nix;
    jellyseerr = ./jellyseerr.nix;
    radarr = ./radarr.nix;
    sonarr = ./sonarr.nix;
    bazarr = ./bazarr.nix;
    prowlarr = ./prowlarr.nix;
    blog = ./blog.nix;
    deluge = ./deluge.nix;
    mealie = ./mealie.nix;
    atuin = ./atuin.nix;
  };
in {
  nixngConfigurations = builtins.mapAttrs (name: configFile:
    nixng.nglib.makeSystem {
      inherit nixpkgs system;
      name = "nixng-${name}";
      config = import configFile;

      specialArgs = {
        inherit nginx blog;
        inherit (self) globals;
      };

      extraModules = [
        self.nixngModules.ids
        self.nixngModules.bazarr
        self.nixngModules.radicale
        self.nixngModules.jellyseerr
        self.nixngModules.radarr
        self.nixngModules.sonarr
        self.nixngModules.prowlarr
        self.nixngModules.deluge
        self.nixngModules.atuin
        {
          nixpkgs.overlays = [
            (_final: _prev: {
              # From master branch
              inherit (nixpkgs-master.legacyPackages.${system}) jellyseerr radicale bazarr prowlarr;
            })
          ];
        }
      ];
    })
  images;
})