diff options
| author | Daiderd Jordan <daiderd@gmail.com> | 2016-12-14 13:05:23 +0100 |
|---|---|---|
| committer | Daiderd Jordan <daiderd@gmail.com> | 2016-12-14 13:05:23 +0100 |
| commit | a48cc8ac5f6cda041def73e9564325e5b0ed6633 (patch) | |
| tree | 6fb9ff45adf8846440a4ea28bb45150025bd7a46 /modules/system/defaults-write.nix | |
| parent | 6af52615ed8de2c4f9f4a30d97a22f7b3513c474 (diff) | |
move system.defaults to separate files
Diffstat (limited to 'modules/system/defaults-write.nix')
| -rw-r--r-- | modules/system/defaults-write.nix | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/system/defaults-write.nix b/modules/system/defaults-write.nix new file mode 100644 index 0000000..7ad97da --- /dev/null +++ b/modules/system/defaults-write.nix @@ -0,0 +1,48 @@ +{ config, lib, ... }: + +with lib; + +let + + cfg = config.system.defaults; + + boolValue = x: if x then "YES" else "NO"; + + writeValue = value: + if isBool value then "-bool ${boolValue value}" else + if isInt value then "-int ${toString value}" else + if isString value then "-string '${value}'" else + throw "invalid value type"; + + writeDefault = domain: key: value: + "defaults write ${domain} '${key}' ${writeValue value}"; + + defaultsToList = domain: attrs: mapAttrsToList (writeDefault domain) (filterAttrs (n: v: v != null) attrs); + + NSGlobalDomain = defaultsToList "-g" cfg.NSGlobalDomain; + LaunchServices = defaultsToList "com.apple.LaunchServices" cfg.LaunchServices; + dock = defaultsToList "com.apple.dock" cfg.dock; + finder = defaultsToList "com.apple.finder" cfg.finder; + trackpad = defaultsToList "com.apple.driver.AppleBluetoothMultitouch.trackpad" cfg.trackpad; + +in + +{ + options = { + }; + + config = { + + system.activationScripts.defaults.text = '' + # Set defaults + echo "writing defaults..." >&2 + + ${concatStringsSep "\n" NSGlobalDomain} + ${concatStringsSep "\n" LaunchServices} + ${concatStringsSep "\n" dock} + ${concatStringsSep "\n" finder} + ${concatStringsSep "\n" trackpad} + ''; + + }; +} |
