diff --git a/modules/system/defaults/CustomPreferences.nix b/modules/system/defaults/CustomPreferences.nix index 1b4b99b1..c709ae47 100644 --- a/modules/system/defaults/CustomPreferences.nix +++ b/modules/system/defaults/CustomPreferences.nix @@ -2,10 +2,25 @@ with lib; -{ +let + valueType = with lib.types; nullOr (oneOf [ + bool + int + float + str + path + (attrsOf valueType) + (listOf valueType) + ]) // { + description = "plist value"; + }; + defaultsType = types.submodule { + freeformType = valueType; + }; +in { options = { system.defaults.CustomUserPreferences = mkOption { - type = types.attrs; + type = defaultsType; default = { }; example = { "NSGlobalDomain" = { "TISRomanSwitchState" = 1; }; @@ -20,7 +35,7 @@ with lib; }; system.defaults.CustomSystemPreferences = mkOption { - type = types.attrs; + type = defaultsType; default = { }; example = { "NSGlobalDomain" = { "TISRomanSwitchState" = 1; }; diff --git a/tests/fixtures/system-defaults-write/activate-user.txt b/tests/fixtures/system-defaults-write/activate-user.txt index 7162a414..d93321ef 100644 --- a/tests/fixtures/system-defaults-write/activate-user.txt +++ b/tests/fixtures/system-defaults-write/activate-user.txt @@ -543,6 +543,14 @@ defaults write NSGlobalDomain 'TISRomanSwitchState' $' 1 ' +defaults write com.apple.Safari 'NSUserKeyEquivalents' $' + + + + Quit Safari + @^q + +' defaults write com.apple.Safari 'com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled' $' diff --git a/tests/system-defaults-write.nix b/tests/system-defaults-write.nix index 19ce3c4f..35ff8532 100644 --- a/tests/system-defaults-write.nix +++ b/tests/system-defaults-write.nix @@ -1,6 +1,25 @@ { config, pkgs, lib, ... }: { + imports = [ + { + system.defaults.CustomUserPreferences = { + "NSGlobalDomain" = { "TISRomanSwitchState" = 1; }; + "com.apple.Safari" = { + "com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled" = + true; + }; + }; + } + { + system.defaults.CustomUserPreferences = { + "com.apple.Safari" = { + "NSUserKeyEquivalents"."Quit Safari" = "@^q"; # Option-Cmd-Q + }; + }; + } + ]; + system.defaults.NSGlobalDomain.AppleShowAllFiles = true; system.defaults.NSGlobalDomain.AppleEnableMouseSwipeNavigateWithScrolls = false; system.defaults.NSGlobalDomain.AppleEnableSwipeNavigateWithScrolls = false; @@ -109,13 +128,6 @@ system.defaults.WindowManager.EnableTiledWindowMargins = true; system.defaults.WindowManager.StandardHideWidgets = true; system.defaults.WindowManager.StageManagerHideWidgets = true; - system.defaults.CustomUserPreferences = { - "NSGlobalDomain" = { "TISRomanSwitchState" = 1; }; - "com.apple.Safari" = { - "com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled" = - true; - }; - }; system.defaults.controlcenter.BatteryShowPercentage = true; system.defaults.controlcenter.Sound = false; system.defaults.controlcenter.Bluetooth = true;