{ config, lib, pkgs, ... }:

with lib;

let

  cfg = config.home-manager;

in {
  imports = [ ../nixos/common.nix ];

  config = mkMerge [
    { home-manager.extraSpecialArgs.darwinConfig = config; }
    (mkIf (cfg.users != { }) {
      system.activationScripts.postActivation.text = concatStringsSep "\n"
        (mapAttrsToList (username: usercfg: ''
          echo Activating home-manager configuration for ${username}
          sudo -u ${username} --set-home ${
            pkgs.writeShellScript "activation-${username}" ''
              ${lib.optionalString (cfg.backupFileExtension != null)
              "export HOME_MANAGER_BACKUP_EXT=${
                lib.escapeShellArg cfg.backupFileExtension
              }"}
              ${lib.optionalString cfg.verbose "export VERBOSE=1"}
              exec ${usercfg.home.activationPackage}/activate
            ''
          }
        '') cfg.users);
    })
  ];
}