diff options
| author | Ryan Schanzenbacher <ryan@rschanz.org> | 2026-06-14 23:39:10 -0400 |
|---|---|---|
| committer | Ryan Schanzenbacher <ryan@rschanz.org> | 2026-06-14 23:39:10 -0400 |
| commit | 9e70f144dde840fed8d8b485f9396638139ec310 (patch) | |
| tree | 4473219575651064f213a5bd80cb6eae33b3862f | |
Initial Commit for mac testing
| -rw-r--r-- | files/CACerts/RyanCA.crt | 11 | ||||
| -rw-r--r-- | flake.lock | 296 | ||||
| -rw-r--r-- | flake.nix | 45 | ||||
| -rw-r--r-- | hosts/RyanMac/configuration.nix | 212 | ||||
| -rw-r--r-- | users/ryan/aerc/accounts.conf | 24 | ||||
| -rw-r--r-- | users/ryan/aerc/aerc.conf | 569 | ||||
| -rw-r--r-- | users/ryan/aerc/binds.conf | 150 | ||||
| -rw-r--r-- | users/ryan/aerc/signature_personal | 4 | ||||
| -rw-r--r-- | users/ryan/aerc/signature_rit_personal | 6 | ||||
| -rw-r--r-- | users/ryan/aerc/templates/quoted_reply | 7 | ||||
| -rw-r--r-- | users/ryan/home.nix | 126 | ||||
| -rw-r--r-- | users/ryan/zen/zenPolicies.nix | 125 | ||||
| -rw-r--r-- | users/ryan/zen/zenProfile.nix | 71 |
13 files changed, 1646 insertions, 0 deletions
diff --git a/files/CACerts/RyanCA.crt b/files/CACerts/RyanCA.crt new file mode 100644 index 0000000..7fa09c1 --- /dev/null +++ b/files/CACerts/RyanCA.crt | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN CERTIFICATE----- | ||
| 2 | MIIBmDCCAT2gAwIBAgIQIq6m5IB0yZ1181RHpL6jyjAKBggqhkjOPQQDAjAqMQ8w | ||
| 3 | DQYDVQQKEwZSeWFuQ0ExFzAVBgNVBAMTDlJ5YW5DQSBSb290IENBMB4XDTIyMTAx | ||
| 4 | OTIzMjIxNFoXDTMyMTAxNjIzMjIxNFowKjEPMA0GA1UEChMGUnlhbkNBMRcwFQYD | ||
| 5 | VQQDEw5SeWFuQ0EgUm9vdCBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAhR | ||
| 6 | Z3X7MTDDzvPAuW9JM8Rn4MU283Y3Wa2a1RiyTxo2XGlEB8HPgfL7MwRccUlCiABl | ||
| 7 | zPHkaYUvrjJrq7PjsuejRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG | ||
| 8 | AQH/AgEBMB0GA1UdDgQWBBS4/S97d94NQoK+G+Lh9T76LVCxXDAKBggqhkjOPQQD | ||
| 9 | AgNJADBGAiEA5WVKjNUN1x4+X17XnD+H5QKLgs+M/mFfyk3yPY1aMtoCIQCnGAu9 | ||
| 10 | wrKUglPbAPcQ1Qs47qeBubJu5um1v+mi0+MGPg== | ||
| 11 | -----END CERTIFICATE----- | ||
diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..8905305 --- /dev/null +++ b/flake.lock | |||
| @@ -0,0 +1,296 @@ | |||
| 1 | { | ||
| 2 | "nodes": { | ||
| 3 | "darwin": { | ||
| 4 | "inputs": { | ||
| 5 | "nixpkgs": [ | ||
| 6 | "nixpkgs" | ||
| 7 | ] | ||
| 8 | }, | ||
| 9 | "locked": { | ||
| 10 | "lastModified": 1781242433, | ||
| 11 | "narHash": "sha256-bchLZZ3sRn740zyvD2icZSnNoTaanN0nw7l6fjVXO+E=", | ||
| 12 | "owner": "nix-darwin", | ||
| 13 | "repo": "nix-darwin", | ||
| 14 | "rev": "aabb2037edfc0f210723b72cd5f528aab5dd3f0b", | ||
| 15 | "type": "github" | ||
| 16 | }, | ||
| 17 | "original": { | ||
| 18 | "owner": "nix-darwin", | ||
| 19 | "ref": "master", | ||
| 20 | "repo": "nix-darwin", | ||
| 21 | "type": "github" | ||
| 22 | } | ||
| 23 | }, | ||
| 24 | "determinate": { | ||
| 25 | "inputs": { | ||
| 26 | "determinate-nixd-aarch64-darwin": "determinate-nixd-aarch64-darwin", | ||
| 27 | "determinate-nixd-aarch64-linux": "determinate-nixd-aarch64-linux", | ||
| 28 | "determinate-nixd-x86_64-linux": "determinate-nixd-x86_64-linux", | ||
| 29 | "nix": "nix", | ||
| 30 | "nixpkgs": "nixpkgs_2" | ||
| 31 | }, | ||
| 32 | "locked": { | ||
| 33 | "lastModified": 1780941588, | ||
| 34 | "narHash": "sha256-cXxaBtTSYEYVtSxw4IH0hPa+p+VFxS0i+66GwxVFk7o=", | ||
| 35 | "rev": "70c28bcdd4dde10d04f39e7accb5738a1f5d5298", | ||
| 36 | "revCount": 421, | ||
| 37 | "type": "tarball", | ||
| 38 | "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/determinate/3.21.1/019ea867-5568-7d03-9579-e943ed6d4cef/source.tar.gz" | ||
| 39 | }, | ||
| 40 | "original": { | ||
| 41 | "type": "tarball", | ||
| 42 | "url": "https://flakehub.com/f/DeterminateSystems/determinate/3" | ||
| 43 | } | ||
| 44 | }, | ||
| 45 | "determinate-nixd-aarch64-darwin": { | ||
| 46 | "flake": false, | ||
| 47 | "locked": { | ||
| 48 | "narHash": "sha256-ctwRrPKWBSFkTqlCHRGz6MHBSWRkbSAEVGoelsxdr2g=", | ||
| 49 | "type": "file", | ||
| 50 | "url": "https://install.determinate.systems/determinate-nixd/tag/v3.21.1/macOS" | ||
| 51 | }, | ||
| 52 | "original": { | ||
| 53 | "type": "file", | ||
| 54 | "url": "https://install.determinate.systems/determinate-nixd/tag/v3.21.1/macOS" | ||
| 55 | } | ||
| 56 | }, | ||
| 57 | "determinate-nixd-aarch64-linux": { | ||
| 58 | "flake": false, | ||
| 59 | "locked": { | ||
| 60 | "narHash": "sha256-qYFrMN6lSMRYV87D/uK5L2CUBvOpoLZAAfSYXvcp9cc=", | ||
| 61 | "type": "file", | ||
| 62 | "url": "https://install.determinate.systems/determinate-nixd/tag/v3.21.1/aarch64-linux" | ||
| 63 | }, | ||
| 64 | "original": { | ||
| 65 | "type": "file", | ||
| 66 | "url": "https://install.determinate.systems/determinate-nixd/tag/v3.21.1/aarch64-linux" | ||
| 67 | } | ||
| 68 | }, | ||
| 69 | "determinate-nixd-x86_64-linux": { | ||
| 70 | "flake": false, | ||
| 71 | "locked": { | ||
| 72 | "narHash": "sha256-BxzPf6fT1ekyvD5JA0vvDJOTPtIyjrzVg3Puuo0ftbg=", | ||
| 73 | "type": "file", | ||
| 74 | "url": "https://install.determinate.systems/determinate-nixd/tag/v3.21.1/x86_64-linux" | ||
| 75 | }, | ||
| 76 | "original": { | ||
| 77 | "type": "file", | ||
| 78 | "url": "https://install.determinate.systems/determinate-nixd/tag/v3.21.1/x86_64-linux" | ||
| 79 | } | ||
| 80 | }, | ||
| 81 | "flake-compat": { | ||
| 82 | "flake": false, | ||
| 83 | "locked": { | ||
| 84 | "lastModified": 1696426674, | ||
| 85 | "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", | ||
| 86 | "owner": "edolstra", | ||
| 87 | "repo": "flake-compat", | ||
| 88 | "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", | ||
| 89 | "type": "github" | ||
| 90 | }, | ||
| 91 | "original": { | ||
| 92 | "owner": "edolstra", | ||
| 93 | "repo": "flake-compat", | ||
| 94 | "type": "github" | ||
| 95 | } | ||
| 96 | }, | ||
| 97 | "flake-parts": { | ||
| 98 | "inputs": { | ||
| 99 | "nixpkgs-lib": [ | ||
| 100 | "determinate", | ||
| 101 | "nix", | ||
| 102 | "nixpkgs" | ||
| 103 | ] | ||
| 104 | }, | ||
| 105 | "locked": { | ||
| 106 | "lastModified": 1748821116, | ||
| 107 | "narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=", | ||
| 108 | "rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1", | ||
| 109 | "revCount": 377, | ||
| 110 | "type": "tarball", | ||
| 111 | "url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.377%2Brev-49f0870db23e8c1ca0b5259734a02cd9e1e371a1/01972f28-554a-73f8-91f4-d488cc502f08/source.tar.gz" | ||
| 112 | }, | ||
| 113 | "original": { | ||
| 114 | "type": "tarball", | ||
| 115 | "url": "https://flakehub.com/f/hercules-ci/flake-parts/0.1" | ||
| 116 | } | ||
| 117 | }, | ||
| 118 | "git-hooks-nix": { | ||
| 119 | "inputs": { | ||
| 120 | "flake-compat": "flake-compat", | ||
| 121 | "gitignore": [ | ||
| 122 | "determinate", | ||
| 123 | "nix" | ||
| 124 | ], | ||
| 125 | "nixpkgs": [ | ||
| 126 | "determinate", | ||
| 127 | "nix", | ||
| 128 | "nixpkgs" | ||
| 129 | ] | ||
| 130 | }, | ||
| 131 | "locked": { | ||
| 132 | "lastModified": 1747372754, | ||
| 133 | "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", | ||
| 134 | "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", | ||
| 135 | "revCount": 1026, | ||
| 136 | "type": "tarball", | ||
| 137 | "url": "https://api.flakehub.com/f/pinned/cachix/git-hooks.nix/0.1.1026%2Brev-80479b6ec16fefd9c1db3ea13aeb038c60530f46/0196d79a-1b35-7b8e-a021-c894fb62163d/source.tar.gz" | ||
| 138 | }, | ||
| 139 | "original": { | ||
| 140 | "type": "tarball", | ||
| 141 | "url": "https://flakehub.com/f/cachix/git-hooks.nix/0.1.941" | ||
| 142 | } | ||
| 143 | }, | ||
| 144 | "home-manager": { | ||
| 145 | "inputs": { | ||
| 146 | "nixpkgs": [ | ||
| 147 | "nixpkgs" | ||
| 148 | ] | ||
| 149 | }, | ||
| 150 | "locked": { | ||
| 151 | "lastModified": 1781189114, | ||
| 152 | "narHash": "sha256-5inaamLgUMWy+MOBE9ChF9QAF1o/74LFuHkI0W/9rqc=", | ||
| 153 | "owner": "nix-community", | ||
| 154 | "repo": "home-manager", | ||
| 155 | "rev": "486595d2cf49cfcd649b58a284fa11ac0e34da22", | ||
| 156 | "type": "github" | ||
| 157 | }, | ||
| 158 | "original": { | ||
| 159 | "owner": "nix-community", | ||
| 160 | "repo": "home-manager", | ||
| 161 | "type": "github" | ||
| 162 | } | ||
| 163 | }, | ||
| 164 | "nix": { | ||
| 165 | "inputs": { | ||
| 166 | "flake-parts": "flake-parts", | ||
| 167 | "git-hooks-nix": "git-hooks-nix", | ||
| 168 | "nixpkgs": "nixpkgs", | ||
| 169 | "nixpkgs-23-11": "nixpkgs-23-11", | ||
| 170 | "nixpkgs-regression": "nixpkgs-regression" | ||
| 171 | }, | ||
| 172 | "locked": { | ||
| 173 | "lastModified": 1780939209, | ||
| 174 | "narHash": "sha256-/JuW5C6sWuC836Y9b7hga3ZvhRiY4k4Zs73RRg5KVWM=", | ||
| 175 | "rev": "952beffe9c45ed245d30209d4f17cf1d26654a2a", | ||
| 176 | "revCount": 26044, | ||
| 177 | "type": "tarball", | ||
| 178 | "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.21.1/019ea860-2acd-7680-ae61-10f9574b2694/source.tar.gz" | ||
| 179 | }, | ||
| 180 | "original": { | ||
| 181 | "type": "tarball", | ||
| 182 | "url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A" | ||
| 183 | } | ||
| 184 | }, | ||
| 185 | "nixpkgs": { | ||
| 186 | "locked": { | ||
| 187 | "lastModified": 1773222311, | ||
| 188 | "narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=", | ||
| 189 | "rev": "0590cd39f728e129122770c029970378a79d076a", | ||
| 190 | "revCount": 909248, | ||
| 191 | "type": "tarball", | ||
| 192 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.909248%2Brev-0590cd39f728e129122770c029970378a79d076a/019ce32b-8ace-7339-b129-cceaa8dd10c6/source.tar.gz" | ||
| 193 | }, | ||
| 194 | "original": { | ||
| 195 | "type": "tarball", | ||
| 196 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.2511" | ||
| 197 | } | ||
| 198 | }, | ||
| 199 | "nixpkgs-23-11": { | ||
| 200 | "locked": { | ||
| 201 | "lastModified": 1717159533, | ||
| 202 | "narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=", | ||
| 203 | "owner": "NixOS", | ||
| 204 | "repo": "nixpkgs", | ||
| 205 | "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", | ||
| 206 | "type": "github" | ||
| 207 | }, | ||
| 208 | "original": { | ||
| 209 | "owner": "NixOS", | ||
| 210 | "repo": "nixpkgs", | ||
| 211 | "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", | ||
| 212 | "type": "github" | ||
| 213 | } | ||
| 214 | }, | ||
| 215 | "nixpkgs-regression": { | ||
| 216 | "locked": { | ||
| 217 | "lastModified": 1643052045, | ||
| 218 | "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", | ||
| 219 | "owner": "NixOS", | ||
| 220 | "repo": "nixpkgs", | ||
| 221 | "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", | ||
| 222 | "type": "github" | ||
| 223 | }, | ||
| 224 | "original": { | ||
| 225 | "owner": "NixOS", | ||
| 226 | "repo": "nixpkgs", | ||
| 227 | "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", | ||
| 228 | "type": "github" | ||
| 229 | } | ||
| 230 | }, | ||
| 231 | "nixpkgs_2": { | ||
| 232 | "locked": { | ||
| 233 | "lastModified": 1780336545, | ||
| 234 | "narHash": "sha256-vhVhuXzFrIOfcssC/9hDHx7MHzDKjF3keHuREOQqQiQ=", | ||
| 235 | "rev": "4df1b885d76a54e1aa1a318f8d16fd6005b6401f", | ||
| 236 | "revCount": 1008784, | ||
| 237 | "type": "tarball", | ||
| 238 | "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nixpkgs-weekly/0.1.1008784%2Brev-4df1b885d76a54e1aa1a318f8d16fd6005b6401f/019e8725-c925-7ec1-8f35-3f9effcf169a/source.tar.gz" | ||
| 239 | }, | ||
| 240 | "original": { | ||
| 241 | "type": "tarball", | ||
| 242 | "url": "https://flakehub.com/f/DeterminateSystems/nixpkgs-weekly/0.1" | ||
| 243 | } | ||
| 244 | }, | ||
| 245 | "nixpkgs_3": { | ||
| 246 | "locked": { | ||
| 247 | "lastModified": 1781229721, | ||
| 248 | "narHash": "sha256-ORvqDbb/LYxiJljGIejapjkc/kJbVote2N1WSb9W45I=", | ||
| 249 | "owner": "nixos", | ||
| 250 | "repo": "nixpkgs", | ||
| 251 | "rev": "173d0ad7a974f8543a9ab01d2271b2e290341b33", | ||
| 252 | "type": "github" | ||
| 253 | }, | ||
| 254 | "original": { | ||
| 255 | "owner": "nixos", | ||
| 256 | "ref": "nixpkgs-unstable", | ||
| 257 | "repo": "nixpkgs", | ||
| 258 | "type": "github" | ||
| 259 | } | ||
| 260 | }, | ||
| 261 | "root": { | ||
| 262 | "inputs": { | ||
| 263 | "darwin": "darwin", | ||
| 264 | "determinate": "determinate", | ||
| 265 | "home-manager": "home-manager", | ||
| 266 | "nixpkgs": "nixpkgs_3", | ||
| 267 | "zen-browser": "zen-browser" | ||
| 268 | } | ||
| 269 | }, | ||
| 270 | "zen-browser": { | ||
| 271 | "inputs": { | ||
| 272 | "home-manager": [ | ||
| 273 | "home-manager" | ||
| 274 | ], | ||
| 275 | "nixpkgs": [ | ||
| 276 | "nixpkgs" | ||
| 277 | ] | ||
| 278 | }, | ||
| 279 | "locked": { | ||
| 280 | "lastModified": 1781426426, | ||
| 281 | "narHash": "sha256-yzxJMNgv/sLishhCT9G2lm7W9CjHSlXWkfbWC7vfjqc=", | ||
| 282 | "owner": "0xc000022070", | ||
| 283 | "repo": "zen-browser-flake", | ||
| 284 | "rev": "df336067c1a8af3bfce3f0b88b66dc1c57411b4e", | ||
| 285 | "type": "github" | ||
| 286 | }, | ||
| 287 | "original": { | ||
| 288 | "owner": "0xc000022070", | ||
| 289 | "repo": "zen-browser-flake", | ||
| 290 | "type": "github" | ||
| 291 | } | ||
| 292 | } | ||
| 293 | }, | ||
| 294 | "root": "root", | ||
| 295 | "version": 7 | ||
| 296 | } | ||
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..71006ec --- /dev/null +++ b/flake.nix | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | { | ||
| 2 | description = "Example nix-darwin system flake"; | ||
| 3 | |||
| 4 | inputs = { | ||
| 5 | nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; | ||
| 6 | darwin = { | ||
| 7 | url = "github:nix-darwin/nix-darwin/master"; | ||
| 8 | inputs.nixpkgs.follows = "nixpkgs"; | ||
| 9 | }; | ||
| 10 | home-manager = { | ||
| 11 | url = "github:nix-community/home-manager"; | ||
| 12 | inputs.nixpkgs.follows = "nixpkgs"; | ||
| 13 | }; | ||
| 14 | determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/3"; | ||
| 15 | zen-browser = { # Used exclusively for HM module, Zen is installed via cask | ||
| 16 | url = "github:0xc000022070/zen-browser-flake"; | ||
| 17 | inputs = { | ||
| 18 | nixpkgs.follows = "nixpkgs"; | ||
| 19 | home-manager.follows = "home-manager"; | ||
| 20 | }; | ||
| 21 | }; | ||
| 22 | }; | ||
| 23 | |||
| 24 | outputs = { nixpkgs, home-manager, ... }@inputs: { | ||
| 25 | darwinConfigurations."RyanMac" = inputs.darwin.lib.darwinSystem { | ||
| 26 | system = "aarch64-darwin"; | ||
| 27 | specialArgs = { inherit inputs; }; | ||
| 28 | modules = [ | ||
| 29 | inputs.determinate.darwinModules.default | ||
| 30 | ./hosts/RyanMac/configuration.nix | ||
| 31 | home-manager.darwinModules.home-manager | ||
| 32 | { | ||
| 33 | home-manager.useGlobalPkgs = true; | ||
| 34 | home-manager.useUserPackages = true; | ||
| 35 | home-manager.users.ryan = { | ||
| 36 | imports = [ | ||
| 37 | inputs.zen-browser.homeModules.beta | ||
| 38 | ./users/ryan/home.nix | ||
| 39 | ]; | ||
| 40 | }; | ||
| 41 | } | ||
| 42 | ]; | ||
| 43 | }; | ||
| 44 | }; | ||
| 45 | } | ||
diff --git a/hosts/RyanMac/configuration.nix b/hosts/RyanMac/configuration.nix new file mode 100644 index 0000000..572c534 --- /dev/null +++ b/hosts/RyanMac/configuration.nix | |||
| @@ -0,0 +1,212 @@ | |||
| 1 | { pkgs, inputs, ... }: | ||
| 2 | let | ||
| 3 | username = "ryan"; | ||
| 4 | |||
| 5 | defaultBrowser = "zen"; | ||
| 6 | |||
| 7 | pinnedNixpkgs = pkgs.writeText "flake-registry.json" (builtins.toJSON { | ||
| 8 | version = 2; | ||
| 9 | flakes = [ | ||
| 10 | { | ||
| 11 | from = { type = "indirect"; id = "nixpkgs"; }; | ||
| 12 | to = { | ||
| 13 | type = "path"; | ||
| 14 | path = inputs.nixpkgs.outPath; | ||
| 15 | lastModified = inputs.nixpkgs.lastModified; | ||
| 16 | narHash = inputs.nixpkgs.narHash; | ||
| 17 | }; | ||
| 18 | } | ||
| 19 | ]; | ||
| 20 | }); | ||
| 21 | |||
| 22 | in { | ||
| 23 | # Define the system's user and home dir location | ||
| 24 | users.users."${username}" = { | ||
| 25 | name = "${username}"; | ||
| 26 | home = "/Users/${username}"; | ||
| 27 | }; | ||
| 28 | |||
| 29 | system.primaryUser = "${username}"; | ||
| 30 | |||
| 31 | # Install the /etc/nix/flake-registry.json file we made above | ||
| 32 | environment.etc."nix/flake-registry.json".source = pinnedNixpkgs; | ||
| 33 | |||
| 34 | # Install RyanCA Root | ||
| 35 | security.pki.certificateFiles = [ | ||
| 36 | ../../files/CACerts/RyanCA.crt | ||
| 37 | ]; | ||
| 38 | |||
| 39 | # Need to disable native nix handling because of Determinate nix | ||
| 40 | determinateNix = { | ||
| 41 | enable = true; | ||
| 42 | customSettings = { | ||
| 43 | flake-registry = "/etc/nix/flake-registry.json"; | ||
| 44 | }; | ||
| 45 | }; | ||
| 46 | |||
| 47 | # Determines the nix-darwin release compatibility | ||
| 48 | system.stateVersion = 6; | ||
| 49 | |||
| 50 | # System profile programs | ||
| 51 | programs = { | ||
| 52 | zsh.enable = true; | ||
| 53 | }; | ||
| 54 | |||
| 55 | # Install homebrew casks/apps | ||
| 56 | homebrew = { | ||
| 57 | enable = true; | ||
| 58 | |||
| 59 | onActivation = { | ||
| 60 | cleanup = "zap"; | ||
| 61 | extraFlags = [ "--force-cleanup" ]; | ||
| 62 | }; | ||
| 63 | |||
| 64 | casks = [ | ||
| 65 | "utm" | ||
| 66 | "ghostty" | ||
| 67 | "zen" | ||
| 68 | ]; | ||
| 69 | }; | ||
| 70 | |||
| 71 | # Keyboard shortcuts using skhd | ||
| 72 | services.skhd = { | ||
| 73 | enable = true; | ||
| 74 | skhdConfig = '' | ||
| 75 | alt - d : osascript -e 'tell application "System Events" to key code 49 using {command down}' | ||
| 76 | alt - return : open -na /Applications/Ghostty.app | ||
| 77 | ''; | ||
| 78 | }; | ||
| 79 | |||
| 80 | # System configuration | ||
| 81 | time.timeZone = "America/New_York"; | ||
| 82 | |||
| 83 | system.defaults = { | ||
| 84 | NSGlobalDomain = { | ||
| 85 | # 24 hour time | ||
| 86 | AppleICUForce24HourTime = true; | ||
| 87 | |||
| 88 | # Dark Mode | ||
| 89 | AppleInterfaceStyle = "Dark"; | ||
| 90 | |||
| 91 | # Key repeat rate | ||
| 92 | KeyRepeat = 4; | ||
| 93 | InitialKeyRepeat = 30; | ||
| 94 | |||
| 95 | # Swap F1-12 to be default | ||
| 96 | "com.apple.keyboard.fnState" = true; | ||
| 97 | |||
| 98 | # Disable Keyboard bullcrap | ||
| 99 | NSAutomaticCapitalizationEnabled = false; | ||
| 100 | NSAutomaticDashSubstitutionEnabled = false; | ||
| 101 | NSAutomaticPeriodSubstitutionEnabled = false; | ||
| 102 | NSAutomaticQuoteSubstitutionEnabled = false; | ||
| 103 | NSAutomaticSpellingCorrectionEnabled = false; | ||
| 104 | ApplePressAndHoldEnabled = false; | ||
| 105 | }; | ||
| 106 | |||
| 107 | # Control center stuff | ||
| 108 | controlcenter = { | ||
| 109 | BatteryShowPercentage = true; | ||
| 110 | }; | ||
| 111 | |||
| 112 | # Clock settings | ||
| 113 | menuExtraClock = { | ||
| 114 | Show24Hour = true; | ||
| 115 | ShowDate = 1; # Always | ||
| 116 | ShowDayOfWeek = true; | ||
| 117 | ShowSeconds = true; | ||
| 118 | }; | ||
| 119 | |||
| 120 | # Screen capture settings | ||
| 121 | screencapture = { | ||
| 122 | target = "clipboard"; | ||
| 123 | type = "png"; | ||
| 124 | }; | ||
| 125 | |||
| 126 | # finder good settings | ||
| 127 | finder = { | ||
| 128 | AppleShowAllExtensions = true; | ||
| 129 | AppleShowAllFiles = true; | ||
| 130 | ShowPathbar = true; | ||
| 131 | FXEnableExtensionChangeWarning = false; | ||
| 132 | _FXShowPosixPathInTitle = true; | ||
| 133 | NewWindowTarget = "Home"; | ||
| 134 | ShowExternalHardDrivesOnDesktop = false; | ||
| 135 | ShowHardDrivesOnDesktop = false; | ||
| 136 | ShowMountedServersOnDesktop = false; | ||
| 137 | ShowRemovableMediaOnDesktop = false; | ||
| 138 | ShowStatusBar = true; | ||
| 139 | }; | ||
| 140 | |||
| 141 | # Login Window Settings | ||
| 142 | loginwindow = { | ||
| 143 | GuestEnabled = false; | ||
| 144 | DisableConsoleAccess = true; | ||
| 145 | }; | ||
| 146 | |||
| 147 | # dock settings | ||
| 148 | dock = { | ||
| 149 | magnification = true; | ||
| 150 | largesize = 96; | ||
| 151 | tilesize = 32; | ||
| 152 | minimize-to-application = false; | ||
| 153 | orientation = "bottom"; | ||
| 154 | autohide = true; | ||
| 155 | persistent-apps = [ | ||
| 156 | { app = "/Applications/Zen.app"; } | ||
| 157 | #{ app = "/System/Applications/Launchpad.app"; } | ||
| 158 | { app = "/System/Applications/Messages.app"; } | ||
| 159 | { app = "/System/Applications/Facetime.app"; } | ||
| 160 | { app = "/System/Applications/Calendar.app"; } | ||
| 161 | { app = "/System/Applications/App Store.app"; } | ||
| 162 | { app = "/System/Applications/System Settings.app"; } | ||
| 163 | { app = "/Applications/UTM.app"; } | ||
| 164 | ]; | ||
| 165 | persistent-others = [ | ||
| 166 | { folder = { path = "/Users/${username}/Downloads"; showas = "grid"; arrangement = "date-created"; }; } | ||
| 167 | { folder = { path = "/Applications"; showas = "grid"; arrangement = "name"; }; } | ||
| 168 | ]; | ||
| 169 | show-recents = false; | ||
| 170 | }; | ||
| 171 | |||
| 172 | # Custom preferences | ||
| 173 | CustomUserPreferences = { | ||
| 174 | NSGlobalDomain = { | ||
| 175 | # Always show menu bar | ||
| 176 | AppleMenuBarVisibleInFullscreen = true; | ||
| 177 | }; | ||
| 178 | |||
| 179 | "com.apple.symbolichotkeys" = { | ||
| 180 | AppleSymbolicHotKeys = { | ||
| 181 | "64" = { | ||
| 182 | enabled = true; # skhd needs this for its shortcut | ||
| 183 | }; | ||
| 184 | }; | ||
| 185 | }; | ||
| 186 | }; | ||
| 187 | }; | ||
| 188 | |||
| 189 | # Post-Activation scripts | ||
| 190 | system.activationScripts.postActivation.text = '' | ||
| 191 | echo "Configuring NTP servers..." | ||
| 192 | systemsetup -setnetworktimeserver pool.ntp.org > /dev/null 2>&1 || true | ||
| 193 | systemsetup -setusingnetworktime on > /dev/null 2>&1 || true | ||
| 194 | |||
| 195 | ryancasum="$(${pkgs.openssl}/bin/openssl x509 -in "${../../files/CACerts/RyanCA.crt}" -noout -fingerprint -sha1 | sed 's/.*=//; s/://g')" | ||
| 196 | if ! /usr/bin/security find-certificate -a -Z "/Library/Keychains/System.keychain" | tr -d ':' | grep -iq "$ryancasum"; then | ||
| 197 | echo "Installing RyanCA Certificate..." | ||
| 198 | /usr/bin/security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ${../../files/CACerts/RyanCA.crt} | ||
| 199 | fi | ||
| 200 | |||
| 201 | echo "Reloading Preferences DB..." | ||
| 202 | /System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u | ||
| 203 | |||
| 204 | echo "Setting default browser" | ||
| 205 | ${pkgs.defaultbrowser}/bin/defaultbrowser ${defaultBrowser} | ||
| 206 | |||
| 207 | # this is fragile so it goes at the bottom | ||
| 208 | echo "Reloading skhd..." | ||
| 209 | sudo -iu ${username} ${pkgs.skhd}/bin/skhd -r | ||
| 210 | ''; | ||
| 211 | |||
| 212 | } | ||
diff --git a/users/ryan/aerc/accounts.conf b/users/ryan/aerc/accounts.conf new file mode 100644 index 0000000..b140dbd --- /dev/null +++ b/users/ryan/aerc/accounts.conf | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | [Personal] | ||
| 2 | source = jmap://ryan%40rschanz.org@mail.rschanz.org/jmap/session | ||
| 3 | source-cred-cmd = pass emails/personal 2>/dev/null | tr -d '\n' | ||
| 4 | outgoing = jmap:// | ||
| 5 | default = Inbox | ||
| 6 | from = Ryan Schanzenbacher <ryan@rschanz.org> | ||
| 7 | copy-to = Sent | ||
| 8 | signature-file = ~/.config/aerc/signature_personal | ||
| 9 | #check-mail = 5m | ||
| 10 | aliases = Ryan S <ryan+ritlugdemo@rschanz.org>, Ryan Schanzenbacher <ryan+guixdevel@rschanz.org> | ||
| 11 | pgp-self-encrypt = true | ||
| 12 | |||
| 13 | [School] | ||
| 14 | source = imaps+oauthbearer://rjs1877%40rit.edu@imap.gmail.com:993?token_endpoint=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken&client_id=667738788924-0rdfvaq9ijfo1vk4474eb3quf8206h2t.apps.googleusercontent.com&client_secret=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 | ||
| 15 | source-cred-cmd = pass emails/rit_personal 2>/dev/null | tr -d '\n' | ||
| 16 | outgoing = smtps+oauthbearer://rjs1877%40rit.edu@imap.gmail.com:465?token_endpoint=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken&client_id=667738788924-0rdfvaq9ijfo1vk4474eb3quf8206h2t.apps.googleusercontent.com&client_secret=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 | ||
| 17 | outgoing-cred-cmd = pass emails/rit_personal 2>/dev/null | tr -d '\n' | ||
| 18 | from = Ryan Schanzenbacher <rjs1877@rit.edu> | ||
| 19 | signature-file = ~/.config/aerc/signature_rit_personal | ||
| 20 | check-mail = 5m | ||
| 21 | default = INBOX | ||
| 22 | copy-to = [Gmail]/Sent Mail | ||
| 23 | pgp-self-encrypt = true | ||
| 24 | |||
diff --git a/users/ryan/aerc/aerc.conf b/users/ryan/aerc/aerc.conf new file mode 100644 index 0000000..ad54cf7 --- /dev/null +++ b/users/ryan/aerc/aerc.conf | |||
| @@ -0,0 +1,569 @@ | |||
| 1 | # | ||
| 2 | # aerc main configuration | ||
| 3 | |||
| 4 | [general] | ||
| 5 | # | ||
| 6 | # Used as a default path for save operations if no other path is specified. | ||
| 7 | # ~ is expanded to the current user home dir. | ||
| 8 | # | ||
| 9 | default-save-path=~/Downloads/ | ||
| 10 | |||
| 11 | # If set to "gpg", aerc will use system gpg binary and keystore for all crypto | ||
| 12 | # operations. If set to "internal", the internal openpgp keyring will be used. | ||
| 13 | # If set to "auto", the system gpg will be preferred unless the internal | ||
| 14 | # keyring already exists, in which case the latter will be used. | ||
| 15 | # | ||
| 16 | # Default: auto | ||
| 17 | pgp-provider=gpg | ||
| 18 | |||
| 19 | # By default, the file permissions of accounts.conf must be restrictive and | ||
| 20 | # only allow reading by the file owner (0600). Set this option to true to | ||
| 21 | # ignore this permission check. Use this with care as it may expose your | ||
| 22 | # credentials. | ||
| 23 | # | ||
| 24 | # Default: false | ||
| 25 | unsafe-accounts-conf=true # I don't store my creds in this | ||
| 26 | |||
| 27 | # Output log messages to specified file. A path starting with ~/ is expanded to | ||
| 28 | # the user home dir. When redirecting aerc's output to a file using > shell | ||
| 29 | # redirection, this setting is ignored and log messages are printed to stdout. | ||
| 30 | # | ||
| 31 | #log-file=~/aerc_log | ||
| 32 | |||
| 33 | # Only log messages above the specified level to log-file. Supported levels | ||
| 34 | # are: trace, debug, info, warn and error. When redirecting aerc's output to | ||
| 35 | # a file using > shell redirection, this setting is ignored and the log level | ||
| 36 | # is forced to trace. | ||
| 37 | # | ||
| 38 | # Default: info | ||
| 39 | log-level=trace | ||
| 40 | |||
| 41 | # Set the $TERM environment variable used for the embedded terminal. | ||
| 42 | # | ||
| 43 | # Default: xterm-256color | ||
| 44 | #term=xterm-256color | ||
| 45 | |||
| 46 | # Display OSC8 strings in the embedded terminal | ||
| 47 | # | ||
| 48 | # Default: false | ||
| 49 | #enable-osc8=false | ||
| 50 | |||
| 51 | [ui] | ||
| 52 | # | ||
| 53 | # Describes the format for each row in a mailbox view. This is a comma | ||
| 54 | # separated list of column names with an optional align and width suffix. After | ||
| 55 | # the column name, one of the '<' (left), ':' (center) or '>' (right) alignment | ||
| 56 | # characters can be added (by default, left) followed by an optional width | ||
| 57 | # specifier. The width is either an integer representing a fixed number of | ||
| 58 | # characters, or a percentage between 1% and 99% representing a fraction of the | ||
| 59 | # terminal width. It can also be one of the '*' (auto) or '=' (fit) special | ||
| 60 | # width specifiers. Auto width columns will be equally attributed the remaining | ||
| 61 | # terminal width. Fit width columns take the width of their contents. If no | ||
| 62 | # width specifier is set, '*' is used by default. | ||
| 63 | # | ||
| 64 | # Default: date<20,name<17,flags>4,subject<* | ||
| 65 | #index-columns=date<20,name<17,flags>4,subject<* | ||
| 66 | |||
| 67 | spinner = '/,-,\,|' | ||
| 68 | |||
| 69 | # | ||
| 70 | # Each name in index-columns must have a corresponding column-$name setting. | ||
| 71 | # All column-$name settings accept golang text/template syntax. See | ||
| 72 | # aerc-templates(7) for available template attributes and functions. | ||
| 73 | # | ||
| 74 | # Default settings | ||
| 75 | #column-date={{.DateAutoFormat .Date.Local}} | ||
| 76 | #column-name={{index (.From | names) 0}} | ||
| 77 | #column-flags={{.Flags | join ""}} | ||
| 78 | #column-subject={{.ThreadPrefix}}{{.Subject}} | ||
| 79 | |||
| 80 | # | ||
| 81 | # String separator inserted between columns. When the column width specifier is | ||
| 82 | # an exact number of characters, the separator is added to it (i.e. the exact | ||
| 83 | # width will be fully available for the column contents). | ||
| 84 | # | ||
| 85 | # Default: " " | ||
| 86 | #column-separator=" " | ||
| 87 | |||
| 88 | # | ||
| 89 | # See time.Time#Format at https://godoc.org/time#Time.Format | ||
| 90 | # | ||
| 91 | # Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time) | ||
| 92 | #timestamp-format=2006-01-02 03:04 PM | ||
| 93 | |||
| 94 | # | ||
| 95 | # Index-only time format for messages that were received/sent today. | ||
| 96 | # If this is not specified, timestamp-format is used instead. | ||
| 97 | # | ||
| 98 | #this-day-time-format= | ||
| 99 | |||
| 100 | # | ||
| 101 | # Index-only time format for messages that were received/sent within the last | ||
| 102 | # 7 days. If this is not specified, timestamp-format is used instead. | ||
| 103 | # | ||
| 104 | #this-week-time-format= | ||
| 105 | |||
| 106 | # | ||
| 107 | # Index-only time format for messages that were received/sent this year. | ||
| 108 | # If this is not specified, timestamp-format is used instead. | ||
| 109 | # | ||
| 110 | #this-year-time-format= | ||
| 111 | |||
| 112 | # | ||
| 113 | # Width of the sidebar, including the border. | ||
| 114 | # | ||
| 115 | # Default: 20 | ||
| 116 | #sidebar-width=20 | ||
| 117 | |||
| 118 | # | ||
| 119 | # Message to display when viewing an empty folder. | ||
| 120 | # | ||
| 121 | # Default: (no messages) | ||
| 122 | #empty-message=(no messages) | ||
| 123 | |||
| 124 | # Message to display when no folders exists or are all filtered | ||
| 125 | # | ||
| 126 | # Default: (no folders) | ||
| 127 | #empty-dirlist=(no folders) | ||
| 128 | |||
| 129 | # Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel | ||
| 130 | # | ||
| 131 | # Default: false | ||
| 132 | #mouse-enabled=false | ||
| 133 | |||
| 134 | # | ||
| 135 | # Ring the bell when new messages are received | ||
| 136 | # | ||
| 137 | # Default: true | ||
| 138 | #new-message-bell=true | ||
| 139 | |||
| 140 | # | ||
| 141 | # Template to use for Account tab titles | ||
| 142 | # | ||
| 143 | # Default: {{.Account}} | ||
| 144 | #tab-title-account={{.Account}} | ||
| 145 | |||
| 146 | # Marker to show before a pinned tab's name. | ||
| 147 | # | ||
| 148 | # Default: ` | ||
| 149 | #pinned-tab-marker='`' | ||
| 150 | |||
| 151 | # Template for the left side of the directory list. | ||
| 152 | # See aerc-templates(7) for all available fields and functions. | ||
| 153 | # | ||
| 154 | # Default: {{.Folder}} | ||
| 155 | #dirlist-left={{.Folder}} | ||
| 156 | |||
| 157 | # Template for the right side of the directory list. | ||
| 158 | # See aerc-templates(7) for all available fields and functions. | ||
| 159 | # | ||
| 160 | # Default: {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}} | ||
| 161 | #dirlist-right={{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}} | ||
| 162 | |||
| 163 | # Delay after which the messages are actually listed when entering a directory. | ||
| 164 | # This avoids loading messages when skipping over folders and makes the UI more | ||
| 165 | # responsive. If you do not want that, set it to 0s. | ||
| 166 | # | ||
| 167 | # Default: 200ms | ||
| 168 | #dirlist-delay=200ms | ||
| 169 | |||
| 170 | # Display the directory list as a foldable tree that allows to collapse and | ||
| 171 | # expand the folders. | ||
| 172 | # | ||
| 173 | # Default: false | ||
| 174 | #dirlist-tree=false | ||
| 175 | |||
| 176 | # If dirlist-tree is enabled, set level at which folders are collapsed by | ||
| 177 | # default. Set to 0 to disable. | ||
| 178 | # | ||
| 179 | # Default: 0 | ||
| 180 | #dirlist-collapse=0 | ||
| 181 | |||
| 182 | # List of space-separated criteria to sort the messages by, see *sort* | ||
| 183 | # command in *aerc*(1) for reference. Prefixing a criterion with "-r " | ||
| 184 | # reverses that criterion. | ||
| 185 | # | ||
| 186 | # Example: "from -r date" | ||
| 187 | # | ||
| 188 | #sort= | ||
| 189 | |||
| 190 | # Moves to next message when the current message is deleted | ||
| 191 | # | ||
| 192 | # Default: true | ||
| 193 | #next-message-on-delete=true | ||
| 194 | |||
| 195 | # Automatically set the "seen" flag when a message is opened in the message | ||
| 196 | # viewer. | ||
| 197 | # | ||
| 198 | # Default: true | ||
| 199 | #auto-mark-read=true | ||
| 200 | |||
| 201 | # The directories where the stylesets are stored. It takes a colon-separated | ||
| 202 | # list of directories. If this is unset or if a styleset cannot be found, the | ||
| 203 | # following paths will be used as a fallback in that order: | ||
| 204 | # | ||
| 205 | # ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets | ||
| 206 | # ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets | ||
| 207 | # /usr/local/share/aerc/stylesets | ||
| 208 | # /usr/share/aerc/stylesets | ||
| 209 | # | ||
| 210 | #stylesets-dirs= | ||
| 211 | |||
| 212 | # Uncomment to use box-drawing characters for vertical and horizontal borders. | ||
| 213 | # | ||
| 214 | # Default: " " | ||
| 215 | #border-char-vertical=" " | ||
| 216 | #border-char-horizontal=" " | ||
| 217 | |||
| 218 | # Sets the styleset to use for the aerc ui elements. | ||
| 219 | # | ||
| 220 | # Default: default | ||
| 221 | #styleset-name=default | ||
| 222 | |||
| 223 | # Activates fuzzy search in commands and their arguments: the typed string is | ||
| 224 | # searched in the command or option in any position, and need not be | ||
| 225 | # consecutive characters in the command or option. | ||
| 226 | # | ||
| 227 | # Default: false | ||
| 228 | #fuzzy-complete=false | ||
| 229 | |||
| 230 | # How long to wait after the last input before auto-completion is triggered. | ||
| 231 | # | ||
| 232 | # Default: 250ms | ||
| 233 | #completion-delay=250ms | ||
| 234 | |||
| 235 | # The minimum required characters to allow auto-completion to be triggered after | ||
| 236 | # completion-delay. | ||
| 237 | # | ||
| 238 | # Default: 1 | ||
| 239 | #completion-min-chars=1 | ||
| 240 | |||
| 241 | # | ||
| 242 | # Global switch for completion popovers | ||
| 243 | # | ||
| 244 | # Default: true | ||
| 245 | #completion-popovers=true | ||
| 246 | |||
| 247 | # Uncomment to use UTF-8 symbols to indicate PGP status of messages | ||
| 248 | # | ||
| 249 | # Default: ASCII | ||
| 250 | #icon-unencrypted= | ||
| 251 | #icon-encrypted=✔ | ||
| 252 | #icon-signed=✔ | ||
| 253 | #icon-signed-encrypted=✔ | ||
| 254 | #icon-unknown=✘ | ||
| 255 | #icon-invalid=âš | ||
| 256 | |||
| 257 | # Reverses the order of the message list. By default, the message list is | ||
| 258 | # ordered with the newest (highest UID) message on top. Reversing the order | ||
| 259 | # will put the oldest (lowest UID) message on top. This can be useful in cases | ||
| 260 | # where the backend does not support sorting. | ||
| 261 | # | ||
| 262 | # Default: false | ||
| 263 | #reverse-msglist-order = false | ||
| 264 | |||
| 265 | # Reverse display of the mesage threads. Default order is the the intial | ||
| 266 | # message is on the top with all the replies being displayed below. The | ||
| 267 | # reverse option will put the initial message at the bottom with the | ||
| 268 | # replies on top. | ||
| 269 | # | ||
| 270 | # Default: false | ||
| 271 | #reverse-thread-order=false | ||
| 272 | |||
| 273 | # Sort the thread siblings according to the sort criteria for the messages. If | ||
| 274 | # sort-thread-siblings is false, the thread siblings will be sorted based on | ||
| 275 | # the message UID in ascending order. This option is only applicable for | ||
| 276 | # client-side threading with a backend that enables sorting. Note that there's | ||
| 277 | # a performance impact when sorting is activated. | ||
| 278 | # | ||
| 279 | # Default: false | ||
| 280 | #sort-thread-siblings=false | ||
| 281 | |||
| 282 | #[ui:account=Personal] | ||
| 283 | # | ||
| 284 | # Enable a threaded view of messages. If this is not supported by the backend | ||
| 285 | # (IMAP server or notmuch), threads will be built by the client. | ||
| 286 | # | ||
| 287 | # Default: false | ||
| 288 | threading-enabled=true | ||
| 289 | |||
| 290 | # Force client-side thread building | ||
| 291 | # | ||
| 292 | # Default: false | ||
| 293 | #force-client-threads=false | ||
| 294 | |||
| 295 | # Debounce client-side thread building | ||
| 296 | # | ||
| 297 | # Default: 50ms | ||
| 298 | #client-threads-delay=50ms | ||
| 299 | |||
| 300 | [statusline] | ||
| 301 | # | ||
| 302 | # Describes the format for the status line. This is a comma separated list of | ||
| 303 | # column names with an optional align and width suffix. See [ui].index-columns | ||
| 304 | # for more details. To completely mute the status line except for push | ||
| 305 | # notifications, explicitly set status-columns to an empty string. | ||
| 306 | # | ||
| 307 | # Default: left<*,center:=,right>* | ||
| 308 | #status-columns=left<*,center:=,right>* | ||
| 309 | |||
| 310 | # | ||
| 311 | # Each name in status-columns must have a corresponding column-$name setting. | ||
| 312 | # All column-$name settings accept golang text/template syntax. See | ||
| 313 | # aerc-templates(7) for available template attributes and functions. | ||
| 314 | # | ||
| 315 | # Default settings | ||
| 316 | #column-left=[{{.Account}}] {{.StatusInfo}} | ||
| 317 | #column-center={{.PendingKeys}} | ||
| 318 | #column-right={{.TrayInfo}} | ||
| 319 | |||
| 320 | # | ||
| 321 | # String separator inserted between columns. | ||
| 322 | # See [ui].column-separator for more details. | ||
| 323 | # | ||
| 324 | #column-separator=" " | ||
| 325 | |||
| 326 | # Specifies the separator between grouped statusline elements. | ||
| 327 | # | ||
| 328 | # Default: " | " | ||
| 329 | #separator=" | " | ||
| 330 | |||
| 331 | # Defines the mode for displaying the status elements. | ||
| 332 | # Options: text, icon | ||
| 333 | # | ||
| 334 | # Default: text | ||
| 335 | #display-mode=text | ||
| 336 | |||
| 337 | [viewer] | ||
| 338 | # | ||
| 339 | # Specifies the pager to use when displaying emails. Note that some filters | ||
| 340 | # may add ANSI codes to add color to rendered emails, so you may want to use a | ||
| 341 | # pager which supports ANSI codes. | ||
| 342 | # | ||
| 343 | # Default: less -R | ||
| 344 | #pager=less -R | ||
| 345 | |||
| 346 | # | ||
| 347 | # If an email offers several versions (multipart), you can configure which | ||
| 348 | # mimetype to prefer. For example, this can be used to prefer plaintext over | ||
| 349 | # html emails. | ||
| 350 | # | ||
| 351 | # Default: text/plain,text/html | ||
| 352 | #alternatives=text/plain,text/html | ||
| 353 | |||
| 354 | # | ||
| 355 | # Default setting to determine whether to show full headers or only parsed | ||
| 356 | # ones in message viewer. | ||
| 357 | # | ||
| 358 | # Default: false | ||
| 359 | #show-headers=false | ||
| 360 | |||
| 361 | # | ||
| 362 | # Layout of headers when viewing a message. To display multiple headers in the | ||
| 363 | # same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if | ||
| 364 | # none of their specified headers are present in the message. | ||
| 365 | # | ||
| 366 | # Default: From|To,Cc|Bcc,Date,Subject | ||
| 367 | #header-layout=From|To,Cc|Bcc,Date,Subject | ||
| 368 | |||
| 369 | # Whether to always show the mimetype of an email, even when it is just a single part | ||
| 370 | # | ||
| 371 | # Default: false | ||
| 372 | #always-show-mime=false | ||
| 373 | |||
| 374 | # Parses and extracts http links when viewing a message. Links can then be | ||
| 375 | # accessed with the open-link command. | ||
| 376 | # | ||
| 377 | # Default: true | ||
| 378 | #parse-http-links=true | ||
| 379 | |||
| 380 | [compose] | ||
| 381 | # | ||
| 382 | # Specifies the command to run the editor with. It will be shown in an embedded | ||
| 383 | # terminal, though it may also launch a graphical window if the environment | ||
| 384 | # supports it. Defaults to $EDITOR, or vi. | ||
| 385 | #editor= | ||
| 386 | |||
| 387 | # Address book command | ||
| 388 | address-book-cmd = sh -c 'abook --mutt-query "%s" | tail -n +2' | ||
| 389 | |||
| 390 | # | ||
| 391 | # Default header fields to display when composing a message. To display | ||
| 392 | # multiple headers in the same row, separate them with a pipe, e.g. "To|From". | ||
| 393 | # | ||
| 394 | # Default: To|From,Subject | ||
| 395 | #header-layout=To|From,Subject | ||
| 396 | |||
| 397 | # | ||
| 398 | # Specifies the command to be used to tab-complete email addresses. Any | ||
| 399 | # occurrence of "%s" in the address-book-cmd will be replaced with what the | ||
| 400 | # user has typed so far. | ||
| 401 | # | ||
| 402 | # The command must output the completions to standard output, one completion | ||
| 403 | # per line. Each line must be tab-delimited, with an email address occurring as | ||
| 404 | # the first field. Only the email address field is required. The second field, | ||
| 405 | # if present, will be treated as the contact name. Additional fields are | ||
| 406 | # ignored. | ||
| 407 | # | ||
| 408 | # This parameter can also be set per account in accounts.conf. | ||
| 409 | #address-book-cmd= | ||
| 410 | |||
| 411 | # Specifies the command to be used to select attachments. Any occurence of '%s' | ||
| 412 | # in the file-picker-cmd will be replaced the argument <arg> to :attach -m | ||
| 413 | # <arg>. | ||
| 414 | # | ||
| 415 | # The command must output the selected files to standard output, one file per | ||
| 416 | # line. | ||
| 417 | file-picker-cmd=fzf --multi --query=%s | ||
| 418 | |||
| 419 | # | ||
| 420 | # Allow to address yourself when replying | ||
| 421 | # | ||
| 422 | # Default: true | ||
| 423 | #reply-to-self=true | ||
| 424 | |||
| 425 | # | ||
| 426 | # Warn before sending an email that matches the specified regexp but does not | ||
| 427 | # have any attachments. Leave empty to disable this feature. | ||
| 428 | # | ||
| 429 | # Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The | ||
| 430 | # "(?im)" flags are set by default (case-insensitive and multi-line). | ||
| 431 | # | ||
| 432 | # Example: | ||
| 433 | # no-attachment-warning=^[^>]*attach(ed|ment) | ||
| 434 | # | ||
| 435 | #no-attachment-warning= | ||
| 436 | |||
| 437 | # | ||
| 438 | # When set, aerc will generate "format=flowed" bodies with a content type of | ||
| 439 | # "text/plain; format=flowed" as described in RFC3676. This format is easier to | ||
| 440 | # handle for some mailing software, and generally just looks like ordinary | ||
| 441 | # text. To actually make use of this format's features, you'll need support in | ||
| 442 | # your editor. | ||
| 443 | # | ||
| 444 | format-flowed=true | ||
| 445 | |||
| 446 | [multipart-converters] | ||
| 447 | # | ||
| 448 | # Converters allow to generate multipart/alternative messages by converting the | ||
| 449 | # main text/plain part into any other MIME type. Only exact MIME types are | ||
| 450 | # accepted. The commands are invoked with sh -c and are expected to output | ||
| 451 | # valid UTF-8 text. | ||
| 452 | # | ||
| 453 | # Example (obviously, this requires that you write your main text/plain body | ||
| 454 | # using the markdown syntax): | ||
| 455 | text/html=pandoc --wrap=preserve -f gfm+hard_line_breaks -t html --standalone | ||
| 456 | |||
| 457 | [filters] | ||
| 458 | # | ||
| 459 | # Filters allow you to pipe an email body through a shell command to render | ||
| 460 | # certain emails differently, e.g. highlighting them with ANSI escape codes. | ||
| 461 | # | ||
| 462 | # The commands are invoked with sh -c. The following folders are appended to | ||
| 463 | # the system $PATH to allow referencing filters from their name only: | ||
| 464 | # | ||
| 465 | # ${XDG_CONFIG_HOME:-~/.config}/aerc/filters | ||
| 466 | # ${XDG_DATA_HOME:-~/.local/share}/aerc/filters | ||
| 467 | # $PREFIX/share/aerc/filters | ||
| 468 | # /usr/share/aerc/filters | ||
| 469 | # | ||
| 470 | # The following variables are defined in the filter command environment: | ||
| 471 | # | ||
| 472 | # AERC_MIME_TYPE the part MIME type/subtype | ||
| 473 | # AERC_FORMAT the part content type format= parameter | ||
| 474 | # AERC_FILENAME the attachment filename (if any) | ||
| 475 | # AERC_SUBJECT the message Subject header value | ||
| 476 | # AERC_FROM the message From header value | ||
| 477 | # | ||
| 478 | # The first filter which matches the email's mimetype will be used, so order | ||
| 479 | # them from most to least specific. | ||
| 480 | # | ||
| 481 | # You can also match on non-mimetypes, by prefixing with the header to match | ||
| 482 | # against (non-case-sensitive) and a comma, e.g. subject,text will match a | ||
| 483 | # subject which contains "text". Use header,~regex to match against a regex. | ||
| 484 | # | ||
| 485 | #text/plain=colorize | ||
| 486 | #text/calendar=calendar | ||
| 487 | message/delivery-status=bat -fn | ||
| 488 | message/rfc822=bat -fn | ||
| 489 | text/html=pandoc -f html -t plain | bat -fn | ||
| 490 | #text/html=html | colorize | ||
| 491 | text/*=bat -fn | ||
| 492 | application/x-sh=bat -fn -l sh | ||
| 493 | #image/*=catimg -w $(tput cols) - | ||
| 494 | #subject,~Git(hub|lab)=lolcat -f | ||
| 495 | #from,thatguywhodoesnothardwraphismessages=wrap -w 100 | colorize | ||
| 496 | |||
| 497 | # This special filter is only used to post-process email headers when | ||
| 498 | # [viewer].show-headers=true | ||
| 499 | # By default, headers are piped directly into the pager. | ||
| 500 | # | ||
| 501 | #.headers=bat -fp | ||
| 502 | |||
| 503 | [openers] | ||
| 504 | # | ||
| 505 | # Openers allow you to specify the command to use for the :open and :open-link | ||
| 506 | # actions on a per-MIME-type basis. The :open-link URL scheme is used to | ||
| 507 | # determine the MIME type as follows: x-scheme-handler/<scheme>. | ||
| 508 | # | ||
| 509 | # {} is expanded as the temporary filename to be opened. If it is not | ||
| 510 | # encountered in the command, the temporary filename will be appened to the end | ||
| 511 | # of the command. | ||
| 512 | # | ||
| 513 | # Like [filters], openers support basic shell globbing. The first opener which | ||
| 514 | # matches the part's MIME type (or URL scheme handler MIME type) will be used, | ||
| 515 | # so order them from most to least specific. | ||
| 516 | # | ||
| 517 | # Examples: | ||
| 518 | # x-scheme-handler/irc=hexchat | ||
| 519 | # x-scheme-handler/http*=firefox | ||
| 520 | # text/html=surf -dfgms | ||
| 521 | # text/plain=gvim {} +125 | ||
| 522 | # message/rfc822=thunderbird | ||
| 523 | |||
| 524 | [hooks] | ||
| 525 | # | ||
| 526 | # Hooks are triggered whenever the associated event occurs. | ||
| 527 | |||
| 528 | # | ||
| 529 | # Executed when a new email arrives in the selected folder | ||
| 530 | mail-received=notify-send "$AERC_FROM_NAME" "$AERC_SUBJECT" | ||
| 531 | |||
| 532 | # | ||
| 533 | # Executed when aerc starts | ||
| 534 | #aerc-startup=aerc :terminal calcurse && aerc :next-tab | ||
| 535 | |||
| 536 | # | ||
| 537 | # Executed when aerc shuts down. | ||
| 538 | #aerc-shutdown= | ||
| 539 | |||
| 540 | [templates] | ||
| 541 | # Templates are used to populate email bodies automatically. | ||
| 542 | # | ||
| 543 | |||
| 544 | # The directories where the templates are stored. It takes a colon-separated | ||
| 545 | # list of directories. If this is unset or if a template cannot be found, the | ||
| 546 | # following paths will be used as a fallback in that order: | ||
| 547 | # | ||
| 548 | # ${XDG_CONFIG_HOME:-~/.config}/aerc/templates | ||
| 549 | # ${XDG_DATA_HOME:-~/.local/share}/aerc/templates | ||
| 550 | # /usr/local/share/aerc/templates | ||
| 551 | # /usr/share/aerc/templates | ||
| 552 | # | ||
| 553 | #template-dirs= | ||
| 554 | |||
| 555 | # The default template to be used for new messages. | ||
| 556 | # | ||
| 557 | # default: new_message | ||
| 558 | #new-message=new_message | ||
| 559 | |||
| 560 | # The default template to be used for quoted replies. | ||
| 561 | # | ||
| 562 | # default: quoted_reply | ||
| 563 | #quoted-reply=quoted_reply | ||
| 564 | |||
| 565 | # The default template to be used for forward as body. | ||
| 566 | # | ||
| 567 | # default: forward_as_body | ||
| 568 | #forwards=forward_as_body | ||
| 569 | |||
diff --git a/users/ryan/aerc/binds.conf b/users/ryan/aerc/binds.conf new file mode 100644 index 0000000..3c1e2d2 --- /dev/null +++ b/users/ryan/aerc/binds.conf | |||
| @@ -0,0 +1,150 @@ | |||
| 1 | # Binds are of the form <key sequence> = <command to run> | ||
| 2 | # To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>" | ||
| 3 | # If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit | ||
| 4 | <C-p> = :prev-tab<Enter> | ||
| 5 | <C-n> = :next-tab<Enter> | ||
| 6 | <C-t> = :term<Enter> | ||
| 7 | ? = :help keys<Enter> | ||
| 8 | |||
| 9 | [messages] | ||
| 10 | q = :quit<Enter> | ||
| 11 | |||
| 12 | j = :next<Enter> | ||
| 13 | <Down> = :next<Enter> | ||
| 14 | <C-d> = :next 50%<Enter> | ||
| 15 | <C-f> = :next 100%<Enter> | ||
| 16 | <PgDn> = :next 100%<Enter> | ||
| 17 | |||
| 18 | k = :prev<Enter> | ||
| 19 | <Up> = :prev<Enter> | ||
| 20 | <C-u> = :prev 50%<Enter> | ||
| 21 | <C-b> = :prev 100%<Enter> | ||
| 22 | <PgUp> = :prev 100%<Enter> | ||
| 23 | g = :select 0<Enter> | ||
| 24 | G = :select -1<Enter> | ||
| 25 | <C-r> = :read<Enter> | ||
| 26 | <C-u> = :unread<Enter> | ||
| 27 | |||
| 28 | J = :next-folder<Enter> | ||
| 29 | K = :prev-folder<Enter> | ||
| 30 | H = :collapse-folder<Enter> | ||
| 31 | L = :expand-folder<Enter> | ||
| 32 | |||
| 33 | v = :mark -t<Enter> | ||
| 34 | V = :mark -v<Enter> | ||
| 35 | |||
| 36 | T = :toggle-threads<Enter> | ||
| 37 | |||
| 38 | <Enter> = :view<Enter> | ||
| 39 | dd = :mv Trash<Enter> | ||
| 40 | dg = :mv [Gmail]/Trash<Enter> | ||
| 41 | D = :delete<Enter> | ||
| 42 | A = :archive year<Enter> | ||
| 43 | |||
| 44 | C = :compose<Enter> | ||
| 45 | |||
| 46 | rr = :reply -a<Enter> | ||
| 47 | rq = :reply -aq<Enter> | ||
| 48 | Rr = :reply<Enter> | ||
| 49 | Rq = :reply -q<Enter> | ||
| 50 | f = :forward -A<Enter> | ||
| 51 | |||
| 52 | # Git custom stuff ala Drew Devault | ||
| 53 | ga = :pipe -mb git am -3<Enter> | ||
| 54 | gp = :term git push<Enter> | ||
| 55 | rt = :reply -aTthanks<Enter> | ||
| 56 | |||
| 57 | c = :cf<space> | ||
| 58 | $ = :term<space> | ||
| 59 | ! = :term<space> | ||
| 60 | | = :pipe<space> | ||
| 61 | |||
| 62 | / = :search<space> | ||
| 63 | \ = :filter<space> | ||
| 64 | n = :next-result<Enter> | ||
| 65 | N = :prev-result<Enter> | ||
| 66 | <Esc> = :clear<Enter> | ||
| 67 | |||
| 68 | [messages:folder=Drafts] | ||
| 69 | <Enter> = :recall<Enter> | ||
| 70 | |||
| 71 | [view] | ||
| 72 | / = :toggle-key-passthrough<Enter>/ | ||
| 73 | q = :close<Enter> | ||
| 74 | O = :open<Enter> | ||
| 75 | S = :save<space> | ||
| 76 | | = :pipe<space> | ||
| 77 | D = :delete<Enter> | ||
| 78 | dd = :mv Trash<Enter> | ||
| 79 | dg = :mv [Gmail]/Trash<Enter> | ||
| 80 | A = :archive year<Enter> | ||
| 81 | |||
| 82 | <C-l> = :open-link <space> | ||
| 83 | |||
| 84 | f = :forward -A<Enter> | ||
| 85 | rr = :reply -a<Enter> | ||
| 86 | rq = :reply -aq<Enter> | ||
| 87 | Rr = :reply<Enter> | ||
| 88 | Rq = :reply -q<Enter> | ||
| 89 | |||
| 90 | H = :toggle-headers<Enter> | ||
| 91 | <C-k> = :prev-part<Enter> | ||
| 92 | <C-j> = :next-part<Enter> | ||
| 93 | J = :next<Enter> | ||
| 94 | K = :prev<Enter> | ||
| 95 | |||
| 96 | [view::passthrough] | ||
| 97 | $noinherit = true | ||
| 98 | $ex = <C-x> | ||
| 99 | <Esc> = :toggle-key-passthrough<Enter> | ||
| 100 | |||
| 101 | [compose] | ||
| 102 | # Keybindings used when the embedded terminal is not selected in the compose | ||
| 103 | # view | ||
| 104 | $noinherit = true | ||
| 105 | $ex = <C-x> | ||
| 106 | <C-k> = :prev-field<Enter> | ||
| 107 | <C-j> = :next-field<Enter> | ||
| 108 | <A-p> = :switch-account -p<Enter> | ||
| 109 | <A-n> = :switch-account -n<Enter> | ||
| 110 | <tab> = :next-field<Enter> | ||
| 111 | <backtab> = :prev-field<Enter> | ||
| 112 | <C-p> = :prev-tab<Enter> | ||
| 113 | <C-n> = :next-tab<Enter> | ||
| 114 | <C-c> = :cc<Enter> | ||
| 115 | <C-b> = :bcc<Enter> | ||
| 116 | <C-q> = :abort<Enter> | ||
| 117 | |||
| 118 | [compose::editor] | ||
| 119 | # Keybindings used when the embedded terminal is selected in the compose view | ||
| 120 | $noinherit = true | ||
| 121 | $ex = <C-x> | ||
| 122 | <C-k> = :prev-field<Enter> | ||
| 123 | <C-j> = :next-field<Enter> | ||
| 124 | <C-p> = :prev-tab<Enter> | ||
| 125 | <C-n> = :next-tab<Enter> | ||
| 126 | <C-q> = :abort<Enter> | ||
| 127 | |||
| 128 | [compose::review] | ||
| 129 | # Keybindings used when reviewing a message to be sent | ||
| 130 | y = :send<Enter> | ||
| 131 | n = :abort<Enter> | ||
| 132 | v = :preview<Enter> | ||
| 133 | p = :postpone<Enter> | ||
| 134 | q = :choose -o d discard abort -o p postpone postpone<Enter> | ||
| 135 | e = :edit<Enter> | ||
| 136 | a = :attach<space> | ||
| 137 | d = :detach<space> | ||
| 138 | S = :sign<Enter> | ||
| 139 | E = :encrypt<Enter> | ||
| 140 | A = :attach-key<Enter> | ||
| 141 | C = :multipart text/html<Enter> | ||
| 142 | |||
| 143 | [terminal] | ||
| 144 | $noinherit = true | ||
| 145 | $ex = <C-x> | ||
| 146 | <C-q> = :close<Enter> | ||
| 147 | |||
| 148 | <C-p> = :prev-tab<Enter> | ||
| 149 | <C-n> = :next-tab<Enter> | ||
| 150 | |||
diff --git a/users/ryan/aerc/signature_personal b/users/ryan/aerc/signature_personal new file mode 100644 index 0000000..d287d98 --- /dev/null +++ b/users/ryan/aerc/signature_personal | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | -- | ||
| 2 | Best, | ||
| 3 | Ryan Schanzenbacher | ||
| 4 | |||
diff --git a/users/ryan/aerc/signature_rit_personal b/users/ryan/aerc/signature_rit_personal new file mode 100644 index 0000000..e5e0b0a --- /dev/null +++ b/users/ryan/aerc/signature_rit_personal | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | -- | ||
| 2 | Best, | ||
| 3 | Ryan Schanzenbacher | ||
| 4 | Rochester Institute of Technology | ||
| 5 | Cybersecurity BS/MS Student | ||
| 6 | |||
diff --git a/users/ryan/aerc/templates/quoted_reply b/users/ryan/aerc/templates/quoted_reply new file mode 100644 index 0000000..28f9ee8 --- /dev/null +++ b/users/ryan/aerc/templates/quoted_reply | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | X-Mailer: aerc {{version}} | ||
| 2 | |||
| 3 | {{.Signature}} | ||
| 4 | |||
| 5 | On {{dateFormat (.OriginalDate | toLocal) "Mon Jan 2, 2006 at 3:04 PM MST"}}, {{(index .OriginalFrom 0).Name}} wrote: | ||
| 6 | {{trimSignature .OriginalText | quote}} | ||
| 7 | |||
diff --git a/users/ryan/home.nix b/users/ryan/home.nix new file mode 100644 index 0000000..9154066 --- /dev/null +++ b/users/ryan/home.nix | |||
| @@ -0,0 +1,126 @@ | |||
| 1 | { config, pkgs, ... }: | ||
| 2 | |||
| 3 | { | ||
| 4 | # This value determines the Home Manager release that your configuration is | ||
| 5 | # compatible with. This helps avoid breakage when a new Home Manager release | ||
| 6 | # introduces backwards incompatible changes. | ||
| 7 | # | ||
| 8 | # You should not change this value, even if you update Home Manager. If you do | ||
| 9 | # want to update the value, then make sure to first check the Home Manager | ||
| 10 | # release notes. | ||
| 11 | home.stateVersion = "26.05"; # Please read the comment before changing. | ||
| 12 | |||
| 13 | news.display = "silent"; | ||
| 14 | |||
| 15 | programs.starship = { | ||
| 16 | enable = true; | ||
| 17 | settings = { | ||
| 18 | add_newline = false; | ||
| 19 | character = { | ||
| 20 | success_symbol = "[➜](bold green)"; | ||
| 21 | error_symbol = "[➜](bold red)"; | ||
| 22 | }; | ||
| 23 | time = { | ||
| 24 | disabled = false; | ||
| 25 | format = "\[ $time \]($style)"; | ||
| 26 | time_format = "%T"; | ||
| 27 | }; | ||
| 28 | }; | ||
| 29 | }; | ||
| 30 | |||
| 31 | programs.zen-browser = { | ||
| 32 | enable = true; | ||
| 33 | package = null; # managed via homebrew | ||
| 34 | darwinDefaultsId = "app.zen-browser.zen"; | ||
| 35 | policies = import ./zen/zenPolicies.nix; | ||
| 36 | profiles.default = import ./zen/zenProfile.nix; | ||
| 37 | }; | ||
| 38 | |||
| 39 | programs.eza = { | ||
| 40 | enable = true; | ||
| 41 | enableZshIntegration = true; | ||
| 42 | }; | ||
| 43 | |||
| 44 | programs.gpg.enable = true; | ||
| 45 | |||
| 46 | programs.git = { | ||
| 47 | enable = true; | ||
| 48 | signing.signByDefault = true; | ||
| 49 | settings = { | ||
| 50 | user = { | ||
| 51 | name = "Ryan Schanzenbacher"; | ||
| 52 | email = "ryan@rschanz.org"; | ||
| 53 | }; | ||
| 54 | core.pager = "${pkgs.delta}/bin/delta"; | ||
| 55 | init.defaultBranch = "main"; | ||
| 56 | merge.conflictStyle = "zdiff3"; | ||
| 57 | interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only"; | ||
| 58 | delta = { | ||
| 59 | navigate = true; | ||
| 60 | side-by-side = true; | ||
| 61 | }; | ||
| 62 | }; | ||
| 63 | }; | ||
| 64 | |||
| 65 | services.gpg-agent = { | ||
| 66 | enable = true; | ||
| 67 | enableSshSupport = true; | ||
| 68 | }; | ||
| 69 | |||
| 70 | programs.zsh = { | ||
| 71 | enable = true; | ||
| 72 | initContent = '' | ||
| 73 | export GPG_TTY="$(tty)" | ||
| 74 | export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" | ||
| 75 | gpgconf --launch gpg-agent | ||
| 76 | gpg-connect-agent updatestartuptty /bye > /dev/null | ||
| 77 | ''; | ||
| 78 | shellAliases = { | ||
| 79 | cat = "bat --paging=never"; | ||
| 80 | diff = "delta"; | ||
| 81 | }; | ||
| 82 | }; | ||
| 83 | |||
| 84 | # The home.packages option allows you to install Nix packages into your | ||
| 85 | # environment. | ||
| 86 | home.packages = with pkgs; [ | ||
| 87 | neovim | ||
| 88 | git | ||
| 89 | yt-dlp | ||
| 90 | aerc | ||
| 91 | gdu | ||
| 92 | mpv | ||
| 93 | taskwarrior3 | ||
| 94 | delta | ||
| 95 | bat | ||
| 96 | pass | ||
| 97 | pandoc | ||
| 98 | ]; | ||
| 99 | |||
| 100 | # Home Manager is pretty good at managing dotfiles. The primary way to manage | ||
| 101 | # plain files is through 'home.file'. | ||
| 102 | home.file = { | ||
| 103 | # # Building this configuration will create a copy of 'dotfiles/screenrc' in | ||
| 104 | # # the Nix store. Activating the configuration will then make '~/.screenrc' a | ||
| 105 | # # symlink to the Nix store copy. | ||
| 106 | # ".screenrc".source = dotfiles/screenrc; | ||
| 107 | |||
| 108 | # # You can also set the file content immediately. | ||
| 109 | # ".gradle/gradle.properties".text = '' | ||
| 110 | # org.gradle.console=verbose | ||
| 111 | # org.gradle.daemon.idletimeout=3600000 | ||
| 112 | # ''; | ||
| 113 | }; | ||
| 114 | |||
| 115 | xdg.configFile."aerc" = { | ||
| 116 | source = ./aerc; | ||
| 117 | recursive = true; | ||
| 118 | }; | ||
| 119 | |||
| 120 | home.sessionVariables = { | ||
| 121 | XDG_CONFIG_HOME = "${config.home.homeDirectory}/.config"; | ||
| 122 | }; | ||
| 123 | |||
| 124 | # Let Home Manager install and manage itself. | ||
| 125 | programs.home-manager.enable = true; | ||
| 126 | } | ||
diff --git a/users/ryan/zen/zenPolicies.nix b/users/ryan/zen/zenPolicies.nix new file mode 100644 index 0000000..edde27d --- /dev/null +++ b/users/ryan/zen/zenPolicies.nix | |||
| @@ -0,0 +1,125 @@ | |||
| 1 | let | ||
| 2 | lock-false = { | ||
| 3 | Value = false; | ||
| 4 | Status = "locked"; | ||
| 5 | }; | ||
| 6 | lock-true = { | ||
| 7 | Value = true; | ||
| 8 | Status = "locked"; | ||
| 9 | }; | ||
| 10 | in | ||
| 11 | { | ||
| 12 | EnableTrackingProtection = { | ||
| 13 | Value = true; | ||
| 14 | Locked = true; | ||
| 15 | Cryptomining = true; | ||
| 16 | Fingerprinting = true; | ||
| 17 | EmailTracking = true; | ||
| 18 | }; | ||
| 19 | UserMessaging = { | ||
| 20 | WhatsNew = false; | ||
| 21 | ExtensionRecommendations = false; | ||
| 22 | FeatureRecommendations = false; | ||
| 23 | UrlbarInterventions = false; | ||
| 24 | SkipOnboarding = true; | ||
| 25 | MoreFromMozilla = false; | ||
| 26 | Labs = false; | ||
| 27 | Locked = true; | ||
| 28 | }; | ||
| 29 | DisableAppUpdate = true; | ||
| 30 | DisableAccounts = true; | ||
| 31 | DisableFirefoxAccounts = true; | ||
| 32 | DisableFirefoxStudies = true; | ||
| 33 | DisablePocket = true; | ||
| 34 | DisableTelemetry = true; | ||
| 35 | AutofillAddressEnabled = false; | ||
| 36 | AutofillCreditCardEnabled = false; | ||
| 37 | DisableMasterPasswordCreation = true; | ||
| 38 | PasswordManagerEnabled = false; | ||
| 39 | PrimaryPassword = false; | ||
| 40 | OfferToSaveLogins = false; | ||
| 41 | NoDefaultBookmarks = true; | ||
| 42 | OverrideFirstRunPage = ""; | ||
| 43 | OverridePostUpdatePage = ""; | ||
| 44 | FirefoxHome = { | ||
| 45 | Search = true; | ||
| 46 | TopSites = true; | ||
| 47 | SponsoredTopSites = false; | ||
| 48 | Highlights = false; | ||
| 49 | Pocket = false; | ||
| 50 | SponsoredPocket = false; | ||
| 51 | Snippets = false; | ||
| 52 | Locked = true; | ||
| 53 | }; | ||
| 54 | SearchSuggestEnabled = true; | ||
| 55 | FirefoxSuggest = { | ||
| 56 | WebSuggestions = true; | ||
| 57 | SponsoredSuggestions = false; | ||
| 58 | ImproveSuggest = false; | ||
| 59 | Locked = true; | ||
| 60 | }; | ||
| 61 | PictureInPicture = lock-true; | ||
| 62 | HardwareAcceleration = true; | ||
| 63 | Certificates = { | ||
| 64 | ImportEnterpriseRoots = true; | ||
| 65 | }; | ||
| 66 | ExtensionSettings = { | ||
| 67 | #"*".installation_mode = "blocked"; | ||
| 68 | # uBlock Origin | ||
| 69 | "uBlock0@raymondhill.net" = { | ||
| 70 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; | ||
| 71 | installation_mode = "force_installed"; | ||
| 72 | }; | ||
| 73 | # Bitwarden | ||
| 74 | "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { | ||
| 75 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; | ||
| 76 | installation_mode = "normal_installed"; | ||
| 77 | }; | ||
| 78 | # SponsorBlock | ||
| 79 | "sponsorBlocker@ajay.app" = { | ||
| 80 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi"; | ||
| 81 | installation_mode = "force_installed"; | ||
| 82 | }; | ||
| 83 | # DeArrow | ||
| 84 | "deArrow@ajay.app" = { | ||
| 85 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi"; | ||
| 86 | installation_mode = "force_installed"; | ||
| 87 | }; | ||
| 88 | # Return Youtube Dislike | ||
| 89 | "{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = { | ||
| 90 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi"; | ||
| 91 | installation_mode = "force_installed"; | ||
| 92 | }; | ||
| 93 | # Youtube Nonstop | ||
| 94 | "{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" = { | ||
| 95 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-nonstop/latest.xpi"; | ||
| 96 | installation_mode = "force_installed"; | ||
| 97 | }; | ||
| 98 | # TamperMonkey | ||
| 99 | "firefox@tampermonkey.net" = { | ||
| 100 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi"; | ||
| 101 | installation_mode = "force_installed"; | ||
| 102 | }; | ||
| 103 | # Floccus | ||
| 104 | "floccus@handmadeideas.org" = { | ||
| 105 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/floccus/latest.xpi"; | ||
| 106 | installation_mode = "force_installed"; | ||
| 107 | }; | ||
| 108 | # Mailvelope | ||
| 109 | "jid1-AQqSMBYb0a8ADg@jetpack" = { | ||
| 110 | install_url = "https://addons.mozilla.org/firefox/downloads/latest/mailvelope/latest.xpi"; | ||
| 111 | installation_mode = "force_installed"; | ||
| 112 | }; | ||
| 113 | }; | ||
| 114 | Preferences = { | ||
| 115 | "xpinstall.whitelist.required" = lock-true; | ||
| 116 | "dom.webgpu.enabled" = lock-true; | ||
| 117 | "media.eme.enabled" = lock-true; | ||
| 118 | "general.autoScroll" = lock-true; | ||
| 119 | "general.smoothScroll" = lock-true; | ||
| 120 | "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false; | ||
| 121 | "browser.aboutConfig.showWarning" = lock-false; | ||
| 122 | "media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled" = lock-true; | ||
| 123 | }; | ||
| 124 | } | ||
| 125 | |||
diff --git a/users/ryan/zen/zenProfile.nix b/users/ryan/zen/zenProfile.nix new file mode 100644 index 0000000..d77a906 --- /dev/null +++ b/users/ryan/zen/zenProfile.nix | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | rec { | ||
| 2 | settings = { | ||
| 3 | "zen.welcome-screen.seen" = true; | ||
| 4 | "zen.urlbar.behavior" = "float"; | ||
| 5 | "zen.view.compact.enable-at-startup"= true; | ||
| 6 | "zen.view.use-single-toolbar"= false; | ||
| 7 | "zen.view.window.scheme"= 0; | ||
| 8 | }; | ||
| 9 | |||
| 10 | pinsForce = true; | ||
| 11 | pins = { | ||
| 12 | "Discord" = { | ||
| 13 | id = "59d28a80-d185-4dec-92cb-6da549cdfd27"; | ||
| 14 | workspace = spaces."Personal".id; | ||
| 15 | url = "https://discord.com/channels/@me"; | ||
| 16 | position = 101; | ||
| 17 | isEssential = true; | ||
| 18 | }; | ||
| 19 | "RSS" = { | ||
| 20 | id = "0fa25825-01f2-49ce-b8a2-80f1100e782c"; | ||
| 21 | workspace = spaces."Personal".id; | ||
| 22 | url = "https://rss.ryan77627.xyz"; | ||
| 23 | position = 102; | ||
| 24 | isEssential = true; | ||
| 25 | }; | ||
| 26 | }; | ||
| 27 | |||
| 28 | spacesForce = true; | ||
| 29 | spaces = { | ||
| 30 | "Personal" = { | ||
| 31 | id = "2392f396-2548-4a20-9fb8-a3e940be4a58"; | ||
| 32 | #icon = ""; | ||
| 33 | position = 1000; | ||
| 34 | theme = { | ||
| 35 | type = "gradient"; | ||
| 36 | colors = [ | ||
| 37 | { | ||
| 38 | red = 199; | ||
| 39 | green = 161; | ||
| 40 | blue = 247; | ||
| 41 | algorithm = "complementary"; | ||
| 42 | type = "explicit-lightness"; | ||
| 43 | lightness = 80; | ||
| 44 | #isPrimary = true; | ||
| 45 | } | ||
| 46 | # { | ||
| 47 | # red = 157; | ||
| 48 | # green = 251; | ||
| 49 | # blue = 194; | ||
| 50 | # algorithm = "splitComplimentary"; | ||
| 51 | # type = "explicit-lightness"; | ||
| 52 | # lightness = 80; | ||
| 53 | # isPrimary = false; | ||
| 54 | # } | ||
| 55 | # { | ||
| 56 | # red = 161; | ||
| 57 | # green = 243; | ||
| 58 | # blue = 247; | ||
| 59 | # algorithm = "splitComplimentary"; | ||
| 60 | # type = "explicit-lightness"; | ||
| 61 | # lightness = 80; | ||
| 62 | # isPrimary = false; | ||
| 63 | # } | ||
| 64 | ]; | ||
| 65 | opacity = 0.419; | ||
| 66 | texture = 0.3125; | ||
| 67 | }; | ||
| 68 | }; | ||
| 69 | }; | ||
| 70 | } | ||
| 71 | |||
