initial commit

This commit is contained in:
2024-07-30 00:09:42 -04:00
commit b2afed60e0
18 changed files with 690 additions and 0 deletions

40
modules/apps.nix Normal file
View File

@ -0,0 +1,40 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; [
neovim
git
];
environment.variables.EDITOR = "nvim";
homebrew = {
enable = true;
onActivation = {
autoUpdate = false;
# 'zap': uninstalls all formulae(and related files) not listed here.
cleanup = "zap";
};
# Applications to install from Mac App Store using mas.
# You need to install all these Apps manually first so that your apple account have records for them.
# otherwise Apple Store will refuse to install them.
# For details, see https://github.com/mas-cli/mas
masApps = {
Xcode = 497799835;
"Reeder 5." = 1529448980;
Wireguard = 1451685025;
Bitwarden = 1352778147;
"AdGuard for Safari" = 1440147259;
};
taps = [
];
brews = [
];
casks = [
];
};
}

23
modules/host-users.nix Normal file
View File

@ -0,0 +1,23 @@
{
username,
hostname,
...
} @ args:
#############################################################
#
# Host & Users configuration
#
#############################################################
{
networking.hostName = hostname;
networking.computerName = hostname;
system.defaults.smb.NetBIOSName = hostname;
# Define a user account. Don't forget to set a password with passwd.
users.users."${username}" = {
home = "/Users/${username}";
description = username;
};
nix.settings.trusted-users = [username];
}

31
modules/nix-core.nix Normal file
View File

@ -0,0 +1,31 @@
{ pkgs, lib, ... }:
{
# enable flakes globally
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true;
# Use this instead of services.nix-daemon.enable if you
# don't wan't the daemon service to be managed for you.
# nix.useDaemon = true;
nix.package = pkgs.nix;
# do garbage collection weekly to keep disk usage low
nix.gc = {
automatic = lib.mkDefault true;
options = lib.mkDefault "--delete-older-than 7d";
};
# Disable auto-optimise-store because of this issue:
# https://github.com/NixOS/nix/issues/7273
# "error: cannot link '/nix/store/.tmp-link-xxxxx-xxxxx' to '/nix/store/.links/xxxx': File exists"
nix.settings = {
auto-optimise-store = false;
};
}

175
modules/system.nix Normal file
View File

@ -0,0 +1,175 @@
{ pkgs, ... }:
###################################################################################
#
# macOS's System configuration
#
# All the configuration options are documented here:
# https://daiderd.com/nix-darwin/manual/index.html#sec-options
# Incomplete list of macOS `defaults` commands :
# https://github.com/yannbertrand/macos-defaults
#
###################################################################################
{
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;
# 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
# };
# # 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 = {
# 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 keys 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 this project to get more undocumented options:
# # https://github.com/rgcr/m-cli
# #
# # 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.
# 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;
# };
};
# 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";
}