system/settings/darwin.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | {
pkgs,
lib,
...
}:
{
imports = [
./configuration/nix.nix
./fonts.nix
];
services.nix-daemon = {
enableSocketListener = false;
};
# with optimisation enabled, macOS has a tendency to report the opaque
# filenames in /nix/store/.links as the binary when requesting
# permissions such as incoming network connections
nix.optimise.automatic = false;
environment.profiles =
with lib;
mkMerge [
(mkOrder 800 [ "\${XDG_STATE_HOME:-$HOME/.local/state}/nix/profile" ])
[
"/run/current-system/sw"
"/nix/var/nix/profiles/default"
]
];
nix = {
settings.extra-platforms = "aarch64-darwin x86_64-darwin";
settings.trusted-users = [ "@admin" ];
};
nixpkgs.config = {
allowUnfree = true;
};
services.lorri.enable = true;
launchd.user.agents.lorri-notify = {
path = with pkgs; [
gnugrep
jq
lorri
terminal-notifier
];
script =
let
jqFile = ''
(
(.Started? | values | ["starting", .nix_file]),
(.Completed? | values | ["complete", .nix_file]),
(.Failure? | values | ["failed", .nix_file])
)
| @tsv
'';
in
''
set -euo pipefail
lorri info --shell-file . | grep -q 'Lorri Daemon Status:.*running'
lorri internal stream-events --kind live \
| jq --unbuffered -r '${jqFile}' \
| while IFS=$'\t' read -r status nixFile icon; do
nixFile=$(dirname ''${nixFile#$HOME/})
terminal-notifier -group "lorri-$nixFile-$status" -title "Lorri" \
-subtitle "Build $status" -message "$nixFile" \
-ignoreDnD
sh -c "sleep 1 && terminal-notifier -remove \"lorri-$nixFile-$status\""
done
'';
serviceConfig = {
RunAtLoad = true;
};
};
launchd.daemons.limit-maxfiles = {
serviceConfig = {
Label = "limit-maxfiles";
RunAtLoad = true;
ProgramArguments = [
"launchctl"
"limit"
"maxfiles"
"64000"
"52428"
];
};
};
environment.systemPackages = with pkgs; [
watch
coreutils-prefixed
iproute2mac
];
networking.applicationFirewall = {
enable = true;
allowSigned = true;
allowSignedApp = false; # stop socketfilterfw issuing >300GiB disk reads over 16h
};
services.dnsmasq = {
enable = true;
bind = "::1";
port = 5553;
addresses = {
localhost = "::1";
test = "::1";
};
};
homebrew = {
enable = true;
enableFishIntegration = true;
casks = [
"loop"
"flashspace"
];
brews = [
{
name = "HernandoR/zbrew/zbrew";
postinstall = "\${HOMEBREW_PREFIX}/opt/zbrew/bin/zb init";
trusted = true;
}
"lunchy-go"
];
};
# Display Wi-Fi network ID and SSID in `ipconfig getsummary en0`
# For LaunchBar's Speedtest action (uses `networkQuality`)
system.activationScripts.ipconfig-setverbose.text = ''
echo "configuring ipconfig verbosity..." > &2
ipconfig setverbose 1
'';
}
|