/ modules / darwin-config.nix
darwin-config.nix
  1  { pkgs, flakePkgs, fenix, ... }:
  2  
  3  let
  4    user = "elianiva";
  5    hostname = "melon";
  6  in
  7  {
  8      system.stateVersion = 6;
  9  
 10      networking.hostName = "${hostname}";
 11      networking.localHostName = "${hostname}";
 12  
 13      users.users.${user} = {
 14        name = "${user}";
 15        home = "/Users/${user}";
 16      };
 17  
 18      # allow unfree packages
 19      nixpkgs = {
 20        config = {
 21          allowUnfree = true;
 22        };
 23      };
 24  
 25      # setup nix
 26      nix.enable = false;
 27  
 28      homebrew = {
 29        enable = true;
 30        brews = pkgs.callPackage ./brews.nix { };
 31        casks = pkgs.callPackage ./casks.nix { };
 32        caskArgs = {
 33          appdir = "~/Applications";
 34          require_sha = true;
 35        };
 36        onActivation = {
 37          autoUpdate = true;
 38          upgrade = true;
 39          cleanup = "zap";
 40          extraFlags = [ "--verbose" ];
 41        };
 42        global = {
 43          brewfile = true;
 44        };
 45      };
 46  
 47      environment.systemPackages = import ./darwin-packages.nix { inherit pkgs flakePkgs fenix; };
 48      fonts.packages = with pkgs; [ monaspace inter lora lilex departure-mono iosevka ];
 49  
 50      system.primaryUser = user;
 51  
 52      # enable touchid for sudo
 53      security.pam.services.sudo_local.touchIdAuth = true;
 54  
 55      # keyboard
 56      system.keyboard.enableKeyMapping = true;
 57      system.keyboard.remapCapsLockToEscape = true;
 58  
 59       # docks
 60      system.defaults.dock = {
 61        autohide = true;
 62        mineffect = "scale";
 63        magnification = true;
 64        show-recents = false;
 65        persistent-apps = [
 66          "/Users/${user}/Applications/Ghostty.app"
 67        ];
 68        appswitcher-all-displays = true;
 69      };
 70  
 71      # misc settings
 72      system.defaults.NSGlobalDomain = {
 73        # Repeat character while key held instead of showing character accents menu
 74        ApplePressAndHoldEnabled = false;
 75  
 76        # fastest possible key repeat with minimum delay
 77        InitialKeyRepeat = 15;
 78        KeyRepeat = 2;
 79  
 80        # turn off font smoothing
 81        AppleFontSmoothing = 0;
 82  
 83        NSAutomaticCapitalizationEnabled = false;
 84        NSAutomaticSpellingCorrectionEnabled = false;
 85  
 86        # faster trackpad speed
 87        "com.apple.trackpad.scaling" = 2.0;
 88  
 89        # enable forceclick to show definition
 90        "com.apple.trackpad.forceClick" = true;
 91      };
 92  
 93      system.defaults.finder = {
 94        AppleShowAllExtensions = true;
 95        CreateDesktop = false;
 96        FXDefaultSearchScope = "SCcf";
 97        FXPreferredViewStyle = "clmv";
 98        FXRemoveOldTrashItems = true;
 99        _FXSortFoldersFirst = true;
100        ShowPathbar = true;
101      };
102  
103      system.defaults.screencapture = {
104        disable-shadow = false;
105        location = "~/Pictures/Screenshots";
106      };
107  
108      system.defaults.trackpad = {
109        Clicking = true;
110        TrackpadThreeFingerDrag = true;
111      };
112  
113      system.defaults.hitoolbox.AppleFnUsageType = "Change Input Source";
114  
115      # ads
116      system.defaults.CustomUserPreferences."com.apple.AdLib" = {
117        allowApplePersonalizedAdvertising = false;
118        allowIdentifierForAdvertising = false;
119      };
120  
121      # disable power chime sound
122      system.defaults.CustomUserPreferences."com.apple.PowerChime".ChimeOnNoHardware = false;
123  }