This commit is contained in:
Brian Zalewski 2024-05-20 06:06:00 +00:00
parent 68b0674161
commit bdd4f3ea4f
15 changed files with 753 additions and 755 deletions

View file

@ -566,20 +566,23 @@ removeLinuxBloatware() {
# #
# * [Changing Linux hostname permanently](https://www.tecmint.com/set-hostname-permanently-in-linux/) # * [Changing Linux hostname permanently](https://www.tecmint.com/set-hostname-permanently-in-linux/)
setHostname() { setHostname() {
HOSTNAME="{{ (.host.hostname | replace .host.domain "" | replace "." "" | replace " " "") | lower }}.{{ .host.domain | lower }}"
LOCAL_HOSTNAME="{{ (.host.hostname | replace .host.domain "" | replace "." "" | replace " " "") | lower }}"
COMPUTER_NAME="{{ .host.hostname }}"
if [ -d /Applications ] && [ -d /System ]; then if [ -d /Applications ] && [ -d /System ]; then
# Source: https://apple.stackexchange.com/questions/287760/set-the-hostname-computer-name-for-macos # Source: https://apple.stackexchange.com/questions/287760/set-the-hostname-computer-name-for-macos
logg info 'Setting macOS hostname / local hostname / computer name' logg info 'Setting macOS hostname / local hostname / computer name'
logg info 'Changing HostName to {{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}.{{ .host.domain }}' && sudo scutil --set HostName '{{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}.{{ .host.domain }}' && logg info 'Changed HostName to {{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}.{{ .host.domain }}' logg info "Changing HostName to $HOSTNAME" && sudo scutil --set HostName "$HOSTNAME" && logg info "Changed HostName to $HOSTNAME"
logg info 'Changing LocalHostName to {{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}' && sudo scutil --set LocalHostName '{{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}' && logg info 'Changed LocalHostName to {{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}' logg info "Changing LocalHostName to $LOCAL_HOSTNAME" && sudo scutil --set LocalHostName "$LOCAL_HOSTNAME" && logg info "Changed LocalHostName to $LOCAL_HOSTNAME"
logg info 'Changing ComputerName to {{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}' && sudo scutil --set ComputerName '{{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}' && logg info 'Changed ComputerName to {{ .host.hostname | replace .host.domain "" | replace "." "" | replace " " "" }}' logg info "Changing ComputerName to $COMPUTER_NAME" && sudo scutil --set ComputerName "$COMPUTER_NAME" && logg info "Changed ComputerName to $COMPUTER_NAME"
logg info 'Flushing DNS cache' logg info 'Flushing DNS cache'
dscacheutil -flushcache sudo dscacheutil -flushcache
elif [ -f /etc/passwd ]; then elif [ -f /etc/passwd ]; then
logg info 'Setting Linux hostname' logg info 'Setting Linux hostname'
hostname '{{ .host.hostname | replace .host.domain "" | replace "." "" }}.{{ .host.domain }}' && logg success 'Changed hostname to {{ .host.hostname | replace .host.domain "" | replace "." "" }}.{{ .host.domain }}' sudo hostname "$HOSTNAME" && logg success "Changed hostname to $HOSTNAME"
if command -v hostnamectl > /dev/null; then if command -v hostnamectl > /dev/null; then
logg info 'Ensuring hostname persists after reboot' logg info 'Ensuring hostname persists after reboot'
sudo hostnamectl set-hostname '{{ .host.hostname | replace .host.domain "" | replace "." "" }}.{{ .host.domain }}' && logg success 'Permanently changed hostname to {{ .host.hostname | replace .host.domain "" | replace "." "" }}.{{ .host.domain }}' sudo hostnamectl set-hostname "$HOSTNAME" && logg success "Permanently changed hostname to $HOSTNAME"
else else
logg warn 'hostnamectl was not available in the PATH - this operating system type might be unsupported' logg warn 'hostnamectl was not available in the PATH - this operating system type might be unsupported'
fi fi

View file

@ -1,7 +1,7 @@
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHckxIemV1bUNhbkxKK2Zl YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxYkp4NVViUWpDSnU0eThG
bXQxRENjVEYyR3lIcS93Q1RIV3dQOXJlL1dBCmxkVG13UHF4cS9uaU1QcHl3MjB0 dEsrN3UwejdDdWlhZldqY1FZVFp6QWc0endNCnpnNEgvN1c5d0lLLzVLQUFMZ0cy
U2hLUDZMeGQ3cS9NZnBHQWZVZGJ3aFUKLS0tIDBGejhsclZlUUtxSmNNclAyeTIz Rm1jTzhyUk12bXh5YitTUE9aeDcxck0KLS0tIHlTSEx2d0lBWFNsL2tQRTl4blRZ
dHNiR0l4NlE4VHRkQTMzcS9RditXcUUKGuxENmh8UAAaz9W43p8kxJ8alJbTPXLG ekh3WHRPYkxFc3M5SlVmbXRMVkNWK1UKeKcGmdla61exaF6BhtCiOPrlE1fr/YBK
3fQGzdbva6hvfAAFbpZA9tdYlQ== R4tvZ375kO5ibqL2tgh8UOj1WA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----

View file

@ -9,17 +9,19 @@
<key>HasMigratedDefaults</key> <key>HasMigratedDefaults</key>
<true/> <true/>
<key>NSColorPanelMode</key> <key>NSColorPanelMode</key>
<string>1</string> <string>0</string>
<key>NSColorPickerPreferredRGBEntryMode</key> <key>NSColorPickerPreferredRGBEntryMode</key>
<integer>2</integer> <integer>2</integer>
<key>NSColorPickerSlidersDefaults</key> <key>NSColorPickerSlidersDefaults</key>
<string>1</string> <string>0</string>
<key>NSFontPanelAttributes</key> <key>NSFontPanelAttributes</key>
<string>1, 0</string> <string>1, 0</string>
<key>NSNavLastRootDirectory</key> <key>NSNavLastRootDirectory</key>
<string>/Users</string> <string>~/Downloads</string>
<key>NSNavPanelExpandedSizeForOpenMode</key>
<string>{800, 448}</string>
<key>NSNavPanelExpandedSizeForSaveMode</key> <key>NSNavPanelExpandedSizeForSaveMode</key>
<string>{712, 448}</string> <string>{745, 448}</string>
<key>NSSplitView Subview Frames NSColorPanelSplitView</key> <key>NSSplitView Subview Frames NSColorPanelSplitView</key>
<array> <array>
<string>0.000000, 0.000000, 257.000000, 271.000000, NO, NO</string> <string>0.000000, 0.000000, 257.000000, 271.000000, NO, NO</string>
@ -31,19 +33,19 @@
<integer>1</integer> <integer>1</integer>
</dict> </dict>
<key>NSWindow Frame NSColorPanel</key> <key>NSWindow Frame NSColorPanel</key>
<string>1295 353 257 291 0 0 1680 1025 </string> <string>4625 194 257 291 1728 -323 3440 1415 </string>
<key>NSWindow Frame NSFontPanel</key> <key>NSWindow Frame NSFontPanel</key>
<string>573 187 445 79 0 0 1680 1025 </string> <string>3118 -216 445 95 1728 -323 3440 1415 </string>
<key>NSWindow Frame NSNavPanelAutosaveName</key> <key>NSWindow Frame NSNavPanelAutosaveName</key>
<string>-14 33 328 167 0 0 1680 1025 </string> <string>3111 235 745 448 1728 -323 3440 1415 </string>
<key>NSWindow Frame TTAppPreferences</key> <key>NSWindow Frame TTAppPreferences</key>
<string>663 257 667 554 0 0 1680 1025 </string> <string>3150 209 667 554 1728 -323 3440 1415 </string>
<key>NSWindow Frame TTWindow</key> <key>NSWindow Frame TTWindow</key>
<string>580 240 710 455 0 0 1680 1025 </string> <string>3475 262 793 555 1728 -323 3440 1415 </string>
<key>NSWindow Frame TTWindow Basic</key> <key>NSWindow Frame TTWindow Basic</key>
<string>552 468 585 371 0 0 1680 1025 </string> <string>552 468 585 371 0 0 1680 1025 </string>
<key>NSWindow Frame TTWindow Betelgeuse</key> <key>NSWindow Frame TTWindow Betelgeuse</key>
<string>267 404 893 525 0 0 1680 1025 </string> <string>3017 14 893 635 1728 -323 3440 1415 </string>
<key>NSWindow Frame TTWindow Cipherpunk</key> <key>NSWindow Frame TTWindow Cipherpunk</key>
<string>51 119 570 365 0 0 1280 777 </string> <string>51 119 570 365 0 0 1280 777 </string>
<key>NSWindow Frame TTWindow Homebrew</key> <key>NSWindow Frame TTWindow Homebrew</key>
@ -80,189 +82,184 @@
<dict> <dict>
<key>ANSIBlackColor</key> <key>ANSIBlackColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjA4NjI3NDUwOTggMC4w b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
OTgwMzkyMTU3IDAuMTQ1MDk4MDM5MgAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC4wODYyNzQ1MDk4IDAuMDk4MDM5MjE1NyAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjE0NTA5ODAzOTIAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBlueColor</key> <key>ANSIBlueColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjQ4NjI3NDUwOTggMC43 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
MTc2NDcwNTg4IDEuMDAwMDAwMDAwMAAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAcMC40ODYyNzQ1MDk4IDAuNzE3NjQ3MDU4OCAx
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL ABABgALSFBUWF1okY2xhc3NuYW1lWCRjbGFzc2VzV05TQ29sb3Ki
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV FhhYTlNPYmplY3QIERokKTI3SUxRU1ddZGp3fp2foaaxusLFAAAA
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA AAAAAQEAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAM4=
2Q==
</data> </data>
<key>ANSIBrightBlackColor</key> <key>ANSIBrightBlackColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjE4NDMxMzcyNTUgMC4x b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
OTYwNzg0MzE0IDAuMjQzMTM3MjU0OQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC4xODQzMTM3MjU1IDAuMTk2MDc4NDMxNCAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjI0MzEzNzI1NDkAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBrightBlueColor</key> <key>ANSIBrightBlueColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjU1Njg2Mjc0NTEgMC43 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
MzMzMzMzMzMzIDAuOTU2ODYyNzQ1MQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC41NTY4NjI3NDUxIDAuNzMzMzMzMzMzMyAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL Ljk1Njg2Mjc0NTEAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBrightCyanColor</key> <key>ANSIBrightCyanColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjE5MjE1Njg2MjcgMC43 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
NjQ3MDU4ODI0IDAuODc0NTA5ODAzOQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC4xOTIxNTY4NjI3IDAuNzY0NzA1ODgyNCAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL Ljg3NDUwOTgwMzkAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBrightGreenColor</key> <key>ANSIBrightGreenColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjUyNTQ5MDE5NjEgMC45 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
MjE1Njg2Mjc1IDAuNjc0NTA5ODAzOQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC41MjU0OTAxOTYxIDAuOTIxNTY4NjI3NSAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjY3NDUwOTgwMzkAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBrightMagentaColor</key> <key>ANSIBrightMagentaColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjc3NjQ3MDU4ODIgMC40 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
MjM1Mjk0MTE4IDAuNjA3ODQzMTM3MwAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC43NzY0NzA1ODgyIDAuNDIzNTI5NDExOCAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjYwNzg0MzEzNzMAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBrightRedColor</key> <key>ANSIBrightRedColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjg5MDE5NjA3ODQgMC4z b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
MDU4ODIzNTI5IDAuNDM1Mjk0MTE3NgAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC44OTAxOTYwNzg0IDAuMzA1ODgyMzUyOSAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjQzNTI5NDExNzYAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBrightWhiteColor</key> <key>ANSIBrightWhiteColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjc2NDcwNTg4MjQgMC43 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
ODAzOTIxNTY5IDAuODE5NjA3ODQzMQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC43NjQ3MDU4ODI0IDAuNzgwMzkyMTU2OSAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjgxOTYwNzg0MzEAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIBrightYellowColor</key> <key>ANSIBrightYellowColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjkyNTQ5MDE5NjEgMC44 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
NDMxMzcyNTQ5IDAuNDc0NTA5ODAzOQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC45MjU0OTAxOTYxIDAuODQzMTM3MjU0OSAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjQ3NDUwOTgwMzkAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSICyanColor</key> <key>ANSICyanColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjAwMDAwMDAwMDAgMC43 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
NTY4NjI3NDUxIDAuODk0MTE3NjQ3MQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAcMCAwLjc1Njg2Mjc0NTEgMC44OTQxMTc2NDcx
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL ABABgALSFBUWF1okY2xhc3NuYW1lWCRjbGFzc2VzV05TQ29sb3Ki
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV FhhYTlNPYmplY3QIERokKTI3SUxRU1ddZGp3fp2foaaxusLFAAAA
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA AAAAAQEAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAM4=
2Q==
</data> </data>
<key>ANSIGreenColor</key> <key>ANSIGreenColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjQ0MzEzNzI1NDkgMC45 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
Njg2Mjc0NTEwIDAuNjIzNTI5NDExOAAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAmMC40NDMxMzcyNTQ5IDAuOTY4NjI3NDUxIDAu
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL NjIzNTI5NDExOAAQAYAC0hQVFhdaJGNsYXNzbmFtZVgkY2xhc3Nl
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV c1dOU0NvbG9yohYYWE5TT2JqZWN0CBEaJCkyN0lMUVNXXWRqd36n
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qauwu8TMzwAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAADY
2Q==
</data> </data>
<key>ANSIMagentaColor</key> <key>ANSIMagentaColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjc4MDM5MjE1NjkgMC4z b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
MDE5NjA3ODQzIDAuNTM3MjU0OTAyMAAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAmMC43ODAzOTIxNTY5IDAuMzAxOTYwNzg0MyAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjUzNzI1NDkwMgAQAYAC0hQVFhdaJGNsYXNzbmFtZVgkY2xhc3Nl
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV c1dOU0NvbG9yohYYWE5TT2JqZWN0CBEaJCkyN0lMUVNXXWRqd36n
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qauwu8TMzwAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAADY
2Q==
</data> </data>
<key>ANSIRedColor</key> <key>ANSIRedColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjkyOTQxMTc2NDcgMC4x b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
NDUwOTgwMzkyIDAuMzA1ODgyMzUyOQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC45Mjk0MTE3NjQ3IDAuMTQ1MDk4MDM5MiAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjMwNTg4MjM1MjkAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIWhiteColor</key> <key>ANSIWhiteColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjY2NjY2NjY2NjcgMC42 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
ODIzNTI5NDEyIDAuNzIxNTY4NjI3NQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC42NjY2NjY2NjY3IDAuNjgyMzUyOTQxMiAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjcyMTU2ODYyNzUAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>ANSIYellowColor</key> <key>ANSIYellowColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjk3NjQ3MDU4ODIgMC44 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
NjI3NDUwOTgwIDAuMzYwNzg0MzEzNwAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAmMC45NzY0NzA1ODgyIDAuODYyNzQ1MDk4IDAu
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL MzYwNzg0MzEzNwAQAYAC0hQVFhdaJGNsYXNzbmFtZVgkY2xhc3Nl
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV c1dOU0NvbG9yohYYWE5TT2JqZWN0CBEaJCkyN0lMUVNXXWRqd36n
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qauwu8TMzwAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAADY
2Q==
</data> </data>
<key>BackgroundColor</key> <key>BackgroundColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjA4NjI3NDUwOTggMC4w b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
OTgwMzkyMTU3IDAuMTQ1MDk4MDM5MgAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC4wODYyNzQ1MDk4IDAuMDk4MDM5MjE1NyAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjE0NTA5ODAzOTIAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>BoldTextColor</key> <key>BoldTextColor</key>
@ -276,50 +273,68 @@
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>CursorBlink</key>
<false/>
<key>CursorColor</key> <key>CursorColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjc2NDcwNTg4MjQgMC43 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
ODAzOTIxNTY5IDAuODE5NjA3ODQzMQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC43NjQ3MDU4ODI0IDAuNzgwMzkyMTU2OSAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjgxOTYwNzg0MzEAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>CursorType</key>
<integer>0</integer>
<key>EscapeNonASCIICharacters</key>
<false/>
<key>Font</key> <key>Font</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0 YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
b290gAGkCwwVFlUkbnVsbNQNDg8QERITFFZOU1NpemVYTlNmRmxh b290gAGkCwwVFlUkbnVsbNQNDg8QERITFFZOU1NpemVYTlNmRmxh
Z3NWTlNOYW1lViRjbGFzcyNAJgAAAAAAABAQgAKAA18QGUhhY2tO Z3NWTlNOYW1lViRjbGFzcyNAKAAAAAAAABAQgAKAA15IYWNrTkYt
ZXJkRm9udENvbXBsZXRlLUJvbGTSFxgZGlokY2xhc3NuYW1lWCRj UmVndWxhctIXGBkaWiRjbGFzc25hbWVYJGNsYXNzZXNWTlNGb250
bGFzc2VzVk5TRm9udKIZG1hOU09iamVjdAgRGiQpMjdJTFFTWF5n ohkbWE5TT2JqZWN0CBEaJCkyN0lMUVNYXmdud36FjpCSlKOos7zD
bnd+hY6QkpSwtcDJ0NMAAAAAAAABAQAAAAAAAAAcAAAAAAAAAAAA xgAAAAAAAAEBAAAAAAAAABwAAAAAAAAAAAAAAAAAAADP
AAAAAAAA3A==
</data> </data>
<key>FontAntialias</key>
<true/>
<key>FontHeightSpacing</key>
<real>1</real>
<key>FontWidthSpacing</key>
<real>1</real>
<key>ProfileCurrentVersion</key>
<real>2.0699999999999998</real>
<key>SelectionColor</key> <key>SelectionColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjc4MDM5MjE1NjkgMC4z b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
MDE5NjA3ODQzIDAuNTM3MjU0OTAyMAAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAmMC43ODAzOTIxNTY5IDAuMzAxOTYwNzg0MyAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjUzNzI1NDkwMgAQAYAC0hQVFhdaJGNsYXNzbmFtZVgkY2xhc3Nl
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV c1dOU0NvbG9yohYYWE5TT2JqZWN0CBEaJCkyN0lMUVNXXWRqd36n
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qauwu8TMzwAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAADY
2Q==
</data> </data>
<key>ShowRepresentedURLPathInTitle</key>
<false/>
<key>ShowTTYNameInTabTitle</key>
<false/>
<key>TextColor</key> <key>TextColor</key>
<data> <data>
YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFy YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0
Y2hpdmVyVCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdC b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRy
XE5TQ29sb3JTcGFjZVYkY2xhc3NPECcwLjY2NjY2NjY2NjcgMC42 b290gAGjCwwTVSRudWxs0w0ODxARElVOU1JHQlxOU0NvbG9yU3Bh
ODIzNTI5NDEyIDAuNzIxNTY4NjI3NQAQAYAC0hAREhNaJGNsYXNz Y2VWJGNsYXNzTxAnMC42NjY2NjY2NjY3IDAuNjgyMzUyOTQxMiAw
bmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNL LjcyMTU2ODYyNzUAEAGAAtIUFRYXWiRjbGFzc25hbWVYJGNsYXNz
ZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCV ZXNXTlNDb2xvcqIWGFhOU09iamVjdAgRGiQpMjdJTFFTV11kand+
oKmxtL3P0tcAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA qKqssbzFzdAAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAA
2Q== 2Q==
</data> </data>
<key>UseBrightBold</key>
<false/>
<key>columnCount</key> <key>columnCount</key>
<integer>124</integer> <integer>124</integer>
<key>name</key> <key>name</key>

File diff suppressed because it is too large Load diff

View file

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AppleTextDirection</key>
<true/>
<key>NSForceRightToLeftWritingDirection</key>
<false/>
<key>NSFullScreenMenuItemEverywhere</key>
<false/>
<key>NSNavLastRootDirectory</key>
<string>~/Cloud/Google Drive/Obsidian</string>
<key>NSNavPanelExpandedSizeForOpenMode</key>
<string>{800, 448}</string>
<key>NSTreatUnknownArgumentsAsOpen</key>
<string>NO</string>
<key>NSWindow Frame NSNavPanelAutosaveName</key>
<string>464 473 800 448 0 0 1728 1079 </string>
</dict>
</plist>

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AppleTextDirection</key>
<true/>
<key>NSForceRightToLeftWritingDirection</key>
<false/>
<key>NSFullScreenMenuItemEverywhere</key>
<false/>
<key>NSTreatUnknownArgumentsAsOpen</key>
<string>NO</string>
</dict>
</plist>

View file

@ -1,7 +1,3 @@
{{- $baseDomain := (join (join .host.hostname ".") .host.domain) -}}
{{- if eq .host.qubes true -}}
{{- $baseDomain := (join (join .host.hostname "-qube.") .host.domain) -}}
{{- end }}
# Configuration for alarm notifications # Configuration for alarm notifications
# #
# This configuration is used by: alarm-notify.sh # This configuration is used by: alarm-notify.sh
@ -52,7 +48,7 @@
# If you have an Internet facing netdata (or you have copied the images/ folder # If you have an Internet facing netdata (or you have copied the images/ folder
# of netdata to your web server), set its URL here, to fetch the notification # of netdata to your web server), set its URL here, to fetch the notification
# images from it. # images from it.
images_base_url="https://netdata.{{ $baseDomain }}" images_base_url="https://netdata-{{ .host.hostname | lower }}.{{ .host.domain | lower }}"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -363,7 +359,11 @@ DEFAULT_RECIPIENT_PUSHOVER=""
# "user1@email.com user2@mail.com" # "user1@email.com user2@mail.com"
# enable/disable sending pushbullet notifications # enable/disable sending pushbullet notifications
{{ if and (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "PUSHBULLET_ACCESS_TOKEN")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "PUSHBULLET_EMAIL")) }}
SEND_PUSHBULLET="YES" SEND_PUSHBULLET="YES"
{{ else }}
SEND_PUSHBULLET="NO"
{{ end }}
# Signup and Login to pushbullet.com # Signup and Login to pushbullet.com
# To get your Access Token, go to https://www.pushbullet.com/#settings/account # To get your Access Token, go to https://www.pushbullet.com/#settings/account
@ -388,7 +388,11 @@ PUSHBULLET_SOURCE_DEVICE=""
# "+15555555555 +17777777777" # "+15555555555 +17777777777"
# enable/disable sending twilio SMS # enable/disable sending twilio SMS
{{ if and (and (and (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWILIO_ACCOUNT_SID")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWILIO_AUTH_TOKEN"))) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWILIO_FROM_NUMBER"))) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CELL_PHONE_NUMBER")) }}
SEND_TWILIO="YES" SEND_TWILIO="YES"
{{ else }}
SEND_TWILIO="NO"
{{ end }}
# Signup for free trial and select a SMS capable Twilio Number # Signup for free trial and select a SMS capable Twilio Number
# To get your Account SID and Token, go to https://www.twilio.com/console # To get your Account SID and Token, go to https://www.twilio.com/console
@ -453,7 +457,11 @@ DEFAULT_RECIPIENT_KAVENEGAR=""
# "CHAT_ID_1 CHAT_ID_2 ..." # "CHAT_ID_1 CHAT_ID_2 ..."
# enable/disable sending telegram messages # enable/disable sending telegram messages
{{ if and (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TELEGRAM_BOT_TOKEN")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TELEGRAM_RECIPIENT_ID")) }}
SEND_TELEGRAM="YES" SEND_TELEGRAM="YES"
{{ else }}
SEND_TELEGRAM="NO"
{{ end }}
# Contact the bot @BotFather to create a new bot and receive a bot token. # Contact the bot @BotFather to create a new bot and receive a bot token.
# Without it, netdata cannot send telegram messages. # Without it, netdata cannot send telegram messages.
@ -479,7 +487,11 @@ DEFAULT_RECIPIENT_TELEGRAM="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoite
# "RECIPIENT1 RECIPIENT2 ..." # "RECIPIENT1 RECIPIENT2 ..."
# enable/disable sending slack notifications # enable/disable sending slack notifications
{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SLACK_WEBHOOK_URL")) }}
SEND_SLACK="YES" SEND_SLACK="YES"
{{ else }}
SEND_SLACK="NO"
{{ end }}
# Login to your slack.com workspace and create an incoming webhook, using the "Incoming Webhooks" App: https://slack.com/apps/A0F7XDUAZ-incoming-webhooks # Login to your slack.com workspace and create an incoming webhook, using the "Incoming Webhooks" App: https://slack.com/apps/A0F7XDUAZ-incoming-webhooks
# Do not use the instructions in https://api.slack.com/incoming-webhooks#enable_webhooks, as those webhooks work only for a single channel. # Do not use the instructions in https://api.slack.com/incoming-webhooks#enable_webhooks, as those webhooks work only for a single channel.
@ -601,7 +613,7 @@ DEFAULT_RECIPIENT_FLOCK=""
# "CHANNEL1 CHANNEL2 ..." # "CHANNEL1 CHANNEL2 ..."
# enable/disable sending discord notifications # enable/disable sending discord notifications
SEND_DISCORD="YES" SEND_DISCORD="NO"
# Create a webhook by following the official documentation - # Create a webhook by following the official documentation -
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks # https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
@ -788,7 +800,7 @@ SYSLOG_FACILITY='local6'
# For example, to send messages with a 'netdata' prefix to a syslog # For example, to send messages with a 'netdata' prefix to a syslog
# daemon listening on port 514 on 'loghost' using the daemon facility and # daemon listening on port 514 on 'loghost' using the daemon facility and
# notice log level: # notice log level:
DEFAULT_RECIPIENT_SYSLOG='daemon.notice@rsyslog.{{ $baseDomain }}:514/netdata' DEFAULT_RECIPIENT_SYSLOG='daemon.notice@rsyslog.{{ .host.hostname | lower }}.{{ .host.domain | lower }}:514/netdata'
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# iOS Push Notifications # iOS Push Notifications
@ -846,21 +858,21 @@ DEFAULT_RECIPIENT_SMS=""
# #
# enable/disable Matrix notifications # enable/disable Matrix notifications
SEND_MATRIX="YES" SEND_MATRIX="NO"
# The url of the Matrix homeserver # The url of the Matrix homeserver
# e.g https://matrix.org:8448 # e.g https://matrix.org:8448
MATRIX_HOMESERVER="https://matrix-client.matrix.org:8448" MATRIX_HOMESERVER="https://matrix.org:8448"
# An access token from a valid Matrix account. Tokens usually don't expire, # An access token from a valid Matrix account. Tokens usually don't expire,
# can be controlled from a Matrix client. # can be controlled from a Matrix client.
# See https://matrix.org/docs/guides/client-server.html # See https://matrix.org/docs/guides/client-server.html
MATRIX_ACCESSTOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "MATRIX_ACCESS_TOKEN")) }}{{- includeTemplate "secrets/MATRIX_ACCESS_TOKEN" | decrypt | trim -}}{{ else }}{{- env "MATRIX_ACCESS_TOKEN" -}}{{ end }}" MATRIX_ACCESSTOKEN=""
# Specify the default rooms to receive the notification if no rooms are provided # Specify the default rooms to receive the notification if no rooms are provided
# in a role's recipients. # in a role's recipients.
# The format is !roomid:homeservername # The format is !roomid:homeservername
DEFAULT_RECIPIENT_MATRIX="#install.doctor:matrix.org" DEFAULT_RECIPIENT_MATRIX=""
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# ntfy.sh global notification options # ntfy.sh global notification options

