{
  self,
  inputs,
  nixpkgs,
  ragenix,
  ...
}: let
  nixosSystem = nixpkgs.lib.makeOverridable nixpkgs.lib.nixosSystem;
  customModules = import ./module-list.nix;
  baseModules = [
    # make flake inputs accessible in NixOS
    {_module.args.inputs = inputs;}
    {
      imports = [
        ({pkgs, ...}: {
          nix.nixPath = [
            "nixpkgs=${pkgs.path}"
          ];
          nix.extraOptions = ''
            experimental-features = nix-command flakes
          '';
          documentation.info.enable = false;
        })
      ];
    }
  ];
  defaultModules = baseModules ++ customModules;
in {
  imports = defaultModules;
  profiles.starship.enable = true;
}