This repository has no description
5.8 kB
203 lines
1{
2 pkgs,
3 self,
4 lib,
5 ...
6}:
7
8{
9 imports = [
10 self.inputs.nix-index-database.darwinModules.nix-index
11 self.inputs.nix-rosetta-builder.darwinModules.default
12 ./retiolum.nix
13 ../../configs/nix-farm/client.nix
14 ];
15 clan.core.networking.targetHost = "root@localhost";
16 programs.nix-index-database.comma.enable = true;
17
18 nixpkgs.hostPlatform = "aarch64-darwin";
19 environment.systemPackages = [
20 self.packages.${pkgs.system}.nvim
21 self.packages.${pkgs.system}.pass
22 self.packages.${pkgs.system}.passmenu
23 self.packages.${pkgs.system}.tmux
24 self.packages.${pkgs.system}.mutt
25 self.packages.${pkgs.system}.notmuch
26 self.packages.${pkgs.system}.mpv
27 self.packages.${pkgs.system}.s
28
29 self.packages.${pkgs.system}.secretive
30 pkgs.omp
31 self.packages.${pkgs.system}.browser-mcp
32
33 # zsh dependencies
34 pkgs.fzf
35 self.packages.${pkgs.system}.atuin
36
37 pkgs.gnupg
38 pkgs.pinentry_mac
39 pkgs.lazygit
40 pkgs.sshuttle
41 pkgs.git
42 pkgs.iterm2
43 pkgs.ripgrep
44 pkgs.alt-tab-macos
45 pkgs.nixd
46 pkgs.nil
47 pkgs.age-plugin-se
48 pkgs.gh
49 pkgs.tea
50 pkgs.rbw
51 # marked insecure in nixpkgs (private repos unencrypted)
52 (self.lib.secureify pkgs.radicle-node)
53 ];
54
55 environment.variables = {
56 EDITOR = "nvim";
57 };
58
59 # Use a custom configuration.nix location.
60 # $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix
61 # environment.darwinConfig = "$HOME/.config/nixpkgs/darwin/configuration.nix";
62
63 nix = {
64 package = pkgs.nix;
65 settings = {
66 extra-experimental-features = [
67 "nix-command"
68 "flakes"
69 ];
70 };
71 };
72
73 # homebrew = {
74 # enable = true;
75 # casks = [
76 # "gpg-suite"
77 # ];
78 # };
79
80 # keyboard settings
81 system.keyboard = {
82 enableKeyMapping = true;
83 };
84
85 # Add skhd for keyboard shortcuts
86 services.skhd = {
87 enable = true;
88 skhdConfig = ''
89 # Test with simpler combo first
90 cmd - f12 : /usr/bin/say "test works"
91 # Open passmenu with Hyper-P
92 ctrl + shift + alt + cmd - p : /run/current-system/sw/bin/passmenu
93 '';
94 };
95
96 system.defaults = {
97 # minimal dock
98 dock = {
99 autohide = true;
100 orientation = "left";
101 show-process-indicators = false;
102 show-recents = false;
103 static-only = true;
104 };
105 # a finder that tells me what I want to know and lets me work
106 finder = {
107 AppleShowAllExtensions = true;
108 ShowPathbar = true;
109 FXEnableExtensionChangeWarning = false;
110 };
111 # Tab between form controls and F-row that behaves as F1-F12
112 NSGlobalDomain = {
113 AppleKeyboardUIMode = 3;
114 "com.apple.keyboard.fnState" = true;
115 };
116 };
117
118 # Enable Rosetta builder for x86_64 builds
119 nix-rosetta-builder = {
120 enable = true;
121 potentiallyInsecureExtraNixosModule = {
122 # Fix DNS resolution in the VM
123 networking.nameservers = [
124 "8.8.8.8"
125 "1.1.1.1"
126 ];
127 # Pin to Linux 6.12 LTS to avoid "rosetta error: unhandled auxillary
128 # vector type 29" — newer kernels (6.18+) expose AT_MINSIGSTKSZ which
129 # Rosetta doesn't handle yet.
130 # https://github.com/lima-vm/lima/issues/3592
131 boot.kernelPackages =
132 (import self.inputs.nixpkgs { system = "aarch64-linux"; }).linuxKernel.packages.linux_6_12;
133 };
134 };
135
136 # Create /etc/zshrc that loads the nix-darwin environment.
137 programs.zsh.enable = true; # default shell on catalina
138 programs.zsh.shellInit = self.packages.${pkgs.system}.zsh.zshrc;
139 programs.zsh.promptInit = ""; # Disable default prompt
140 programs.zsh.interactiveShellInit = ''
141 export SSH_AUTH_SOCK=/Users/lassulus/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
142 '';
143
144 # enable sudo touch
145 security.pam.services.sudo_local.touchIdAuth = true;
146
147 # Enable Touch ID in tmux sessions with pam_reattach
148 security.pam.services.sudo_local.text = lib.mkBefore ''
149 auth optional ${pkgs.pam-reattach}/lib/pam/pam_reattach.so ignore_ssh
150 '';
151
152 # disable natural scrolling
153 system.defaults.NSGlobalDomain."com.apple.swipescrolldirection" = false;
154 programs.direnv.enable = true;
155 programs.nix-index.enable = true;
156 programs.gnupg.agent = {
157 enable = true;
158 enableSSHSupport = true;
159 };
160
161 # Used for backwards compatibility, please read the changelog before changing.
162 # $ darwin-rebuild changelog
163 system.stateVersion = 6;
164
165 system.primaryUser = "lassulus";
166
167 services.openssh.enable = true;
168 users.users.lassulus.openssh.authorizedKeys.keys = [
169 self.keys.ssh.barnacle.public
170 self.keys.ssh.yubi_pgp.public
171 self.keys.ssh.termux_massulus.public
172 self.keys.ssh.yubi1.public
173 self.keys.ssh.yubi2.public
174 self.keys.ssh.solo2.public
175 self.keys.ssh.ignavia.public
176 self.keys.ssh.phonetpm_massulus.public
177 ];
178 users.users.root.openssh.authorizedKeys.keys = [
179 self.keys.ssh.barnacle.public
180 self.keys.ssh.yubi_pgp.public
181 self.keys.ssh.termux_massulus.public
182 self.keys.ssh.yubi1.public
183 self.keys.ssh.yubi2.public
184 self.keys.ssh.solo2.public
185 self.keys.ssh.ignavia.public
186 self.keys.ssh.phonetpm_massulus.public
187 ];
188
189 users.users.root.shell = pkgs.zsh;
190 users.users.root.uid = 0;
191 users.knownUsers = [ "root" ];
192
193 system.activationScripts.postActivation.text = ''
194 install ${./US_INTL.keylayout} /Library/Keyboard\ Layouts/US_INTL.keylayout
195 # Native messaging host for the Browser MCP Firefox extension (system-wide
196 # location, Firefox reads it for every user).
197 mkdir -p "/Library/Application Support/Mozilla/NativeMessagingHosts"
198 ln -sfn ${
199 self.packages.${pkgs.system}.browser-mcp
200 }/lib/mozilla/native-messaging-hosts/browser_mcp.json \
201 "/Library/Application Support/Mozilla/NativeMessagingHosts/browser_mcp.json"
202 '';
203}