View file

@ -40,15 +40,15 @@ if [ -d /Applications ] && [ -d /System ]; then
fi fi
# Ensure group exists # Ensure group exists
if ! dscl . read "/Groups/$GROUP" gid &> /dev/null; then if ! dscl . read "/Groups/$GROUP" PrimaryGroupID &> /dev/null; then
MAX_ID_GROUP="$(dscl . -list /Groups gid | awk '{print $2}' | sort -ug | tail -1)" MAX_ID_GROUP="$(dscl . -list /Groups PrimaryGroupID | awk '{print $2}' | sort -ug | tail -1)"
PRIMARY_GROUP_ID="$((MAX_ID_GROUP+1))" PRIMARY_GROUP_ID="$((MAX_ID_GROUP+1))"
dscl . create "/Groups/$GROUP" dscl . create "/Groups/$GROUP"
# This also sets the PrimaryGroupID # This also sets the PrimaryGroupID
sudo dscl . create "/Groups/$GROUP" gid "$PRIMARY_GROUP_ID" sudo dscl . create "/Groups/$GROUP" PrimaryGroupID "$PRIMARY_GROUP_ID"
sudo dscl . append "/Groups/$GROUP" GroupMembership "$USER" sudo dscl . append "/Groups/$GROUP" GroupMembership "$USER"
else else
PRIMARY_GROUP_ID="$(dscl . read "/Groups/$GROUP" gid | awk '{print $2}')" PRIMARY_GROUP_ID="$(dscl . read "/Groups/$GROUP" PrimaryGroupID | awk '{print $2}')"
fi fi
# Ensure user exists # Ensure user exists

