diff --git a/home/personal.nix b/home/personal.nix index 60eb787..5caf9f9 100644 --- a/home/personal.nix +++ b/home/personal.nix @@ -70,6 +70,10 @@ username = "morten"; passwordFile = "/Users/alice/Library/Application Support/jellyfin-tui/pass"; }; + + zen-browser = { + enable = true; + } }; # Personal-only packages diff --git a/hosts/personal/default.nix b/hosts/personal/default.nix index c9fde21..a117d8d 100644 --- a/hosts/personal/default.nix +++ b/hosts/personal/default.nix @@ -11,136 +11,10 @@ }: { # Import darwin modules imports = [ + ../../modules/darwin/system.nix ../../modules/darwin/homebrew.nix ]; - # 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" - ]; - }; # System-level programs programs = { diff --git a/hosts/work/default.nix b/hosts/work/default.nix index fdcb1cd..0e4805b 100644 --- a/hosts/work/default.nix +++ b/hosts/work/default.nix @@ -11,137 +11,10 @@ }: { # Import darwin modules imports = [ + ../../modules/darwin/system.nix ../../modules/darwin/homebrew.nix ]; - # 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" - ]; - }; - # System-level programs programs = { # Enable zsh as it's the default macOS shell diff --git a/modules/darwin/system.nix b/modules/darwin/system.nix new file mode 100644 index 0000000..46c6c30 --- /dev/null +++ b/modules/darwin/system.nix @@ -0,0 +1,145 @@ +# It sets up system-level configuration and integrates with home-manager. +{ + config, + pkgs, + lib, + username, + ... +}: { + # Import darwin modules + imports = [ + ../modules/darwin/homebrew.nix + ]; + + # 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; +} diff --git a/modules/home/apps.nix b/modules/home/apps.nix index 846fc70..f9b402e 100644 --- a/modules/home/apps.nix +++ b/modules/home/apps.nix @@ -21,6 +21,15 @@ in { }; }; + zen-browser = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Zen Browser configuration (macOS only)"; + }; + }; + + jellyfin-tui = { enable = lib.mkOption { type = lib.types.bool;