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;