{ pkgs, ... }:
{
  #nix run nix-darwin -- switch --flake ~/nix-config

  # List packages installed in system profile. To search by name, run:
  # $ nix-env -qaP | grep wget
  environment.systemPackages = with pkgs; [
    asitop
    mas
    python3
    python3Packages.beautifulsoup4
    python3Packages.requests
    python3Packages.selenium
    vim
  ];

  # Homebrew
  homebrew.enable = true;
  homebrew.casks = [
    "spotify"
    "protonvpn"
    "omnissa-horizon-client"
    "tg-pro"
    "steam"
    "orcaslicer"
    "vscodium"
    "epic-games"
    "wine-stable"
    "scroll-reverser"
  ];

  homebrew.masApps = {
    Tailscale = 1475387142;
    Infuse = 1136220934;
    Amphetamine = 937984704;
  };
  # homebrew.global.autoUpdate = true;

  security.pam.services.sudo_local.touchIdAuth = true;

  # Auto upgrade nix package and the daemon service.
  # services.nix-daemon.enable = true;
  # nix.package = pkgs.nix;

  # Necessary for using flakes on this system.
  nix.settings.experimental-features = "nix-command flakes";

  # Allow unfree
  nixpkgs.config.allowUnfree = true;

  # Create /etc/zshrc that loads the nix-darwin environment.
  programs.zsh.enable = true;  # default shell on catalina

  system = {
    defaults = {
      trackpad.Clicking = true;
      dock.autohide = false;

      NSGlobalDomain = {
        AppleInterfaceStyle = "Dark";
        "com.apple.mouse.tapBehavior" = 1;
        "com.apple.keyboard.fnState" = false;
      };
    };

    # Used for backwards compatibility, please read the changelog before changing.
    # $ darwin-rebuild changelog
    stateVersion = 5;
  };

  # The platform the configuration will be used on.
  nixpkgs.hostPlatform = "aarch64-darwin";

  users.users.mattjallen = {
    name = "mattjallen";
    home = "/Users/mattjallen";
  };
}