View file

@ -38,7 +38,7 @@ if command -v nginx > /dev/null; then
fi fi
logg info "Ensuring $NGINX_CONFIG_DIR is present" && sudo mkdir -p "$NGINX_CONFIG_DIR" logg info "Ensuring $NGINX_CONFIG_DIR is present" && sudo mkdir -p "$NGINX_CONFIG_DIR"
logg info "Copying configuration files from $HOME/.local/etc/nginx to $NGINX_CONFIG_DIR" logg info "Copying configuration files from $HOME/.local/etc/nginx to $NGINX_CONFIG_DIR"
sudo rsync -av "$HOME/.local/etc/nginx" "$NGINX_CONFIG_DIR" sudo rsync -av "$HOME/.local/etc/nginx/" "$NGINX_CONFIG_DIR"
if [ -d /Applications ] && [ -d /System ]; then if [ -d /Applications ] && [ -d /System ]; then
### macOS ### macOS
if [ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/nginx" ] && [ ! -L "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/nginx" ]; then if [ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/nginx" ] && [ ! -L "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/nginx" ]; then

View file

@ -10,6 +10,21 @@
# cat ~/.bashrc | mail -s "My subject" name@email.com # cat ~/.bashrc | mail -s "My subject" name@email.com
# ``` # ```
### Acquire SENDGRID_API_KEY
SENDGRID_API_KEY_FILE="${XDG_DATA_HOME:-$HOME/.local/share}/chezmoi/home/.chezmoitemplates/secrets/SENDGRID_API_KEY"
if [ -f "$SENDGRID_API_KEY_FILE" ]; then
logg info "Found SENDGRID_API_KEY in ${XDG_DATA_HOME:-$HOME/.local/share}/chezmoi/home/.chezmoitemplates/secrets"
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/age/chezmoi.txt" ]; then
logg info 'Decrypting SENDGRID_API_KEY token with Age encryption key'
SENDGRID_API_KEY="$(cat "$SENDGRID_API_KEY_FILE" | chezmoi decrypt)"
else
logg warn 'Age encryption key is missing from ~/.config/age/chezmoi.txt'
fi
else
logg warn "SENDGRID_API_KEY is missing from ${XDG_DATA_HOME:-$HOME/.local/share}/chezmoi/home/.chezmoitemplates/secrets"
fi
### Setup Postfix if SENDGRID_API_KEY is retrieved
if [ -n "$SENDGRID_API_KEY" ] && [ "$SENDGRID_API_KEY" != "" ]; then if [ -n "$SENDGRID_API_KEY" ] && [ "$SENDGRID_API_KEY" != "" ]; then
if command -v postfix > /dev/null; then if command -v postfix > /dev/null; then
### Ensure dependencies are installed ### Ensure dependencies are installed

