{ pkgs, ... }: {
  imports = [
    ./settings/darwin.nix
    ./settings/dev.nix
    ./settings/programs/nh.nix
    ./settings/programs/shell.nix
  ];

  services.caddy = {
    user = "root";
    group = "wheel";
  };

  services.redis = {
    enable = true;
    bind = "127.0.0.1 ::1";
    extraConfig = ''
      save ""
    '';
  };

  programs.fish.enable = true;
  environment.shells = with pkgs; [
    fish
    "/Users/alan/.local/state/nix/profile/bin/fish"
  ];

  environment.variables.LANG = "en_GB.UTF-8";

  launchd.user.envVariables = {
    SSH_AUTH_SOCK = "/Users/alan/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh";
  };

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

  # You should generally set this to the total number of logical cores in your system.
  # $ sysctl -n hw.ncpu
  nix.settings = {
    max-jobs = 8;
    cores = 4;
    auto-optimise-store = false; # https://github.com/NixOS/nix/issues/7273
  };

  nix = {
    distributedBuilds = true;
    buildMachines = [
      {
        protocol = "ssh-ng";
        sshUser = "nixremote";
        hostName = "linde.alanpearce.eu";
        system = "aarch64-linux";
        maxJobs = 2;
        speedFactor = 1;
        supportedFeatures = [ ];
      }
    ];
  };

  system.defaults = {
    dock = {
      launchanim = false;
      autohide = true;
      autohide-delay = 0.05;
      autohide-time-modifier = 0.12;
      mineffect = "scale";
      minimize-to-application = true;
      show-process-indicators = false;
      scroll-to-open = true;
      expose-animation-duration = 0.5;
    };
    finder = {
      QuitMenuItem = true;
      NewWindowTarget = "Home";
      _FXSortFoldersFirst = true;
      FXDefaultSearchScope = "SCcf"; # current folder
      FXPreferredViewStyle = "clmv"; # column view
      FXRemoveOldTrashItems = true;
      FXEnableExtensionChangeWarning = false;
    };
    NSGlobalDomain = {
      AppleShowScrollBars = "Always";
    };
    screensaver = {
      askForPasswordDelay = 60;
    };
    menuExtraClock =
      let
        if-space = 0;
        always = 1;
        never = 2;
      in
      {
        Show24Hour = true;
        ShowDate = never;
      };
    hitoolbox = {
      AppleFnUsageType = "Do Nothing";
    };
    trackpad = {
      TrackpadThreeFingerTapGesture = 2; # Lookup
    };
    controlcenter = {
      Sound = true;
      FocusModes = true;
    };
  };
}