{pkgs, ...}: ################################################################################### # # macOS's System configuration # # All the configuration options are documented here: # https://daiderd.com/nix-darwin/manual/index.html#sec-options # # NOTE: Some options are not supported by nix-darwin directly, manually set them: # 1. To avoid conflicts with neovim, disable ctrl + up/down/left/right to switch spaces in: # [System Preferences] -> [Keyboard] -> [Keyboard Shortcuts] -> [Mission Control] # 2. Disable use Caps Lock as 中/英 switch in: # [System Preferences] -> [Keyboard] -> [Input Sources] -> [Edit] -> [Use 中/英 key to switch ] -> [Disble] ################################################################################### { # Add ability to used TouchID for sudo authentication security.pam.enableSudoTouchIdAuth = true; system = { # activationScripts are executed every time you boot the system or run `nixos-rebuild` / `darwin-rebuild`. activationScripts.postUserActivation.text = '' # activateSettings -u will reload the settings from the database and apply them to the current session, # so we do not need to logout and login again to make the changes take effect. /System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u ''; defaults = { menuExtraClock.Show24Hour = true; # show 24 hour clock # customize dock dock = { autohide = true; # automatically hide and show the dock show-recents = false; # do not show recent apps in dock # do not automatically rearrange spaces based on most recent use. mru-spaces = false; # customize Hot Corners(触发角, 鼠标移动到屏幕角落时触发的动作) wvous-tl-corner = 2; # top-left - Mission Control wvous-tr-corner = 4; # top-right - Desktop wvous-bl-corner = 3; # bottom-left - Application Windows wvous-br-corner = 13; # bottom-right - Lock Screen }; # customize finder finder = { _FXShowPosixPathInTitle = true; # show full path in finder title AppleShowAllExtensions = true; # show all file extensions FXEnableExtensionChangeWarning = false; # disable warning when changing file extension QuitMenuItem = true; # enable quit menu item ShowPathbar = true; # show path bar ShowStatusBar = true; # show status bar }; # customize trackpad trackpad = { # tap - 轻触触摸板, click - 点击触摸板 Clicking = true; # enable tap to click(轻触触摸板相当于点击) TrackpadRightClick = true; # enable two finger right click TrackpadThreeFingerDrag = true; # enable three finger drag }; # customize macOS NSGlobalDomain = { # `defaults read NSGlobalDomain "xxx"` "com.apple.swipescrolldirection" = true; # enable natural scrolling(default to true) "com.apple.sound.beep.feedback" = 0; # disable beep sound when pressing volume up/down key # Appearance AppleInterfaceStyle = "Dark"; # dark mode AppleKeyboardUIMode = 3; # Mode 3 enables full keyboard control. ApplePressAndHoldEnabled = true; # enable press and hold # If you press and hold certain keyboard keys when in a text area, the key’s character begins to repeat. # This is very useful for vim users, they use `hjkl` to move cursor. # sets how long it takes before it starts repeating. InitialKeyRepeat = 15; # normal minimum is 15 (225 ms), maximum is 120 (1800 ms) # sets how fast it repeats once it starts. KeyRepeat = 3; # normal minimum is 2 (30 ms), maximum is 120 (1800 ms) NSAutomaticCapitalizationEnabled = false; # disable auto capitalization(自动大写) NSAutomaticDashSubstitutionEnabled = false; # disable auto dash substitution(智能破折号替换) NSAutomaticPeriodSubstitutionEnabled = false; # disable auto period substitution(智能句号替换) NSAutomaticQuoteSubstitutionEnabled = false; # disable auto quote substitution(智能引号替换) NSAutomaticSpellingCorrectionEnabled = false; # disable auto spelling correction(自动拼写检查) NSNavPanelExpandedStateForSaveMode = true; # expand save panel by default(保存文件时的路径选择/文件名输入页) NSNavPanelExpandedStateForSaveMode2 = true; }; # customize settings that not supported by nix-darwin directly # see the source code of https://github.com/rgcr/m-cli to get all the available options CustomUserPreferences = { ".GlobalPreferences" = { # automatically switch to a new space when switching to the application AppleSpacesSwitchOnActivate = true; }; NSGlobalDomain = { # Add a context menu item for showing the Web Inspector in web views WebKitDeveloperExtras = true; }; "com.apple.finder" = { AppleShowAllFiles = true; ShowExternalHardDrivesOnDesktop = true; ShowHardDrivesOnDesktop = true; ShowMountedServersOnDesktop = true; ShowRemovableMediaOnDesktop = true; _FXSortFoldersFirst = true; # When performing a search, search the current folder by default FXDefaultSearchScope = "SCcf"; }; "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.screencapture" = { location = "~/Desktop"; type = "png"; }; "com.apple.AdLib" = { allowApplePersonalizedAdvertising = false; }; # Prevent Photos from opening automatically when devices are plugged in "com.apple.ImageCapture".disableHotPlug = true; }; loginwindow = { GuestEnabled = false; # disable guest user SHOWFULLNAME = true; # show full name in login window }; }; # keyboard settings is not very useful on macOS # the most important thing is to remap option key to alt key globally, # but it's not supported by macOS yet. keyboard = { enableKeyMapping = true; # enable key mapping so that we can use `option` as `control` # NOTE: do NOT support remap capslock to both control and escape at the same time remapCapsLockToControl = false; # remap caps lock to control, useful for emac users remapCapsLockToEscape = true; # remap caps lock to escape, useful for vim users # swap left command and left alt # so it matches common keyboard layout: `ctrl | command | alt` # # disabled, caused only problems! swapLeftCommandAndLeftAlt = false; userKeyMapping = [ # remap escape to caps lock # so we swap caps lock and escape, then we can use caps lock as escape { HIDKeyboardModifierMappingSrc = 30064771113; HIDKeyboardModifierMappingDst = 30064771129; } ]; }; }; # Set your time zone. # comment this due to the issue: # https://github.com/LnL7/nix-darwin/issues/359 # time.timeZone = "Asia/shanghai"; # Fonts fonts = { # will be removed after this PR is merged: # https://github.com/LnL7/nix-darwin/pull/754 fontDir.enable = true; # will change to `fonts.packages` after this PR is merged: # https://github.com/LnL7/nix-darwin/pull/754 fonts = with pkgs; [ # packages = with pkgs; [ # icon fonts material-design-icons font-awesome # 思源系列字体是 Adobe 主导的。其中汉字部分被称为「思源黑体」和「思源宋体」,是由 Adobe + Google 共同开发的 source-sans # 无衬线字体,不含汉字。字族名叫 Source Sans 3 和 Source Sans Pro,以及带字重的变体,加上 Source Sans 3 VF source-serif # 衬线字体,不含汉字。字族名叫 Source Code Pro,以及带字重的变体 source-han-sans # 思源黑体 source-han-serif # 思源宋体 # nerdfonts # https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/data/fonts/nerdfonts/shas.nix (nerdfonts.override { fonts = [ # symbols icon only "NerdFontsSymbolsOnly" # Characters "FiraCode" "JetBrainsMono" "Iosevka" ]; }) julia-mono dejavu_fonts ]; }; }