View file

@ -25,7 +25,7 @@ PRIVOXY_CONFIG="$PRIVOXY_CONFIG_DIR/config"
if command -v privoxy > /dev/null; then if command -v privoxy > /dev/null; then
if [ -f "${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config" ]; then if [ -f "${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config" ]; then
sudo mkdir -p "PRIVOXY_CONFIG_DIR" sudo mkdir -p "$PRIVOXY_CONFIG_DIR"
logg info "Copying ${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config to $PRIVOXY_CONFIG" logg info "Copying ${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config to $PRIVOXY_CONFIG"
sudo cp -f "${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config" "$PRIVOXY_CONFIG" sudo cp -f "${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config" "$PRIVOXY_CONFIG"
logg info "Running sudo chmod 600 $PRIVOXY_CONFIG" logg info "Running sudo chmod 600 $PRIVOXY_CONFIG"

View file

@ -6,12 +6,12 @@ if command -v rkhunter > /dev/null; then
if [ -d /Applications ] && [ -d /System ]; then if [ -d /Applications ] && [ -d /System ]; then
### macOS ### macOS
logg info 'Updating file "$(brew --prefix)/Cellar/rkhunter/1.4.6/etc/rkhunter.conf"' && gsed -i "s/^#WEB_CMD.*$/WEB_CMD=curl\ -L/" "$(brew --prefix)/Cellar/rkhunter/1.4.6/etc/rkhunter.conf" logg info 'Updating file "$(brew --prefix)/Cellar/rkhunter/1.4.6/etc/rkhunter.conf"' && gsed -i "s/^#WEB_CMD.*$/WEB_CMD=curl\ -L/" "$(brew --prefix)/Cellar/rkhunter/1.4.6/etc/rkhunter.conf"
export PATH="$(echo "$PATH" | gsed 's/VMware Fusion.app/VMwareFusion.app/g')"
export PATH="$(echo "$PATH" | gsed 's/IntelliJ IDEA CE.app/IntelliJIDEACE.app/g')"
else else
### Linux ### Linux
logg info 'Updating file /etc/rkhunter.conf' && sed -i "s/^#WEB_CMD.*$/WEB_CMD=curl\ -L/" /etc/rkhunter.conf logg info 'Updating file /etc/rkhunter.conf' && sed -i "s/^#WEB_CMD.*$/WEB_CMD=curl\ -L/" /etc/rkhunter.conf
fi fi
export PATH="$(echo "$PATH" | sed 's/VMware Fusion.app/VMwareFusion.app/')"
export PATH="$(echo "$PATH" | sed 's/IntelliJ IDEA CE.app/IntelliJIDEACE.app/')"
sudo rkhunter --propupd || RK_PROPUPD_EXIT_CODE=$? sudo rkhunter --propupd || RK_PROPUPD_EXIT_CODE=$?
if [ -n "$RK_PROPUPD_EXIT_CODE" ]; then if [ -n "$RK_PROPUPD_EXIT_CODE" ]; then
logg error "sudo rkhunter --propupd returned non-zero exit code" logg error "sudo rkhunter --propupd returned non-zero exit code"

