| 
									
										
										
										
											2024-10-30 22:41:37 -04:00
										 |  |  |  | {pkgs, hostname, ...}: { | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  |   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 = { | 
					
						
							| 
									
										
										
										
											2024-09-07 22:22:12 -04:00
										 |  |  |  |       menuExtraClock.Show24Hour = true; # show 24 hour clock | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  |       # customize dock | 
					
						
							| 
									
										
										
										
											2024-09-07 22:22:12 -04:00
										 |  |  |  |       dock = { | 
					
						
							|  |  |  |  |         autohide = true; | 
					
						
							|  |  |  |  |         #   show-recents = false;  # disable recent apps | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #   # customize Hot Corners | 
					
						
							|  |  |  |  |         #   wvous-tl-corner = 2;  # top-left - Mission Control | 
					
						
							|  |  |  |  |         #   wvous-tr-corner = 13;  # top-right - Lock Screen | 
					
						
							|  |  |  |  |         #   wvous-bl-corner = 3;  # bottom-left - Application Windows | 
					
						
							|  |  |  |  |         #   wvous-br-corner = 4;  # bottom-right - Desktop | 
					
						
							|  |  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       # # customize finder | 
					
						
							| 
									
										
										
										
											2024-09-07 22:22:12 -04:00
										 |  |  |  |       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 | 
					
						
							|  |  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       # # customize trackpad | 
					
						
							|  |  |  |  |       # trackpad = { | 
					
						
							|  |  |  |  |       #   Clicking = true;  # enable tap to click | 
					
						
							|  |  |  |  |       #   TrackpadRightClick = true;  # enable two finger right click | 
					
						
							|  |  |  |  |       #   TrackpadThreeFingerDrag = true;  # enable three finger drag | 
					
						
							|  |  |  |  |       # }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       # # customize settings that not supported by nix-darwin directly | 
					
						
							|  |  |  |  |       # # Incomplete list of macOS `defaults` commands : | 
					
						
							|  |  |  |  |       # #   https://github.com/yannbertrand/macos-defaults | 
					
						
							|  |  |  |  |       # 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 | 
					
						
							|  |  |  |  |       #   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. | 
					
						
							| 
									
										
										
										
											2024-09-07 23:20:24 -04:00
										 |  |  |  |       # InitialKeyRepeat = 15; # normal minimum is 15 (225 ms), maximum is 120 (1800 ms) | 
					
						
							| 
									
										
										
										
											2024-09-07 22:22:12 -04:00
										 |  |  |  |       #   # sets how fast it repeats once it starts. | 
					
						
							| 
									
										
										
										
											2024-09-07 23:20:24 -04:00
										 |  |  |  |       # KeyRepeat = 3; # normal minimum is 2 (30 ms), maximum is 120 (1800 ms) | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-30 12:33:02 -05:00
										 |  |  |  |       #   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 | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  |       #   NSNavPanelExpandedStateForSaveMode2 = true; | 
					
						
							|  |  |  |  |       # }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       # # Customize settings that not supported by nix-darwin directly | 
					
						
							|  |  |  |  |       # # see the source code of this project to get more undocumented options: | 
					
						
							|  |  |  |  |       # #    https://github.com/rgcr/m-cli | 
					
						
							| 
									
										
										
										
											2024-09-07 22:22:12 -04:00
										 |  |  |  |       # # | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  |       # # All custom entries can be found by running `defaults read` command. | 
					
						
							|  |  |  |  |       # # or `defaults read xxx` to read a specific domain. | 
					
						
							|  |  |  |  |       # 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" = { | 
					
						
							|  |  |  |  |       #     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.spaces" = { | 
					
						
							|  |  |  |  |       #     "spans-displays" = 0; # Display have seperate spaces | 
					
						
							|  |  |  |  |       #   }; | 
					
						
							|  |  |  |  |       #   "com.apple.WindowManager" = { | 
					
						
							|  |  |  |  |       #     EnableStandardClickToShowDesktop = 0; # Click wallpaper to reveal desktop | 
					
						
							|  |  |  |  |       #     StandardHideDesktopIcons = 0; # Show items on desktop | 
					
						
							|  |  |  |  |       #     HideDesktop = 0; # Do not hide items on desktop & stage manager | 
					
						
							|  |  |  |  |       #     StageManagerHideWidgets = 0; | 
					
						
							|  |  |  |  |       #     StandardHideWidgets = 0; | 
					
						
							|  |  |  |  |       #   }; | 
					
						
							|  |  |  |  |       #   "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. | 
					
						
							| 
									
										
										
										
											2024-09-07 23:20:24 -04:00
										 |  |  |  |     # 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; | 
					
						
							|  |  |  |  |     # }; | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-30 22:41:37 -04:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   networking.hostName = hostname; | 
					
						
							|  |  |  |  |   networking.computerName = hostname; | 
					
						
							|  |  |  |  |   networking.firewall.enable = true; # VERY important, do not touch | 
					
						
							|  |  |  |  |   networking.firewall.allowedTCPPorts = []; | 
					
						
							|  |  |  |  |   networking.firewall.allowedUDPPorts = []; | 
					
						
							|  |  |  |  |   system.defaults.smb.NetBIOSName = hostname; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-30 00:09:42 -04:00
										 |  |  |  |   # Add ability to used TouchID for sudo authentication | 
					
						
							|  |  |  |  |   security.pam.enableSudoTouchIdAuth = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   # Create /etc/zshrc that loads the nix-darwin environment. | 
					
						
							|  |  |  |  |   # this is required if you want to use darwin's default shell - zsh | 
					
						
							|  |  |  |  |   programs.zsh.enable = true; | 
					
						
							|  |  |  |  |   environment.shells = [ | 
					
						
							|  |  |  |  |     pkgs.zsh | 
					
						
							|  |  |  |  |     pkgs.fish | 
					
						
							|  |  |  |  |     pkgs.bash | 
					
						
							|  |  |  |  |   ]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   # Set your time zone. | 
					
						
							|  |  |  |  |   time.timeZone = "America/Detroit"; | 
					
						
							|  |  |  |  | } |