summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/autossh.nix16
-rw-r--r--tests/environment-path.nix34
-rw-r--r--tests/fixtures/system-defaults-write/activate-user.txt250
-rw-r--r--tests/fonts.nix15
-rw-r--r--tests/networking-hostname.nix6
-rw-r--r--tests/networking-networkservices.nix10
-rw-r--r--tests/networking-wakeonlan.nix10
-rw-r--r--tests/power-restart.nix12
-rw-r--r--tests/power-sleep.nix16
-rw-r--r--tests/programs-ssh.nix8
-rw-r--r--tests/programs-zsh.nix4
-rw-r--r--tests/services-activate-system-changed-label-prefix.nix3
-rw-r--r--tests/services-activate-system.nix4
-rw-r--r--tests/services-aerospace.nix92
-rw-r--r--tests/services-buildkite-agent.nix4
-rw-r--r--tests/services-jankyborders.nix28
-rw-r--r--tests/services-lorri.nix25
-rw-r--r--tests/services-netdata.nix19
-rw-r--r--tests/services-nextdns.nix3
-rw-r--r--tests/services-nix-gc.nix4
-rw-r--r--tests/services-nix-optimise.nix4
-rw-r--r--tests/system-defaults-write.nix79
-rw-r--r--tests/system-keyboard-mapping.nix3
-rw-r--r--tests/users-groups.nix87
24 files changed, 631 insertions, 105 deletions
diff --git a/tests/autossh.nix b/tests/autossh.nix
index d1aacd0..5279bf9 100644
--- a/tests/autossh.nix
+++ b/tests/autossh.nix
@@ -1,17 +1,19 @@
{ config, pkgs, ... }:
{
- services.autossh.sessions = [ {
- name = "foo";
- user = "jfelice";
- extraArguments = "-i /some/key -T -N bar.eraserhead.net";
- } ];
+ services.autossh.sessions = [
+ {
+ name = "foo";
+ user = "jfelice";
+ extraArguments = "-i /some/key -T -N bar.eraserhead.net";
+ }
+ ];
test = ''
plist=${config.out}/Library/LaunchDaemons/org.nixos.autossh-foo.plist
test -f $plist
- grep '<string>exec /nix/store/.*/bin/autossh ' $plist
- grep '<string>exec.*-i /some/key ' $plist
+ grep '<string>/bin/wait4path /nix/store &amp;&amp; exec /nix/store/.*/bin/autossh ' $plist
+ grep '<string>/bin/wait4path /nix/store &amp;&amp; exec.*-i /some/key ' $plist
tr -d '\n\t ' <$plist |grep '<key>KeepAlive</key><true */>'
'';
}
diff --git a/tests/environment-path.nix b/tests/environment-path.nix
index 7d2f46d..0bb9a05 100644
--- a/tests/environment-path.nix
+++ b/tests/environment-path.nix
@@ -3,11 +3,37 @@
with lib;
{
+ environment.systemPath = mkMerge [
+ (mkBefore [ "beforePath" ])
+ [ "myPath" ]
+ (mkAfter [ "afterPath" ])
+ ];
+
+ environment.profiles = mkMerge [
+ (mkBefore [ "beforeProfile" ])
+ [ "myProfile" ]
+ (mkAfter [ "afterProfile" ])
+ ];
+
test = ''
- echo checking /run/current-system/sw/bin in environment >&2
- grep 'export PATH=.*:/run/current-system/sw/bin' ${config.system.build.setEnvironment}
+ echo 'checking PATH' >&2
+ env_path=$(bash -c 'source ${config.system.build.setEnvironment}; echo $PATH')
- echo checking /bin and /sbin in environment >&2
- grep 'export PATH=.*:/usr/bin:/usr/sbin:/bin:/sbin' ${config.system.build.setEnvironment}
+ test "$env_path" = "${builtins.concatStringsSep ":" [
+ "beforePath"
+ "myPath"
+ "beforeProfile/bin"
+ "/homeless-shelter/.nix-profile/bin"
+ "myProfile/bin"
+ "/run/current-system/sw/bin"
+ "/nix/var/nix/profiles/default/bin"
+ "afterProfile/bin"
+ "/usr/local/bin"
+ "/usr/bin"
+ "/usr/sbin"
+ "/bin"
+ "/sbin"
+ "afterPath"
+ ]}"
'';
}
diff --git a/tests/fixtures/system-defaults-write/activate-user.txt b/tests/fixtures/system-defaults-write/activate-user.txt
index 1021ab3..3656a47 100644
--- a/tests/fixtures/system-defaults-write/activate-user.txt
+++ b/tests/fixtures/system-defaults-write/activate-user.txt
@@ -48,6 +48,11 @@ defaults write -g 'AppleShowScrollBars' $'<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<string>Always</string>
</plist>'
+defaults write -g 'AppleSpacesSwitchOnActivate' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
defaults write -g 'AppleWindowTabbingMode' $'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
@@ -73,6 +78,11 @@ defaults write -g 'NSAutomaticDashSubstitutionEnabled' $'<?xml version="1.0" enc
<plist version="1.0">
<false/>
</plist>'
+defaults write -g 'NSAutomaticInlinePredictionEnabled' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
defaults write -g 'NSAutomaticPeriodSubstitutionEnabled' $'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
@@ -195,6 +205,11 @@ defaults write .GlobalPreferences 'com.apple.sound.beep.sound' $'<?xml version="
<string>/System/Library/Sounds/Funk.aiff</string>
</plist>'
+defaults write com.apple.menuextra.clock 'FlashDateSeparators' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
defaults write com.apple.menuextra.clock 'Show24Hour' $'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
@@ -220,6 +235,11 @@ defaults write com.apple.dock 'autohide-delay' $'<?xml version="1.0" encoding="U
<plist version="1.0">
<real>0.240000</real>
</plist>'
+defaults write com.apple.dock 'expose-group-apps' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
defaults write com.apple.dock 'orientation' $'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
@@ -255,14 +275,162 @@ defaults write com.apple.dock 'persistent-apps' $'<?xml version="1.0" encoding="
</dict>
</array>
</plist>'
+defaults write com.apple.dock 'persistent-others' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<array>
+ <dict>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>file://~/Documents</string>
+ <key>_CFURLStringType</key>
+ <integer>15</integer>
+ </dict>
+ </dict>
+ <key>tile-type</key>
+ <string>directory-tile</string>
+ </dict>
+ <dict>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>file://~/Downloads/file.txt</string>
+ <key>_CFURLStringType</key>
+ <integer>15</integer>
+ </dict>
+ </dict>
+ <key>tile-type</key>
+ <string>file-tile</string>
+ </dict>
+</array>
+</plist>'
+defaults write com.apple.dock 'scroll-to-open' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'AppleShowAllExtensions' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.finder 'AppleShowAllFiles' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.finder 'CreateDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'FXDefaultSearchScope' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<string>SCcf</string>
+</plist>'
+defaults write com.apple.finder 'FXEnableExtensionChangeWarning' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'FXPreferredViewStyle' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<string>Flwv</string>
+</plist>'
+defaults write com.apple.finder 'FXRemoveOldTrashItems' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'NewWindowTarget' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<string>PfLo</string>
+</plist>'
+defaults write com.apple.finder 'NewWindowTargetPath' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<string>file:///Library/Apple</string>
+</plist>'
+defaults write com.apple.finder 'QuitMenuItem' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.finder 'ShowExternalHardDrivesOnDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'ShowHardDrivesOnDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'ShowMountedServersOnDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'ShowPathbar' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.finder 'ShowRemovableMediaOnDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.finder 'ShowStatusBar' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.finder '_FXShowPosixPathInTitle' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.finder '_FXSortFoldersFirst' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.finder '_FXSortFoldersFirstOnDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.HIToolbox 'AppleFnUsageType' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<integer>2</integer>
+</plist>'
-
+defaults write com.apple.screencapture 'include-date' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
defaults write com.apple.screencapture 'location' $'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>/tmp</string>
</plist>'
+defaults write com.apple.screencapture 'target' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<string>file</string>
+</plist>'
defaults write com.apple.screensaver 'askForPassword' $'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
@@ -336,3 +504,83 @@ defaults write com.apple.Safari 'com.apple.Safari.ContentPageGroupIdentifier.Web
<plist version="1.0">
<true/>
</plist>'
+defaults write com.apple.WindowManager 'AppWindowGroupingBehavior' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.WindowManager 'AutoHide' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'EnableStandardClickToShowDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'EnableTiledWindowMargins' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.WindowManager 'GloballyEnabled' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'HideDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'StageManagerHideWidgets' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.WindowManager 'StandardHideDesktopIcons' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'StandardHideWidgets' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'AirDrop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<integer>18</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'BatteryShowPercentage' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'Bluetooth' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<integer>18</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'Display' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<integer>24</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'FocusModes' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<integer>24</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'NowPlaying' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<integer>18</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'Sound' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<integer>24</integer>
+</plist>'
diff --git a/tests/fonts.nix b/tests/fonts.nix
index acd1b13..d60979c 100644
--- a/tests/fonts.nix
+++ b/tests/fonts.nix
@@ -2,22 +2,19 @@
let
font = pkgs.runCommand "font-0.0.0" {} ''
- mkdir -p $out/share/fonts
- touch $out/share/fonts/Font.ttf
+ mkdir -p $out
+ touch $out/Font.ttf
'';
in
{
- fonts.fontDir.enable = true;
- fonts.fonts = [ font ];
+ fonts.packages = [ font ];
test = ''
- echo "checking fonts in /Library/Fonts" >&2
- test -e ${config.out}/Library/Fonts/Font.ttf
+ echo "checking fonts in /Library/Fonts/Nix Fonts" >&2
+ test -e "${config.out}/Library/Fonts/Nix Fonts"/*/Font.ttf
echo "checking activation of fonts in /activate" >&2
- grep "fontrestore default -n 2>&1" ${config.out}/activate
- grep 'ln -fn ".*" /Library/Fonts' ${config.out}/activate || grep 'rsync -az --inplace ".*" /Library/Fonts' ${config.out}/activate
- grep 'rm "/Library/Fonts/.*"' ${config.out}/activate
+ grep '/Library/Fonts/Nix Fonts' ${config.out}/activate
'';
}
diff --git a/tests/networking-hostname.nix b/tests/networking-hostname.nix
index 3793958..9e8c6fd 100644
--- a/tests/networking-hostname.nix
+++ b/tests/networking-hostname.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, ... }:
+{ lib, config, pkgs, ... }:
{
networking.hostName = "EVE";
@@ -7,8 +7,8 @@
test = ''
echo checking hostname in /activate >&2
grep "scutil --set ComputerName 'EVE’s MacBook Pro'" ${config.out}/activate
- grep "scutil --set LocalHostName 'EVE'" ${config.out}/activate
- grep "scutil --set HostName 'EVE'" ${config.out}/activate
+ grep "scutil --set LocalHostName ${lib.escapeShellArg "EVE"}" ${config.out}/activate
+ grep "scutil --set HostName ${lib.escapeShellArg "EVE"}" ${config.out}/activate
echo checking defaults write in ${config.out}/activate-user >&2
'';
}
diff --git a/tests/networking-networkservices.nix b/tests/networking-networkservices.nix
index 4621317..a657342 100644
--- a/tests/networking-networkservices.nix
+++ b/tests/networking-networkservices.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, ... }:
+{ config, lib, ... }:
{
networking.knownNetworkServices = [ "Wi-Fi" "Thunderbolt Ethernet" ];
@@ -6,10 +6,10 @@
test = ''
echo checking dns settings in /activate >&2
- grep "networksetup -setdnsservers 'Wi-Fi' '8.8.8.8' '8.8.4.4'" ${config.out}/activate
- grep "networksetup -setdnsservers 'Thunderbolt Ethernet' '8.8.8.8' '8.8.4.4'" ${config.out}/activate
+ grep "networksetup -setdnsservers ${lib.escapeShellArgs [ "Wi-Fi" "8.8.8.8" "8.8.4.4" ]}" ${config.out}/activate
+ grep "networksetup -setdnsservers ${lib.escapeShellArgs [ "Thunderbolt Ethernet" "8.8.8.8" "8.8.4.4" ]}" ${config.out}/activate
echo checking empty searchdomain settings in /activate >&2
- grep "networksetup -setsearchdomains 'Wi-Fi' 'empty'" ${config.out}/activate
- grep "networksetup -setsearchdomains 'Thunderbolt Ethernet' 'empty'" ${config.out}/activate
+ grep "networksetup -setsearchdomains ${lib.escapeShellArgs [ "Wi-Fi" "empty" ]}" ${config.out}/activate
+ grep "networksetup -setsearchdomains ${lib.escapeShellArgs [ "Thunderbolt Ethernet" "empty" ]}" ${config.out}/activate
'';
}
diff --git a/tests/networking-wakeonlan.nix b/tests/networking-wakeonlan.nix
new file mode 100644
index 0000000..745c39c
--- /dev/null
+++ b/tests/networking-wakeonlan.nix
@@ -0,0 +1,10 @@
+{ config, pkgs, ... }:
+
+{
+ networking.wakeOnLan.enable = true;
+
+ test = ''
+ echo checking wake on network access settings in /activate >&2
+ grep "systemsetup -setWakeOnNetworkAccess 'on'" ${config.out}/activate
+ '';
+}
diff --git a/tests/power-restart.nix b/tests/power-restart.nix
new file mode 100644
index 0000000..ade9851
--- /dev/null
+++ b/tests/power-restart.nix
@@ -0,0 +1,12 @@
+{ config, pkgs, ... }:
+
+{
+ power.restartAfterPowerFailure = true;
+ power.restartAfterFreeze = true;
+
+ test = ''
+ echo checking restart power settings in /activate >&2
+ grep "systemsetup -setRestartPowerFailure 'on'" ${config.out}/activate
+ grep "systemsetup -setRestartFreeze 'on'" ${config.out}/activate
+ '';
+}
diff --git a/tests/power-sleep.nix b/tests/power-sleep.nix
new file mode 100644
index 0000000..5d779a6
--- /dev/null
+++ b/tests/power-sleep.nix
@@ -0,0 +1,16 @@
+{ config, pkgs, ... }:
+
+{
+ power.sleep.computer = "never";
+ power.sleep.display = 15;
+ power.sleep.harddisk = 5;
+ power.sleep.allowSleepByPowerButton = false;
+
+ test = ''
+ echo checking power sleep settings in /activate >&2
+ grep "systemsetup -setComputerSleep 'never'" ${config.out}/activate
+ grep "systemsetup -setDisplaySleep '15'" ${config.out}/activate
+ grep "systemsetup -setHardDiskSleep '5'" ${config.out}/activate
+ grep "systemsetup -setAllowPowerButtonToSleepComputer 'off'" ${config.out}/activate
+ '';
+}
diff --git a/tests/programs-ssh.nix b/tests/programs-ssh.nix
index ad4f7ab..427f71b 100644
--- a/tests/programs-ssh.nix
+++ b/tests/programs-ssh.nix
@@ -12,9 +12,9 @@
echo >&2 "checking for github.com in /etc/ssh/ssh_known_hosts"
grep 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==' ${config.out}/etc/ssh/ssh_known_hosts
- echo >&2 "checking for authorized keys for foo in /etc/ssh/authorized_keys.d/foo"
- grep 'ssh-ed25519 AAAA...' ${config.out}/etc/ssh/authorized_keys.d/foo
- echo >&2 "checking for authorized keys' path in /etc/ssh/sshd_config.d/101-authorized-keys.conf"
- grep 'AuthorizedKeysFile %h/.ssh/authorized_keys /etc/ssh/authorized_keys.d/%u' ${config.out}/etc/ssh/sshd_config.d/101-authorized-keys.conf
+ echo >&2 "checking for authorized keys for foo in /etc/ssh/nix_authorized_keys.d/foo"
+ grep 'ssh-ed25519 AAAA...' ${config.out}/etc/ssh/nix_authorized_keys.d/foo
+ echo >&2 "checking for authorized keys command in /etc/ssh/sshd_config.d/101-authorized-keys.conf"
+ grep 'AuthorizedKeysCommand /bin/cat /etc/ssh/nix_authorized_keys.d/%u' ${config.out}/etc/ssh/sshd_config.d/101-authorized-keys.conf
'';
}
diff --git a/tests/programs-zsh.nix b/tests/programs-zsh.nix
index dd5f6e9..18680a5 100644
--- a/tests/programs-zsh.nix
+++ b/tests/programs-zsh.nix
@@ -22,8 +22,6 @@
echo >&2 "checking setEnvironment in /etc/zshenv"
fgrep '. ${config.system.build.setEnvironment}' ${config.out}/etc/zshenv
- echo >&2 "checking nix-shell return /etc/zshenv"
- grep 'if test -n "$IN_NIX_SHELL"; then return; fi' ${config.out}/etc/zshenv
echo >&2 "checking zshenv.d in /etc/zshenv"
grep 'source /etc/zshenv.d/\*.conf' ${config.out}/etc/zshenv
@@ -36,7 +34,7 @@
echo >&2 "checking compinit in /etc/zshrc"
grep 'autoload -U compinit && compinit' ${config.out}/etc/zshrc
echo >&2 "checking bashcompinit in /etc/zshrc"
- grep -vq 'bashcompinit' ${config.out}/etc/zshrc
+ (! grep 'bashcompinit' ${config.out}/etc/zshrc)
echo >&2 "checking zprofile.d in /etc/zprofile"
grep 'source /etc/zprofile.d/\*.conf' ${config.out}/etc/zprofile
diff --git a/tests/services-activate-system-changed-label-prefix.nix b/tests/services-activate-system-changed-label-prefix.nix
index 5ac9969..2c2f603 100644
--- a/tests/services-activate-system-changed-label-prefix.nix
+++ b/tests/services-activate-system-changed-label-prefix.nix
@@ -1,7 +1,6 @@
{ config, pkgs, ... }:
{
- services.activate-system.enable = true;
launchd.labelPrefix = "org.nix-darwin";
test = ''
@@ -9,7 +8,7 @@
grep "org.nix-darwin.activate-system" ${config.out}/Library/LaunchDaemons/org.nix-darwin.activate-system.plist
echo checking activation of /run/current-system >&2
- script=$(cat ${config.out}/Library/LaunchDaemons/org.nix-darwin.activate-system.plist | awk -F'[< ]' '$3 ~ "^/nix/store/.*" {print $3}')
+ script=$(cat ${config.out}/Library/LaunchDaemons/org.nix-darwin.activate-system.plist | awk -F'[< ]' '$6 ~ "^/nix/store/.*" {print $6}')
grep "ln -sfn .* /run/current-system" "$script"
'';
}
diff --git a/tests/services-activate-system.nix b/tests/services-activate-system.nix
index 02eaf3c..702bb26 100644
--- a/tests/services-activate-system.nix
+++ b/tests/services-activate-system.nix
@@ -1,14 +1,12 @@
{ config, pkgs, ... }:
{
- services.activate-system.enable = true;
-
test = ''
echo checking activation service in /Library/LaunchDaemons >&2
grep "org.nixos.activate-system" ${config.out}/Library/LaunchDaemons/org.nixos.activate-system.plist
echo checking activation of /run/current-system >&2
- script=$(cat ${config.out}/Library/LaunchDaemons/org.nixos.activate-system.plist | awk -F'[< ]' '$3 ~ "^/nix/store/.*" {print $3}')
+ script=$(cat ${config.out}/Library/LaunchDaemons/org.nixos.activate-system.plist | awk -F'[< ]' '$6 ~ "^/nix/store/.*" {print $6}')
grep "ln -sfn .* /run/current-system" "$script"
'';
}
diff --git a/tests/services-aerospace.nix b/tests/services-aerospace.nix
new file mode 100644
index 0000000..088c92d
--- /dev/null
+++ b/tests/services-aerospace.nix
@@ -0,0 +1,92 @@
+{ config, pkgs, ... }:
+
+let
+ aerospace = pkgs.runCommand "aerospace-0.0.0" { } "mkdir $out";
+in
+
+{
+ services.aerospace.enable = true;
+ services.aerospace.package = aerospace;
+ services.aerospace.settings = {
+ after-startup-command = [ "layout tiles" ];
+ gaps = {
+ outer.left = 8;
+ outer.bottom = 8;
+ outer.top = 8;
+ outer.right = 8;
+ };
+ mode.main.binding = {
+ alt-h = "focus left";
+ alt-j = "focus down";
+ alt-k = "focus up";
+ alt-l = "focus right";
+ };
+ on-window-detected = [
+ {
+ "if" = {
+ app-id = "Another.Cool.App";
+ during-aerospace-startup = false;
+ };
+ check-further-callbacks = false;
+ run = "move-node-to-workspace m";
+ }
+ {
+ "if".app-name-regex-substring = "finder|calendar";
+ run = "layout floating";
+ }
+ {
+ "if".workspace = "1";
+ run = "layout h_accordion";
+ }
+ ];
+ workspace-to-monitor-force-assignment = {
+ "1" = 1;
+ "2" = "main";
+ "3" = "secondary";
+ "4" = "built-in";
+ "5" = "^built-in retina display$";
+ "6" = [ "secondary" "dell" ];
+ };
+ };
+
+ test = ''
+ echo >&2 "checking aerospace service in ~/Library/LaunchAgents"
+ grep "org.nixos.aerospace" ${config.out}/user/Library/LaunchAgents/org.nixos.aerospace.plist
+ grep "${aerospace}/Applications/AeroSpace.app/Contents/MacOS/AeroSpace" ${config.out}/user/Library/LaunchAgents/org.nixos.aerospace.plist
+
+ conf=`sed -En 's/^[[:space:]]*<string>.*--config-path (.*)<\/string>$/\1/p' \
+ ${config.out}/user/Library/LaunchAgents/org.nixos.aerospace.plist`
+
+ echo >&2 "checking config in $conf"
+ grep 'after-startup-command = \["layout tiles"\]' $conf
+
+ grep 'bottom = 8' $conf
+ grep 'left = 8' $conf
+ grep 'right = 8' $conf
+ grep 'top = 8' $conf
+
+ grep 'alt-h = "focus left"' $conf
+ grep 'alt-j = "focus down"' $conf
+ grep 'alt-k = "focus up"' $conf
+ grep 'alt-l = "focus right"' $conf
+
+ grep 'check-further-callbacks = false' $conf
+ grep 'run = "move-node-to-workspace m"' $conf
+ grep 'app-id = "Another.Cool.App"' $conf
+ grep 'during-aerospace-startup = false' $conf
+
+ grep 'run = "layout floating"' $conf
+ grep 'app-name-regex-substring = "finder|calendar"' $conf
+ (! grep 'window-title-regex-substring' $conf)
+
+ grep 'workspace = "1"' $conf
+ grep 'run = "layout h_accordion"' $conf
+
+ grep '1 = 1' $conf
+ grep '2 = "main"' $conf
+ grep '3 = "secondary"' $conf
+ grep '4 = "built-in"' $conf
+ grep '5 = "^built-in retina display$"' $conf
+ grep '6 = \["secondary", "dell"\]' $conf
+ '';
+}
diff --git a/tests/services-buildkite-agent.nix b/tests/services-buildkite-agent.nix
index 557aad2..1d8d824 100644
--- a/tests/services-buildkite-agent.nix
+++ b/tests/services-buildkite-agent.nix
@@ -1,7 +1,7 @@
{ config, pkgs, ... }:
let
- buildkite-agent = pkgs.runCommand "buildkite-agent-0.0.0" {} "mkdir $out";
+ buildkite-agent = pkgs.runCommand "buildkite-agent-0.0.0" { } "mkdir $out";
tokenPath = pkgs.writeText "buildkite_token" "TEST_TOKEN";
in
@@ -20,7 +20,7 @@ in
grep "org.nixos.buildkite-agent-test" ${config.out}/Library/LaunchDaemons/org.nixos.buildkite-agent-test.plist
echo "checking creation of buildkite-agent service config" >&2
- script=$(cat ${config.out}/Library/LaunchDaemons/org.nixos.buildkite-agent-test.plist | awk -F'[< ]' '$3 ~ "^/nix/store/.*" {print $3}')
+ script=$(cat ${config.out}/Library/LaunchDaemons/org.nixos.buildkite-agent-test.plist | awk -F'[< ]' '$6 ~ "^/nix/store/.*" {print $6}')
grep "yolo=1" "$script"
grep "${tokenPath}" "$script"
diff --git a/tests/services-jankyborders.nix b/tests/services-jankyborders.nix
new file mode 100644
index 0000000..5bde078
--- /dev/null
+++ b/tests/services-jankyborders.nix
@@ -0,0 +1,28 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ jankyborders = pkgs.runCommand "borders-0.0.0" {} "mkdir $out";
+in
+
+{
+ services.jankyborders.enable = true;
+ services.jankyborders.package = jankyborders;
+ services.jankyborders.width = 5.0;
+ services.jankyborders.hidpi = true;
+ services.jankyborders.active_color = "0xFFFFFFFF";
+ services.jankyborders.order = "below";
+
+ test = ''
+ echo >&2 "checking jankyborders service in ~/Library/LaunchAgents"
+ grep "org.nixos.jankyborders" ${config.out}/user/Library/LaunchAgents/org.nixos.jankyborders.plist
+ grep "${jankyborders}/bin/borders" ${config.out}/user/Library/LaunchAgents/org.nixos.jankyborders.plist
+
+ echo >&2 "checking jankyborders config arguments"
+ grep "width=5.000000" ${config.out}/user/Library/LaunchAgents/org.nixos.jankyborders.plist
+ grep "hidpi=on" ${config.out}/user/Library/LaunchAgents/org.nixos.jankyborders.plist
+ grep "active_color=0xFFFFFFFF" ${config.out}/user/Library/LaunchAgents/org.nixos.jankyborders.plist
+ grep "order=below" ${config.out}/user/Library/LaunchAgents/org.nixos.jankyborders.plist
+ '';
+}
diff --git a/tests/services-lorri.nix b/tests/services-lorri.nix
index 52dcc91..7d30152 100644
--- a/tests/services-lorri.nix
+++ b/tests/services-lorri.nix
@@ -1,14 +1,29 @@
-{ config, pkgs, lib, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
let
plistPath = "${config.out}/user/Library/LaunchAgents/org.nixos.lorri.plist";
- expectedPath = "${lib.makeBinPath [config.nix.package pkgs.git pkgs.gnutar pkgs.gzip]}";
- expectedNixPath = "${"nixpkgs="+ toString pkgs.path}";
+ expectedPath = "${lib.makeBinPath [
+ config.nix.package
+ pkgs.git
+ pkgs.gnutar
+ pkgs.gzip
+ ]}";
+ expectedNixPath = "${"nixpkgs=" + toString pkgs.path}";
in
{
services.lorri.enable = true;
test = ''
- PATH=${lib.makeBinPath [ pkgs.xcbuild pkgs.jq ]}:$PATH
+ PATH=${
+ lib.makeBinPath [
+ pkgs.xcbuild
+ pkgs.jq
+ ]
+ }:$PATH
plutil -lint ${plistPath}
plutil -convert json -o service.json ${plistPath}
@@ -21,7 +36,7 @@ in
<service.json jq -e ".ProgramArguments|length == 3"
<service.json jq -e ".ProgramArguments[0] == \"/bin/sh\""
<service.json jq -e ".ProgramArguments[1] == \"-c\""
- <service.json jq -e ".ProgramArguments[2] == \"exec ${pkgs.lorri}/bin/lorri daemon\""
+ <service.json jq -e ".ProgramArguments[2] == \"/bin/wait4path /nix/store && exec ${pkgs.lorri}/bin/lorri daemon\""
<service.json jq -e ".RunAtLoad == true"
'';
}
diff --git a/tests/services-netdata.nix b/tests/services-netdata.nix
new file mode 100644
index 0000000..6759677
--- /dev/null
+++ b/tests/services-netdata.nix
@@ -0,0 +1,19 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ netdata = pkgs.runCommand "netdata-0.0.0" {} "mkdir $out";
+in
+{
+ services.netdata = {
+ enable = true;
+ package = netdata;
+ };
+
+ test = ''
+ echo >&2 "checking netdata service in launchd daemons"
+ grep "netdata" ${config.out}/Library/LaunchDaemons/netdata.plist
+ grep "${netdata}/bin/netdata" ${config.out}/Library/LaunchDaemons/netdata.plist
+ '';
+}
diff --git a/tests/services-nextdns.nix b/tests/services-nextdns.nix
index 4d6224f..02ce1a5 100644
--- a/tests/services-nextdns.nix
+++ b/tests/services-nextdns.nix
@@ -12,6 +12,7 @@ in {
echo >&2 "checking nextdns service in ~/Library/LaunchDaemons"
grep "org.nixos.nextdns" ${config.out}/Library/LaunchDaemons/org.nixos.nextdns.plist
grep "/bin/nextdns" ${config.out}/Library/LaunchDaemons/org.nixos.nextdns.plist
- grep "'-config' '10.0.3.0/24=abcdef'" ${config.out}/Library/LaunchDaemons/org.nixos.nextdns.plist
+ grep -- "-config" ${config.out}/Library/LaunchDaemons/org.nixos.nextdns.plist
+ grep "10.0.3.0/24=abcdef" ${config.out}/Library/LaunchDaemons/org.nixos.nextdns.plist
'';
}
diff --git a/tests/services-nix-gc.nix b/tests/services-nix-gc.nix
index 4ef26b5..6d7cdef 100644
--- a/tests/services-nix-gc.nix
+++ b/tests/services-nix-gc.nix
@@ -1,7 +1,7 @@
{ config, pkgs, ... }:
let
- nix = pkgs.runCommand "nix-2.2" {} "mkdir -p $out";
+ nix = pkgs.runCommand "nix-2.2" { } "mkdir -p $out";
in
{
@@ -13,7 +13,7 @@ in
test = ''
echo checking nix-gc service in /Library/LaunchDaemons >&2
grep "<string>org.nixos.nix-gc</string>" ${config.out}/Library/LaunchDaemons/org.nixos.nix-gc.plist
- grep "<string>exec ${nix}/bin/nix-collect-garbage --delete-older-than 30d</string>" ${config.out}/Library/LaunchDaemons/org.nixos.nix-gc.plist
+ grep "<string>/bin/wait4path /nix/store &amp;&amp; exec ${nix}/bin/nix-collect-garbage --delete-older-than 30d</string>" ${config.out}/Library/LaunchDaemons/org.nixos.nix-gc.plist
grep "<key>UserName</key>" ${config.out}/Library/LaunchDaemons/org.nixos.nix-gc.plist
grep "<string>nixuser</string>" ${config.out}/Library/LaunchDaemons/org.nixos.nix-gc.plist
diff --git a/tests/services-nix-optimise.nix b/tests/services-nix-optimise.nix
index b0ecf18..4108eb0 100644
--- a/tests/services-nix-optimise.nix
+++ b/tests/services-nix-optimise.nix
@@ -1,7 +1,7 @@
{ config, pkgs, ... }:
let
- nix = pkgs.runCommand "nix-2.2" {} "mkdir -p $out";
+ nix = pkgs.runCommand "nix-2.2" { } "mkdir -p $out";
in
{
@@ -13,7 +13,7 @@ in
echo checking nix-optimise service in /Library/LaunchDaemons >&2
grep "<string>org.nixos.nix-optimise</string>" \
${config.out}/Library/LaunchDaemons/org.nixos.nix-optimise.plist
- grep "<string>/bin/wait4path ${nix} &amp;&amp; exec ${nix}/bin/nix-store --optimise</string>" \
+ grep "<string>/bin/wait4path /nix/store &amp;&amp; exec ${nix}/bin/nix-store --optimise</string>" \
${config.out}/Library/LaunchDaemons/org.nixos.nix-optimise.plist
grep "<key>UserName</key>" ${config.out}/Library/LaunchDaemons/org.nixos.nix-optimise.plist
grep "<string>nixuser</string>" ${config.out}/Library/LaunchDaemons/org.nixos.nix-optimise.plist
diff --git a/tests/system-defaults-write.nix b/tests/system-defaults-write.nix
index 9840298..1a29aa2 100644
--- a/tests/system-defaults-write.nix
+++ b/tests/system-defaults-write.nix
@@ -11,7 +11,9 @@
system.defaults.NSGlobalDomain.AppleShowAllExtensions = true;
system.defaults.NSGlobalDomain.AppleShowScrollBars = "Always";
system.defaults.NSGlobalDomain.AppleScrollerPagingBehavior = true;
+ system.defaults.NSGlobalDomain.AppleSpacesSwitchOnActivate = false;
system.defaults.NSGlobalDomain.NSAutomaticCapitalizationEnabled = false;
+ system.defaults.NSGlobalDomain.NSAutomaticInlinePredictionEnabled = false;
system.defaults.NSGlobalDomain.NSAutomaticDashSubstitutionEnabled = false;
system.defaults.NSGlobalDomain.NSAutomaticPeriodSubstitutionEnabled = false;
system.defaults.NSGlobalDomain.NSAutomaticQuoteSubstitutionEnabled = false;
@@ -40,14 +42,40 @@
system.defaults.NSGlobalDomain."com.apple.springing.delay" = 0.0;
system.defaults.NSGlobalDomain."com.apple.swipescrolldirection" = true;
system.defaults.".GlobalPreferences"."com.apple.sound.beep.sound" = "/System/Library/Sounds/Funk.aiff";
+ system.defaults.menuExtraClock.FlashDateSeparators = false;
system.defaults.menuExtraClock.Show24Hour = false;
system.defaults.menuExtraClock.ShowDayOfWeek = true;
system.defaults.menuExtraClock.ShowDate = 2;
+ system.defaults.dock.expose-group-apps = true;
system.defaults.dock.appswitcher-all-displays = false;
system.defaults.dock.autohide-delay = 0.24;
system.defaults.dock.orientation = "left";
system.defaults.dock.persistent-apps = ["MyApp.app" "Cool.app"];
+ system.defaults.dock.persistent-others = ["~/Documents" "~/Downloads/file.txt"];
+ system.defaults.dock.scroll-to-open = false;
+ system.defaults.finder.AppleShowAllFiles = true;
+ system.defaults.finder.ShowStatusBar = true;
+ system.defaults.finder.ShowPathbar = true;
+ system.defaults.finder.FXDefaultSearchScope = "SCcf";
+ system.defaults.finder.FXPreferredViewStyle = "Flwv";
+ system.defaults.finder.FXRemoveOldTrashItems = false;
+ system.defaults.finder.AppleShowAllExtensions = true;
+ system.defaults.finder.CreateDesktop = false;
+ system.defaults.finder.NewWindowTarget = "Other";
+ system.defaults.finder.NewWindowTargetPath = "file:///Library/Apple";
+ system.defaults.finder.QuitMenuItem = true;
+ system.defaults.finder._FXShowPosixPathInTitle = true;
+ system.defaults.finder._FXSortFoldersFirst = true;
+ system.defaults.finder._FXSortFoldersFirstOnDesktop = false;
+ system.defaults.finder.FXEnableExtensionChangeWarning = false;
+ system.defaults.finder.ShowExternalHardDrivesOnDesktop = false;
+ system.defaults.finder.ShowHardDrivesOnDesktop = false;
+ system.defaults.finder.ShowMountedServersOnDesktop = false;
+ system.defaults.finder.ShowRemovableMediaOnDesktop = false;
+ system.defaults.hitoolbox.AppleFnUsageType = "Show Emoji & Symbols";
system.defaults.screencapture.location = "/tmp";
+ system.defaults.screencapture.target = "file";
+ system.defaults.screencapture.include-date = true;
system.defaults.screensaver.askForPassword = true;
system.defaults.screensaver.askForPasswordDelay = 5;
system.defaults.smb.NetBIOSName = "IMAC-000000";
@@ -62,25 +90,42 @@
system.defaults.ActivityMonitor.SortColumn = "CPUUsage";
system.defaults.ActivityMonitor.SortDirection = 0;
system.defaults.ActivityMonitor.OpenMainWindow = true;
+ system.defaults.WindowManager.GloballyEnabled = false;
+ system.defaults.WindowManager.EnableStandardClickToShowDesktop = false;
+ system.defaults.WindowManager.AutoHide = false;
+ system.defaults.WindowManager.AppWindowGroupingBehavior = true;
+ system.defaults.WindowManager.StandardHideDesktopIcons = false;
+ system.defaults.WindowManager.HideDesktop = false;
+ 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;
- };
+ "NSGlobalDomain" = { "TISRomanSwitchState" = 1; };
+ "com.apple.Safari" = {
+ "com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled" =
+ true;
};
- test = lib.strings.concatMapStringsSep "\n" (x: ''
- echo >&2 "checking defaults write in /${x}"
- ${pkgs.python3}/bin/python3 <<EOL
-import sys
-from pathlib import Path
-fixture = '${./fixtures/system-defaults-write}/${x}.txt'
-out = '${config.out}/${x}'
-if Path(fixture).read_text() not in Path(out).read_text():
- print("Did not find content from %s in %s" % (fixture, out), file=sys.stderr)
- sys.exit(1)
-EOL
- '') [
+ };
+ system.defaults.controlcenter.BatteryShowPercentage = true;
+ system.defaults.controlcenter.Sound = false;
+ system.defaults.controlcenter.Bluetooth = true;
+ system.defaults.controlcenter.AirDrop = true;
+ system.defaults.controlcenter.Display = false;
+ system.defaults.controlcenter.FocusModes = false;
+ system.defaults.controlcenter.NowPlaying = true;
+ test = lib.strings.concatMapStringsSep "\n"
+ (x: ''
+ echo >&2 "checking defaults write in /${x}"
+ ${pkgs.python3}/bin/python3 <<EOL
+ import sys
+ from pathlib import Path
+ fixture = '${./fixtures/system-defaults-write}/${x}.txt'
+ out = '${config.out}/${x}'
+ if Path(fixture).read_text() not in Path(out).read_text():
+ print("Did not find content from %s in %s" % (fixture, out), file=sys.stderr)
+ sys.exit(1)
+ EOL
+ '') [
"activate"
"activate-user"
];
diff --git a/tests/system-keyboard-mapping.nix b/tests/system-keyboard-mapping.nix
index b75efbd..654ca0c 100644
--- a/tests/system-keyboard-mapping.nix
+++ b/tests/system-keyboard-mapping.nix
@@ -6,6 +6,7 @@
system.keyboard.remapCapsLockToEscape = true;
system.keyboard.nonUS.remapTilde = true;
system.keyboard.swapLeftCommandAndLeftAlt = true;
+ system.keyboard.swapLeftCtrlAndFn = true;
test = ''
echo checking keyboard mappings in /activate >&2
@@ -17,5 +18,7 @@
grep "\"HIDKeyboardModifierMappingDst\":30064771296" ${config.out}/activate
grep "\"HIDKeyboardModifierMappingDst\":30064771298" ${config.out}/activate
grep "\"HIDKeyboardModifierMappingDst\":30064771299" ${config.out}/activate
+ grep "\"HIDKeyboardModifierMappingDst\":30064771296" ${config.out}/activate
+ grep "\"HIDKeyboardModifierMappingDst\":1095216660483" ${config.out}/activate
'';
}
diff --git a/tests/users-groups.nix b/tests/users-groups.nix
index cefb1ad..8126105 100644
--- a/tests/users-groups.nix
+++ b/tests/users-groups.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, ... }:
+{ lib, config, pkgs, ... }:
{
users.knownGroups = [ "foo" "created.group" "deleted.group" ];
@@ -19,45 +19,62 @@
users.users.foo.shell = pkgs.bashInteractive;
users.users."created.user".uid = 42001;
+ users.users."created.user".description = null;
+ users.users."created.user".home = null;
+ users.users."created.user".shell = null;
+
users.users."unknown.user".uid = 42002;
test = ''
- echo "checking group creation in /activate" >&2
- grep "dscl . -create '/Groups/foo' PrimaryGroupID 42000" ${config.out}/activate
- grep "dscl . -create '/Groups/foo' RealName 'Foo group'" ${config.out}/activate
- grep "dscl . -create '/Groups/created.group' PrimaryGroupID 42001" ${config.out}/activate
- grep -qv "dscl . -delete '/Groups/created.group'" ${config.out}/activate
+ set -v
+
+ # checking group creation in /activate
+ grep "dscl . -create ${lib.escapeShellArg "/Groups/foo"} PrimaryGroupID 42000" ${config.out}/activate
+ grep "dscl . -create ${lib.escapeShellArg "/Groups/foo"} RealName ${lib.escapeShellArg "Foo group"}" ${config.out}/activate
+ grep "dscl . -create ${lib.escapeShellArg "/Groups/created.group"} PrimaryGroupID 42001" ${config.out}/activate
+ (! grep "dscl . -delete ${lib.escapeShellArg "/Groups/created.group"}" ${config.out}/activate)
- echo "checking group deletion in /activate" >&2
- grep "dscl . -delete '/Groups/deleted.group'" ${config.out}/activate
- grep -qv "dscl . -create '/Groups/deleted.group'" ${config.out}/activate
+ # checking group deletion in /activate
+ grep "dscl . -delete ${lib.escapeShellArg "/Groups/deleted.group"}" ${config.out}/activate
+ (! grep "dscl . -create ${lib.escapeShellArg "/Groups/deleted.group"}" ${config.out}/activate)
echo "checking group membership in /activate" >&2
- grep "dscl . -create '/Groups/foo' GroupMembership 'admin' 'foo'" ${config.out}/activate
- grep "dscl . -create '/Groups/created.group' GroupMembership" ${config.out}/activate
-
- echo "checking unknown group in /activate" >&2
- grep -qv "dscl . -create '/Groups/unknown.group'" ${config.out}/activate
- grep -qv "dscl . -delete '/Groups/unknown.group'" ${config.out}/activate
-
- echo "checking user creation in /activate" >&2
- grep "dscl . -create '/Users/foo' UniqueID 42000" ${config.out}/activate
- grep "dscl . -create '/Users/foo' PrimaryGroupID 42000" ${config.out}/activate
- grep "dscl . -create '/Users/foo' IsHidden 0" ${config.out}/activate
- grep "dscl . -create '/Users/foo' RealName 'Foo user'" ${config.out}/activate
- grep "dscl . -create '/Users/foo' NFSHomeDirectory '/Users/foo'" ${config.out}/activate
- grep "dscl . -create '/Users/foo' UserShell '/run/current-system/sw/bin/bash'" ${config.out}/activate
- grep "dscl . -create '/Users/created.user' UniqueID 42001" ${config.out}/activate
- grep "dscl . -create '/Users/created.user' UserShell '/sbin/nologin'" ${config.out}/activate
- grep "createhomedir -cu 'foo'" ${config.out}/activate
- grep -qv "dscl . -delete '/Groups/created.user'" ${config.out}/activate
-
- echo "checking user deletion in /activate" >&2
- grep "dscl . -delete '/Users/deleted.user'" ${config.out}/activate
- grep -qv "dscl . -create '/Users/deleted.user'" ${config.out}/activate
-
- echo "checking unknown user in /activate" >&2
- grep -qv "dscl . -create '/Users/unknown.user'" ${config.out}/activate
- grep -qv "dscl . -delete '/Users/unknown.user'" ${config.out}/activate
+ grep "dscl . -create ${lib.escapeShellArg "/Groups/foo"} GroupMembership ${lib.escapeShellArgs [ "admin" "foo" ]}" ${config.out}/activate
+ grep "dscl . -create ${lib.escapeShellArg "/Groups/created.group"} GroupMembership" ${config.out}/activate
+
+ # checking unknown group in /activate
+ # checking groups not in knownGroups don't appear in /activate
+ (! grep "dscl . -create ${lib.escapeShellArg "/Groups/unknown.group"}" ${config.out}/activate)
+ (! grep "dscl . -delete ${lib.escapeShellArg "/Groups/unknown.group"}" ${config.out}/activate)
+
+ # checking user creation in /activate
+ grep "sysadminctl -addUser ${lib.escapeShellArgs [ "foo" "-UID" 42000 "-GID" 42000 "-fullName" "Foo user" "-home" "/Users/foo" "-shell" "/run/current-system/sw/bin/bash" ]}" ${config.out}/activate
+ grep "createhomedir -cu ${lib.escapeShellArg "foo"}" ${config.out}/activate
+ grep "sysadminctl -addUser ${lib.escapeShellArgs [ "created.user" "-UID" 42001 ]} .* ${lib.escapeShellArgs [ "-shell" "/usr/bin/false" ] }" ${config.out}/activate
+ grep "sysadminctl -addUser ${lib.escapeShellArg "created.user"} .* ${lib.escapeShellArgs [ "-home" "/var/empty" ]}" ${config.out}/activate
+ (! grep "dscl . -delete ${lib.escapeShellArg "/Users/created.user"}" ${config.out}/activate)
+ (! grep "dscl . -delete ${lib.escapeShellArg "/Groups/created.user"}" ${config.out}/activate)
+
+ # checking user properties always get updated in /activate
+ grep "dscl . -create ${lib.escapeShellArg "/Users/foo"} PrimaryGroupID 42000" ${config.out}/activate
+ grep "dscl . -create ${lib.escapeShellArg "/Users/foo"} RealName ${lib.escapeShellArg "Foo user"}" ${config.out}/activate
+ grep "createhomedir -cu ${lib.escapeShellArg "foo"}" ${config.out}/activate
+ grep "dscl . -create ${lib.escapeShellArg "/Users/foo"} UserShell ${lib.escapeShellArg "/run/current-system/sw/bin/bash"}" ${config.out}/activate
+ grep "dscl . -create ${lib.escapeShellArg "/Users/foo"} IsHidden 0" ${config.out}/activate
+
+ # checking user properties that are null don't get updated in /activate
+ (! grep "dscl . -create ${lib.escapeShellArg "/Users/created.user"} RealName" ${config.out}/activate)
+ (! grep "dscl . -create ${lib.escapeShellArg "/Users/created.user"} UserShell" ${config.out}/activate)
+
+ # checking user deletion in /activate
+ grep "dscl . -delete ${lib.escapeShellArg "/Users/deleted.user"}" ${config.out}/activate
+ (! grep "sysadminctl -addUser ${lib.escapeShellArg "deleted.user"}" ${config.out}/activate)
+
+ # checking that users not specified in knownUsers doesn't get changed in /activate
+ (! grep "sysadminctl -addUser ${lib.escapeShellArg "unknown.user"}" ${config.out}/activate)
+ (! grep "dscl . -delete ${lib.escapeShellArg "/Users/unknown.user"}" ${config.out}/activate)
+ (! grep "dscl . -create ${lib.escapeShellArg "/Users/unknown.user"}" ${config.out}/activate)
+
+ set +v
'';
}