View file

@ -4,9 +4,19 @@
# @description # @description
# This script ensures the `tailscaled` system daemon is installed on macOS. Then, on both macOS and Linux, it connects to the Tailscale # This script ensures the `tailscaled` system daemon is installed on macOS. Then, on both macOS and Linux, it connects to the Tailscale
# network if the `TAILSCALE_AUTH_KEY` variable is provided. # network if the `TAILSCALE_AUTH_KEY` variable is provided.
#
# If CloudFlare WARP is also installed, this script will disconnect from it and then reconnect after Tailscale is connected.
# This is a quirk and Tailscale has no roadmap for fixing it for use alongside other VPNs. To setup Tailscale to work alongside
# CloudFlare WARP, you will have to set up a [split tunnel](https://www.youtube.com/watch?v=eDFs8hm3xWc) for
# [Tailscale IP addresses](https://tailscale.com/kb/1105/other-vpns).
### Disconnect from CloudFlare WARP (if connected)
if command -v warp-cli > /dev/null; then
warp-cli disconnect && logg info 'CloudFlare WARP temporarily disconnected while Tailscale connects'
fi
### Install the Tailscale system daemon ### Install the Tailscale system daemon
if [ -d /Applications ] && [ -d System ]; then if [ -d /Applications ] && [ -d /System ]; then
### macOS ### macOS
if command -v tailscaled > /dev/null; then if command -v tailscaled > /dev/null; then
logg info 'Ensuring tailscaled system daemon is installed' logg info 'Ensuring tailscaled system daemon is installed'
@ -24,6 +34,20 @@ if [ -d /Applications ] && [ -d System ]; then
fi fi
fi fi
### Acquire TAILSCALE_AUTH_KEY
TAILSCALE_KEY_FILE="${XDG_DATA_HOME:-$HOME/.local/share}/chezmoi/home/.chezmoitemplates/secrets/TAILSCALE_AUTH_KEY"
if [ -f "$TAILSCALE_KEY_FILE" ]; then
logg info "Found TAILSCALE_AUTH_KEY in ${XDG_DATA_HOME:-$HOME/.local/share}/chezmoi/home/.chezmoitemplates/secrets"
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/age/chezmoi.txt" ]; then
logg info 'Decrypting TAILSCALE_AUTH_KEY token with Age encryption key'
TAILSCALE_AUTH_KEY="$(cat "$TAILSCALE_KEY_FILE" | chezmoi decrypt)"
else
logg warn 'Age encryption key is missing from ~/.config/age/chezmoi.txt'
fi
else
logg warn "TAILSCALE_AUTH_KEY is missing from ${XDG_DATA_HOME:-$HOME/.local/share}/chezmoi/home/.chezmoitemplates/secrets"
fi
### Connect to Tailscale network ### Connect to Tailscale network
if [ -n "$TAILSCALE_AUTH_KEY" ] && [ "$TAILSCALE_AUTH_KEY" != "" ]; then if [ -n "$TAILSCALE_AUTH_KEY" ] && [ "$TAILSCALE_AUTH_KEY" != "" ]; then
if [ -f /Applications/Tailscale.app/Contents/MacOS/Tailscale ]; then if [ -f /Applications/Tailscale.app/Contents/MacOS/Tailscale ]; then
@ -46,3 +70,22 @@ if [ -n "$TAILSCALE_AUTH_KEY" ] && [ "$TAILSCALE_AUTH_KEY" != "" ]; then
else else
logg info 'TAILSCALE_AUTH_KEY is not defined so not logging into Tailscale network' logg info 'TAILSCALE_AUTH_KEY is not defined so not logging into Tailscale network'
fi fi
### Re-connect CloudFlare WARP after Tailscale is connected
if command -v warp-cli > /dev/null; then
### Register CloudFlare WARP
if warp-cli --accept-tos status | grep 'Registration Missing' > /dev/null; then
logg info 'Registering CloudFlare WARP'
warp-cli --accept-tos registration new
else
logg info 'Either there is a misconfiguration or the device is already registered with CloudFlare WARP'
fi
### Connect CloudFlare WARP
if warp-cli --accept-tos status | grep 'Disconnected' > /dev/null; then
logg info 'Connecting to CloudFlare WARP'
warp-cli --accept-tos connect > /dev/null && logg success 'Connected to CloudFlare WARP'
else
logg info 'Either there is a misconfiguration or the device is already connected with CloudFlare WARP'
fi
fi

