# It sets up system-level configuration and integrates with home-manager. { config, pkgs, lib, username, ... }: { # Nix configuration nix = { settings = { # Enable flakes and new nix command experimental-features = ["nix-command" "flakes"]; # Avoid unwanted garbage collection when using nix-direnv keep-outputs = true; keep-derivations = true; }; }; # Allow unfree packages nixpkgs.config.allowUnfree = true; system = { primaryUser = username; keyboard = { enableKeyMapping = true; remapCapsLockToControl = true; }; startup.chime = false; defaults = { spaces.spans-displays = false; loginwindow = { GuestEnabled = false; DisableConsoleAccess = true; }; dock = { autohide = true; autohide-delay = 0.0; autohide-time-modifier = 0.0; orientation = "bottom"; dashboard-in-overlay = true; largesize = 85; tilesize = 50; magnification = true; launchanim = false; mru-spaces = false; show-recents = false; show-process-indicators = false; static-only = true; }; finder = { AppleShowAllExtensions = true; AppleShowAllFiles = true; CreateDesktop = false; FXDefaultSearchScope = "SCcf"; # current folder QuitMenuItem = true; }; NSGlobalDomain = { NSAutomaticSpellingCorrectionEnabled = false; NSAutomaticCapitalizationEnabled = false; NSAutomaticPeriodSubstitutionEnabled = false; NSAutomaticDashSubstitutionEnabled = false; NSAutomaticQuoteSubstitutionEnabled = false; NSAutomaticWindowAnimationsEnabled = false; NSDocumentSaveNewDocumentsToCloud = false; ApplePressAndHoldEnabled = false; KeyRepeat = 2; InitialKeyRepeat = 10; # Enable subpixel font rendering on non-Apple LCDs # Reference: https://github.com/kevinSuttle/macOS-Defaults/issues/17#issuecomment-266633501 AppleFontSmoothing = 2; # Finder: show all filename extensions AppleShowAllExtensions = true; }; CustomUserPreferences = { LaunchServices = { # Whether to enable quarantine for downloaded applications LSQuarantine = false; }; trackpad = { Clicking = true; TrackpadRightClick = true; }; "com.apple.systempreferences" = { # Disable Resume system-wide NSQuitAlwaysKeepsWindows = false; }; "com.apple.desktopservices" = { # Avoid creating .DS_Store files on network or USB volumes DSDontWriteNetworkStores = true; DSDontWriteUSBStores = true; }; "com.apple.screensaver" = { # Require password immediately after sleep or screen saver begins askForPassword = 1; askForPasswordDelay = 0; }; "com.apple.AdLib" = { # Don't fucking track me... allowApplePersonalizedAdvertising = false; }; "com.apple.BluetoothAudioAgent" = { # Increase sound quality for Bluetooth headphones/headsets "Apple Bitpool Min (editable)" = -40; }; "com.apple.dashboard" = { # Disable Dashboard mcx-disabled = true; }; alf = { # Enables Firewall globalstate = 1; # Enable logging of requests loggingenabled = 1; # Drops incoming requests via ICMP such as ping requests stealthenabled = 1; }; }; }; }; users.users.${username} = { name = username; home = "/Users/${username}"; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaIAP/ZJ7+7jeR44e1yIJjfQAB6MN351LDKJAXVF62P" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILAzuPy7D/54GxMq9Zhz0CUjaDnEQ6RkQ/yqVYl7U55k" ]; }; # Used for backwards compatibility, read the changelog before changing. # $ darwin-rebuild changelog system.stateVersion = 5; }