View file

@ -139,7 +139,7 @@ if command -v vagrant > /dev/null && command -v vmware-id > /dev/null; then
logg info 'Ensuring the Vagrant VMWare Utility service is enabled' logg info 'Ensuring the Vagrant VMWare Utility service is enabled'
sudo vagrant-vmware-utility service install || EXIT_CODE=$? sudo vagrant-vmware-utility service install || EXIT_CODE=$?
if [ -n "$EXIT_CODE" ]; then if [ -n "$EXIT_CODE" ]; then
logg info 'The Vagrant VMWare Utility command vagrant-vmware-utility service. If it was already set up, there should be a notice above.' logg info 'The Vagrant VMWare Utility command vagrant-vmware-utility service install failed. If it was already set up, there should be a notice above.'
fi fi
fi fi
else else

View file

@ -13,7 +13,7 @@ if [ -d /Applications ] && [ -d /System ]; then
wget -q "$PKG_URL" -O /tmp/wazuh-agent.pkg &> /dev/null wget -q "$PKG_URL" -O /tmp/wazuh-agent.pkg &> /dev/null
logg info 'Setting Wazuh launch parameters in /tmp/wazuh_envs' logg info 'Setting Wazuh launch parameters in /tmp/wazuh_envs'
# https://documentation.wazuh.com/current/user-manual/agent/deployment-variables/deployment-variables-macos.html # https://documentation.wazuh.com/current/user-manual/agent/deployment-variables/deployment-variables-macos.html
echo 'WAZUH_MANAGER="$WAZUH_MANAGER" && WAZUH_REGISTRATION_SERVER="$WAZUH_MANAGER" && WAZUH_REGISTRATION_PASSWORD="WazuhRegister" && WAZUH_AGENT_NAME="$WAZUH_AGENT_NAME"' > /tmp/wazuh_envs echo "WAZUH_MANAGER="$WAZUH_MANAGER" && WAZUH_REGISTRATION_SERVER="$WAZUH_MANAGER" && WAZUH_REGISTRATION_PASSWORD="WazuhRegister" && WAZUH_AGENT_NAME="$WAZUH_AGENT_NAME"" > /tmp/wazuh_envs
logg info 'Installing the Wazuh agent pkg' logg info 'Installing the Wazuh agent pkg'
sudo installer -pkg /tmp/wazuh-agent.pkg -target / sudo installer -pkg /tmp/wazuh-agent.pkg -target /
sudo chmod 755 /Library/Ossec sudo chmod 755 /Library/Ossec