├── .editorconfig ├── .gitignore ├── README.md ├── ansible.cfg ├── files ├── dconf_gdm.ini ├── dconf_profile_user ├── dconf_settings.ini ├── dots │ ├── curlrc │ ├── editorconfig │ ├── gitignore │ ├── tmux.conf │ ├── wgetrc │ └── zshrc.zsh ├── fonts │ ├── 01_LICENSE.IBM-PLEX-SANS.txt │ ├── 01_LICENSE.IBM-PLEX-SERIF.txt │ ├── 01_LICENSE.JETBRAINS-MONO.txt │ ├── IBMPlexSans-Bold.ttf │ ├── IBMPlexSans-BoldItalic.ttf │ ├── IBMPlexSans-ExtraLight.ttf │ ├── IBMPlexSans-ExtraLightItalic.ttf │ ├── IBMPlexSans-Italic.ttf │ ├── IBMPlexSans-Light.ttf │ ├── IBMPlexSans-LightItalic.ttf │ ├── IBMPlexSans-Medium.ttf │ ├── IBMPlexSans-MediumItalic.ttf │ ├── IBMPlexSans-Regular.ttf │ ├── IBMPlexSans-SemiBold.ttf │ ├── IBMPlexSans-SemiBoldItalic.ttf │ ├── IBMPlexSans-Text.ttf │ ├── IBMPlexSans-TextItalic.ttf │ ├── IBMPlexSans-Thin.ttf │ ├── IBMPlexSans-ThinItalic.ttf │ ├── IBMPlexSerif-Bold.ttf │ ├── IBMPlexSerif-BoldItalic.ttf │ ├── IBMPlexSerif-ExtraLight.ttf │ ├── IBMPlexSerif-ExtraLightItalic.ttf │ ├── IBMPlexSerif-Italic.ttf │ ├── IBMPlexSerif-Light.ttf │ ├── IBMPlexSerif-LightItalic.ttf │ ├── IBMPlexSerif-Medium.ttf │ ├── IBMPlexSerif-MediumItalic.ttf │ ├── IBMPlexSerif-Regular.ttf │ ├── IBMPlexSerif-SemiBold.ttf │ ├── IBMPlexSerif-SemiBoldItalic.ttf │ ├── IBMPlexSerif-Text.ttf │ ├── IBMPlexSerif-TextItalic.ttf │ ├── IBMPlexSerif-Thin.ttf │ ├── IBMPlexSerif-ThinItalic.ttf │ ├── JetBrainsMono-Bold-Italic.ttf │ ├── JetBrainsMono-Bold.ttf │ ├── JetBrainsMono-BoldItalic.ttf │ ├── JetBrainsMono-ExtraBold-Italic.ttf │ ├── JetBrainsMono-ExtraBold.ttf │ ├── JetBrainsMono-ExtraBoldItalic.ttf │ ├── JetBrainsMono-ExtraLight-Italic.ttf │ ├── JetBrainsMono-ExtraLight.ttf │ ├── JetBrainsMono-ExtraLightItalic.ttf │ ├── JetBrainsMono-Italic.ttf │ ├── JetBrainsMono-Light-Italic.ttf │ ├── JetBrainsMono-Light.ttf │ ├── JetBrainsMono-LightItalic.ttf │ ├── JetBrainsMono-Medium-Italic.ttf │ ├── JetBrainsMono-Medium.ttf │ ├── JetBrainsMono-MediumItalic.ttf │ ├── JetBrainsMono-Regular.ttf │ ├── JetBrainsMono-SemiBold.ttf │ ├── JetBrainsMono-SemiBoldItalic.ttf │ ├── JetBrainsMono-SemiLight-Italic.ttf │ ├── JetBrainsMono-SemiLight.ttf │ ├── JetBrainsMono-Thin.ttf │ └── JetBrainsMono-ThinItalic.ttf ├── id_rsa.pub ├── menu-icon.svg ├── plymouthd.conf └── wallpaper.jpg ├── inventory └── hosts ├── screen.png ├── scripts └── oh-my-zsh-setup.sh ├── templates └── dots │ ├── authorized_keys │ └── gitconfig ├── workstation-headless.yml └── workstation.yml /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | 7 | [*.yml] 8 | indent_style = space 9 | charset = utf-8 10 | indent_size = 2 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | site.retry 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # .dots 2 | 3 | ![Desktop](./screen.png) 4 | 5 | New and upgraded dotfiles, now with Ansible! 6 | 7 | ## What is this? 8 | 9 | This Ansible project serves to configure and maintain my personal workstations, which includes software installation, 10 | management of dotfiles, handling configurations, and more. 11 | 12 | ## Danger, Will Robinson! 13 | 14 | For clear reasons, it's not advisable to apply this configuration on your personal machine. If you do, it will 15 | disrupt your existing system, replace it with my own setup, and could potentially cause harm to your cat or any other 16 | domestic animals that may be nearby. 17 | 18 | You are welcome to use this repository as a foundation for your setup, and it's recommended to experiment with it on a 19 | disposable virtual machine. 20 | 21 | The main branch is compatible with Fedora 37+. While there may be other branches for various operating systems, 22 | please note that these are for testing and not actively maintained. 23 | 24 | ## Goals and non-goals 25 | 26 | The primary objective here is to swiftly configure my desktop environment on a new machine installation or after a 27 | re-installation with minimal manual steps. 28 | 29 | While this repository isn't geared towards offering a production-grade Ansible project, I will strive to maintain the 30 | roles and associated elements as manageable as possible for the sake of my personal convenience and sanity. If you're on 31 | the hunt for model examples of how to write production Ansible roles for sharing with others, I must mention that this 32 | may not serve as an ideal reference. However, it could provide a starting point for you. There are numerous shortcuts 33 | that have been used here primarily because they suit my requirements. 34 | 35 | ## What is automated 36 | 37 | - Individual dotfiles, shell configurations, and related items. 38 | - Almost all software applications I utilize on my workstations (excluding user configurations which are yet to be 39 | done). 40 | - Default settings for themes, fonts, dconf settings for GNOME3, and extensions. 41 | - Certain standard security settings and more. 42 | 43 | ## Components 44 | 45 | - GNOME desktop 46 | - Papirus Dark icons 47 | - [IBM Plex](https://www.ibm.com/plex/) and [JetBrains Mono](https://www.jetbrains.com/lp/mono/) fonts 48 | - ... software, tools, things. 49 | 50 | ### dconf settings and system defaults 51 | 52 | The configuration of the desktop user experience is intentionally set as a system-wide default profile, rather than 53 | employing per-user settings. This is a deliberate choice because not all my machines are identical. By using system-wide 54 | defaults, I retain the flexibility to override certain settings locally without the risk of them being reversed later by 55 | Ansible. 56 | 57 | ## How to use 58 | 59 | ### Obtain a fork 60 | 61 | 1. Fork this repository. 62 | 2. Review and modify [workstation playbook](./workstation.yml). 63 | 3. Review and modify [files](./files) and [templates](./templates). 64 | 4. Commit and push your changes to your fork. 65 | 5. Follow the "How to use" as described below. 66 | 67 | **IMPORTANT**: Please refrain from adding anything confidential to a public repository. This includes, but is not 68 | limited to, passwords, private keys, and other sensitive information. 69 | 70 | ### Using Ansible to deploy the configuration 71 | 72 | 1. Begin by setting up a machine with a basic installation of Fedora featuring a minimal desktop environment. 73 | - If you plan to complete the installation remotely, an SSH server is required. 74 | 2. Shift to a non-default TTY or SSH into the machine remotely. 75 | 3. Install Ansible and other dependencies using the command `sudo dnf install python3 python3-pip git` 76 | 4. Proceed with Ansible's installation using sudo `pip3 install ansible` 77 | 5. Clone this repository to a location of your choice. I typically use `~/dots/`. 78 | 6. Modify `workstation.yml` as necessary. 79 | 80 | To run Ansible in check mode, use `ansible-playbook workstation.yml -K -C`. 81 | To run Ansible against localhost, use `ansible-playbook workstation.yml -K`. 82 | 83 | Setting up requires root privileges (as you might expect). Ansible will prompt you for your password to become the root 84 | user. This is necessary because Ansible automates package installation, modifies settings only accessible to the root, 85 | etc. 86 | 87 | After the playbooks have been applied, a reboot might be necessary. 88 | 89 | ## Known issues 90 | 91 | - During the initial setup, there may be an instance where dconf update doesn't execute properly and might necessitate a 92 | manual second run after all changes are applied. To resolve this, simply log in and run dconf update as root. 93 | 94 | ## The backstory 95 | 96 | Until around June 2020, Elementary was my preferred distribution for all my personal workstation machines. These 97 | machines were semi-managed using a blend of shell scripts and manual work. 98 | 99 | A few changes within Elementary itself, Ubuntu upstream, and some subjective reasons (a particularly bored night, for 100 | instance) led me to reconsider whether Elementary was still the optimal choice for my personal use case, as it had been 101 | when I first started using it. GNOME and its associated elements have transformed significantly since its early days. 102 | 103 | I experimented with multiple distributions, using each for a few days, to gauge their integration potential within my 104 | workflows and daily routine. Initially, I leaned towards Debian, a system with which I have a lengthy history. It had 105 | been my go-to operating system for all my personal servers and was my main desktop operating system until mid-2012, 106 | before I shifted to Elementary. In fact, my first exposure to a Linux operating system was with Debian, version 2.2 at 107 | that time - nearly two decades ago. 108 | 109 | While it's relatively easy to designate a spare machine for testing an operating system, transferring all your tools, 110 | configurations, and software to a similar, albeit slightly different, distribution is a whole other task. This becomes 111 | even more challenging if you are managing multiple machines - several of which I use daily, and others occasionally. 112 | Nonetheless, they all require the same setup as my daily use machines. 113 | 114 | This Ansible project was developed to address the challenge of synchronizing work environments across all my physical 115 | machines, thus maintaining a more or less consistent configuration over prolonged periods. 116 | 117 | As of approximately August 2022, numerous changes have transpired. Most notably: 118 | 119 | - I've decreased the number of physical machines I regularly use from around five to just two - my main mobile 120 | workstation and my stationary desktop, which I primarily use for media and the occasional game or two. 121 | - I've transitioned both of these machines to Fedora, a move made considerably easier thanks to this Ansible project! 122 | - This repository has been significantly simplified and no longer relies on a roles-based structure. Employing just one 123 | playbook that includes everything has proved to be more convenient, though not necessarily the "correct" way. 124 | 125 | ## FAQ 126 | 127 | ### What about syncthing? 128 | 129 | If you have a primary and a secondary machine, and you only ever make changes to one of them, you could potentially use 130 | Syncthing for your dotfiles. However, you are restricted to syncing files only. Generally, this is not the most 131 | recommended approach. 132 | 133 | If you have more than two machines to configure and are considering using Syncthing to synchronize your configurations 134 | and dotfiles, it's likely not the best choice. Unless, of course, you don't mind potential disruptions to your system. 135 | 136 | ### What about git? 137 | 138 | This project indeed uses Git. In theory, you could bind your home directory with `.git` and `#!/bin/bash` - but why 139 | would you? Maintaining this project is significantly simpler. 140 | 141 | ### What about other 5,000 tools someone created to configure their machines/dotfiles? 142 | 143 | Ultimately, you should opt for whatever strategy suits you best. Ansible is a standard tool employed by countless system 144 | administrators, operations professionals, and developers for tasks far more critical than this. By choosing Ansible, 145 | you're in good company, and there are very few tasks you can't handle with Ansible in the current year. 146 | 147 | ### Does Ansible work on MAC? 148 | 149 | Absolutely, it does. It covers Homebrew package management, configuration file management, and much more. 150 | 151 | ### But but but my bootstrap scripts and manual copy-pasting of everything?! 152 | 153 | Haha Ansible playbooks go brrr 154 | 155 | 156 | -------------------------------------------------------------------------------- /ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | inventory=inventory 3 | -------------------------------------------------------------------------------- /files/dconf_gdm.ini: -------------------------------------------------------------------------------- 1 | [org/gnome/desktop/background] 2 | picture-uri='file:///usr/share/backgrounds/wallpaper.jpg' 3 | [org/gnome/desktop/screensaver] 4 | picture-uri='file:///usr/share/backgrounds/wallpaper.jpg' 5 | -------------------------------------------------------------------------------- /files/dconf_profile_user: -------------------------------------------------------------------------------- 1 | user-db:user 2 | system-db:local 3 | -------------------------------------------------------------------------------- /files/dconf_settings.ini: -------------------------------------------------------------------------------- 1 | [org/gnome/desktop/interface] 2 | clock-show-date = true 3 | clock-show-seconds = true 4 | clock-show-weekday = true 5 | cursor-theme = 'Adwaita' 6 | document-font-name = 'IBM Plex Sans 10' 7 | enable-animations = false 8 | enable-hot-corners = false 9 | font-name = 'IBM Plex Sans 10' 10 | gtk-im-module = 'gtk-im-context-simple' 11 | gtk-theme = 'Adwaita' 12 | icon-theme = 'Papirus-Dark' 13 | monospace-font-name = 'JetBrains Mono 11' 14 | show-battery-percentage = true 15 | text-scaling-factor = 1.0 16 | 17 | [org/gnome/gedit/preferences/editor] 18 | editor-font = 'JetBrains Mono 11' 19 | 20 | [org/gnome/shell/extensions/user-theme] 21 | name = 'Adwaita-dark' 22 | 23 | [org/gnome/desktop/wm/preferences] 24 | button-layout = 'appmenu:minimize,maximize,close' 25 | num-workspaces = 1 26 | titlebar-font = 'IBM Plex Sans 10' 27 | 28 | [org/gnome/boxes] 29 | first-run = false 30 | view = 'icon-view' 31 | window-maximized = true 32 | 33 | [org/gnome/clocks] 34 | world-clocks = [{'location': <(uint32 2, <('Vancouver', 'CYVR', true, [(0.85841109795478021, -2.1496638678574467)], [(0.85957465660720722, -2.1490820798045869)])>)>}, {'location': <(uint32 2, <('Los Angeles', 'KCQT', true, [(0.59370283970450188, -2.0644336110828618)], [(0.59432360095955872, -2.063741622941031)])>)>}, {'location': <(uint32 2, <('Cancún', 'MMUN', true, [(0.36710091351837648, -1.5161093493835052)], [(0.36942803082323056, -1.5155275613306451)])>)>}, {'location': <(uint32 2, <('Miami', 'KMIA', true, [(0.45013011811997866, -1.401785431362556)], [(0.44984580398482882, -1.3996433887715831)])>)>}, {'location': <(uint32 2, <('Toronto', 'CYTZ', true, [(0.76154532446909495, -1.3857914260834978)], [(0.76212711252195475, -1.3860823201099277)])>)>}, {'location': <(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>}, {'location': <(uint32 2, <('Dublin', 'EIDW', false, [(0.93258759116453926, -0.1090830782496456)], [(0.93258759116453926, -0.1090830782496456)])>)>}, {'location': <(uint32 2, <('London', 'EGWU', true, [(0.89971722940307675, -0.007272211034407213)], [(0.89884456477707964, -0.0020362232784242244)])>)>}, {'location': <(uint32 2, <('Rīga', 'EVRA', true, [(0.99338323841120335, 0.41829724987907185)], [(0.99396500901077067, 0.4206243497306334)])>)>}, {'location': <(uint32 2, <('Dubai', 'OMDB', true, [(0.44069563612856821, 0.96574884695243146)], [(0.44073441734454749, 0.9648180105024653)])>)>}, {'location': <(uint32 2, <('Singapore', 'WSAP', true, [(0.023852838928353343, 1.8136879868485383)], [(0.022568084612667797, 1.8126262332513803)])>)>}] 35 | 36 | [org/gnome/shell/world-clocks] 37 | locations = [<(uint32 2, <('Vancouver', 'CYVR', true, [(0.85841109795478021, -2.1496638678574467)], [(0.85957465660720722, -2.1490820798045869)])>)>, <(uint32 2, <('Los Angeles', 'KCQT', true, [(0.59370283970450188, -2.0644336110828618)], [(0.59432360095955872, -2.063741622941031)])>)>, <(uint32 2, <('Cancún', 'MMUN', true, [(0.36710091351837648, -1.5161093493835052)], [(0.36942803082323056, -1.5155275613306451)])>)>, <(uint32 2, <('Miami', 'KMIA', true, [(0.45013011811997866, -1.401785431362556)], [(0.44984580398482882, -1.3996433887715831)])>)>, <(uint32 2, <('Toronto', 'CYTZ', true, [(0.76154532446909495, -1.3857914260834978)], [(0.76212711252195475, -1.3860823201099277)])>)>, <(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>, <(uint32 2, <('Dublin', 'EIDW', false, [(0.93258759116453926, -0.1090830782496456)], [(0.93258759116453926, -0.1090830782496456)])>)>, <(uint32 2, <('London', 'EGWU', true, [(0.89971722940307675, -0.007272211034407213)], [(0.89884456477707964, -0.0020362232784242244)])>)>, <(uint32 2, <('Rīga', 'EVRA', true, [(0.99338323841120335, 0.41829724987907185)], [(0.99396500901077067, 0.4206243497306334)])>)>, <(uint32 2, <('Dubai', 'OMDB', true, [(0.44069563612856821, 0.96574884695243146)], [(0.44073441734454749, 0.9648180105024653)])>)>, <(uint32 2, <('Singapore', 'WSAP', true, [(0.023852838928353343, 1.8136879868485383)], [(0.022568084612667797, 1.8126262332513803)])>)>] 38 | 39 | [org/gnome/shell/weather] 40 | automatic-location = true 41 | locations = [<(uint32 2, <('Barcelona', 'LEBL', true, [(0.72053008704722821, 0.036070143692313643)], [(0.72227541629922254, 0.038106349517445362)])>)>] 42 | 43 | [org/gnome/Weather] 44 | locations = [<(uint32 2, <('Barcelona', 'LEBL', true, [(0.72053008704722821, 0.036070143692313643)], [(0.72227541629922254, 0.038106349517445362)])>)>] 45 | 46 | [org.gnome.GWeather4] 47 | temperature-unit = 'centigrade' 48 | 49 | [org/gnome/desktop/background] 50 | color-shading-type = 'solid' 51 | picture-options = 'zoom' 52 | picture-uri = 'file:///usr/share/backgrounds/wallpaper.jpg' 53 | picture-uri-dark = 'file:///usr/share/backgrounds/wallpaper.jpg' 54 | primary-color = '#000000000000' 55 | secondary-color = '#000000000000' 56 | 57 | [org/gnome/desktop/screensaver] 58 | color-shading-type = 'solid' 59 | lock-delay = uint32 0 60 | picture-options = 'zoom' 61 | picture-uri = 'file:///usr/share/backgrounds/wallpaper.jpg' 62 | picture-uri-dark = 'file:///usr/share/backgrounds/wallpaper.jpg' 63 | primary-color = '#000000000000' 64 | secondary-color = '#000000000000' 65 | 66 | [org/gnome/desktop/calendar] 67 | show-weekdate = true 68 | 69 | [org/gnome/desktop/media-handling] 70 | autorun-never = true 71 | 72 | [org/gnome/desktop/notifications] 73 | show-in-lock-screen = false 74 | 75 | [org/gnome/desktop/privacy] 76 | disable-camera = true 77 | disable-microphone = true 78 | old-files-age = uint32 7 79 | remember-recent-files = false 80 | report-technical-problems = false 81 | 82 | [org/gnome/mutter] 83 | dynamic-workspaces = false 84 | overlay-key = 'Super_L' 85 | center-new-windows = true 86 | 87 | [org/gnome/settings-daemon/plugins/xsettings] 88 | antialiasing = 'rgba' 89 | hinting = 'full' 90 | 91 | [org/gnome/shell] 92 | favorite-apps = ['org.gnome.Nautilus.desktop', 'jetbrains-toolbox.desktop', 'com.spotify.Client.desktop', 'org.gnome.Terminal.desktop','com.bitwarden.desktop.desktop', 'org.standardnotes.standardnotes.desktop', 'org.gnome.Evolution.desktop', 'com.slack.Slack.desktop', 'com.mattermost.Desktop.desktop', 'org.signal.Signal.desktop', 'org.telegram.desktop.desktop', 'firefox.desktop', 'jetbrains-idea.desktop'] 93 | enabled-extensions = ['places-menu@gnome-shell-extensions.gcampax.github.com', 'caffeine@patapon.info', 'user-theme@gnome-shell-extensions.gcampax.github.com', 'dash-to-dock@micxgx.gmail.com'] 94 | disabled-extensions = ['background-logo@fedorahosted.org'] 95 | 96 | [org/gnome/system/location] 97 | enabled = false 98 | 99 | [org/gnome/system/locale] 100 | region = 'en_IE.UTF-8' 101 | 102 | [org/gnome/terminal/legacy/keybindings] 103 | copy = 'c' 104 | paste = 'v' 105 | 106 | [org/gnome/terminal/legacy/profiles:] 107 | default = '0f14b7b2-f2a4-11ed-a05b-0242ac120003' 108 | 109 | [org/gnome/terminal/legacy/profiles:/:0f14b7b2-f2a4-11ed-a05b-0242ac120003] 110 | background-color = '#2E3440' 111 | bold-color-same-as-fg = true 112 | bold-color = '#D8DEE9' 113 | cursor-background-color = 'rgb(216,222,233)' 114 | cursor-colors-set = true 115 | cursor-foreground-color = 'rgb(59,66,82)' 116 | foreground-color = '#D8DEE9' 117 | highlight-background-color = 'rgb(136,192,208)' 118 | highlight-colors-set = true 119 | highlight-foreground-color = 'rgb(46,52,64)' 120 | palette = ['#3B4252', '#BF616A', '#A3BE8C', '#EBCB8B', '#81A1C1', '#B48EAD', '#88C0D0', '#E5E9F0', '#4C566A', '#BF616A', '#A3BE8C', '#EBCB8B', '#81A1C1', '#B48EAD', '#8FBCBB', '#ECEFF4'] 121 | use-theme-background = false 122 | use-theme-colors = false 123 | use-theme-transparency = false 124 | use-transparent-background = false 125 | visible-name = 'Nord' 126 | 127 | [org/gnome/shell/extensions/dash-to-dock] 128 | apply-custom-theme = false 129 | background-color = 'rgb(229,165,10)' 130 | background-opacity = 0.0 131 | click-action = 'previews' 132 | custom-background-color = false 133 | custom-theme-shrink = true 134 | dash-max-icon-size = 26 135 | disable-overview-on-startup = false 136 | dock-fixed = true 137 | dock-position = 'BOTTOM' 138 | extend-height = false 139 | height-fraction = 0.88 140 | icon-size-fixed = false 141 | intellihide-mode = 'FOCUS_APPLICATION_WINDOWS' 142 | isolate-monitors = false 143 | multi-monitor = true 144 | preferred-monitor = -2 145 | preferred-monitor-by-connector = 'DP-3' 146 | running-indicator-style = 'SQUARES' 147 | scroll-action = 'cycle-windows' 148 | show-apps-at-top = true 149 | show-mounts = false 150 | show-mounts-network = false 151 | show-mounts-only-mounted = true 152 | show-trash = false 153 | transparency-mode = 'FIXED' 154 | -------------------------------------------------------------------------------- /files/dots/curlrc: -------------------------------------------------------------------------------- 1 | user-agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_3_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" 2 | referer = ";auto" 3 | location 4 | show-error 5 | silent 6 | -------------------------------------------------------------------------------- /files/dots/editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | end_of_line = lf 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | -------------------------------------------------------------------------------- /files/dots/gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Python files 2 | *.pyc 3 | 4 | # OS generated files # 5 | ###################### 6 | .Spotlight-V100 7 | ehthumbs.db 8 | Thumbs.db 9 | 10 | # Folder view configuration files 11 | .DS_Store 12 | .DS_Store? 13 | Desktop.ini 14 | 15 | # Thumbnail cache files 16 | ._* 17 | Thumbs.db 18 | 19 | # Files that might appear on external disks 20 | .Spotlight-V100 21 | .Trashes 22 | 23 | # Vagrant 24 | .vagrant 25 | 26 | # IDEA 27 | *.iml 28 | .idea/ 29 | 30 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 31 | hs_err_pid* 32 | 33 | # Node 34 | npm-debug.log 35 | -------------------------------------------------------------------------------- /files/dots/tmux.conf: -------------------------------------------------------------------------------- 1 | # changing commands key 2 | set -g prefix C-w 3 | 4 | bind-key C-w send-prefix 5 | bind-key b setw synchronize-panes 6 | bind-key v split-window -v 7 | bind-key h split-window -h 8 | 9 | set -g mouse on 10 | set-window-option -g allow-rename off 11 | set-window-option -g mode-keys vi 12 | 13 | setw -g monitor-activity on 14 | set -g visual-activity on 15 | 16 | # From https://github.com/nordtheme/tmux 17 | 18 | # Copyright (C) 2017-present Arctic Ice Studio 19 | # Copyright (C) 2017-present Sven Greb 20 | 21 | # Project: Nord tmux 22 | # Repository: https://github.com/arcticicestudio/nord-tmux 23 | # License: MIT 24 | 25 | #+----------------+ 26 | #+ Plugin Support + 27 | #+----------------+ 28 | #+--- tmux-prefix-highlight ---+ 29 | set -g @prefix_highlight_fg black 30 | set -g @prefix_highlight_bg brightcyan 31 | 32 | #+---------+ 33 | #+ Options + 34 | #+---------+ 35 | set -g status-interval 1 36 | set -g status on 37 | 38 | #+--------+ 39 | #+ Status + 40 | #+--------+ 41 | #+--- Layout ---+ 42 | set -g status-justify left 43 | 44 | #+--- Colors ---+ 45 | set -g status-bg black 46 | set -g status-fg white 47 | set -g status-attr none 48 | 49 | #+-------+ 50 | #+ Panes + 51 | #+-------+ 52 | set -g pane-border-bg black 53 | set -g pane-border-fg black 54 | set -g pane-active-border-bg black 55 | set -g pane-active-border-fg brightblack 56 | set -g display-panes-colour black 57 | set -g display-panes-active-colour brightblack 58 | 59 | #+------------+ 60 | #+ Clock Mode + 61 | #+------------+ 62 | setw -g clock-mode-colour cyan 63 | 64 | #+----------+ 65 | #+ Messages + 66 | #+---------+ 67 | set -g message-fg cyan 68 | set -g message-bg brightblack 69 | set -g message-command-fg cyan 70 | set -g message-command-bg brightblack 71 | 72 | 73 | #+----------------+ 74 | #+ Plugin Support + 75 | #+----------------+ 76 | #+--- tmux-prefix-highlight ---+ 77 | set -g @prefix_highlight_output_prefix "#[fg=brightcyan]#[bg=black]#[nobold]#[noitalics]#[nounderscore]#[bg=brightcyan]#[fg=black]" 78 | set -g @prefix_highlight_output_suffix "" 79 | set -g @prefix_highlight_copy_mode_attr "fg=brightcyan,bg=black,bold" 80 | 81 | #+--------+ 82 | #+ Status + 83 | #+--------+ 84 | #+--- Bars ---+ 85 | #set -g status-left "#[fg=black,bg=blue,bold] #S#[fg=blue,bg=black,nobold,noitalics,nounderscore]" 86 | set -g status-left "#[fg=black,bg=blue,bold] #S #[fg=blue,bg=black,nobold,noitalics,nounderscore]" 87 | set -g status-right "#{prefix_highlight}#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %Y-%m-%d #[fg=white,bg=brightblack,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %H:%M #[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore]#[fg=black,bg=cyan,bold] #H " 88 | 89 | #+--- Windows ---+ 90 | set -g window-status-format "#[fg=black,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#I #[fg=white,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#W #F #[fg=brightblack,bg=black,nobold,noitalics,nounderscore]" 91 | set -g window-status-current-format "#[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#I #[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#W #F #[fg=cyan,bg=black,nobold,noitalics,nounderscore]" 92 | set -g window-status-separator "" 93 | -------------------------------------------------------------------------------- /files/dots/wgetrc: -------------------------------------------------------------------------------- 1 | timestamping = on 2 | no_parent = on 3 | timeout = 10 4 | tries = 3 5 | retry_connrefused = on 6 | trust_server_names = off 7 | follow_ftp = on 8 | adjust_extension = on 9 | robots = off 10 | server_response = on 11 | user_agent = Mozilla/5.0 (Macintosh; Intel Mac OS X 13_3_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 12 | -------------------------------------------------------------------------------- /files/dots/zshrc.zsh: -------------------------------------------------------------------------------- 1 | export OH_MY_ZSH_BASE_DIR=~/.oh-my-zsh 2 | 3 | if ! [ -d "$OH_MY_ZSH_BASE_DIR" ]; then 4 | echo "oh-my-zsh installation directory does not exist - ${OH_MY_ZSH_BASE_DIR}" 5 | return 6 | fi 7 | 8 | if ! type "micro" >/dev/null; then 9 | export EDITOR='vim' 10 | else 11 | export EDITOR='micro' 12 | fi 13 | 14 | export VISUAL=$EDITOR 15 | 16 | # shellcheck disable=SC2034 17 | ZSH_THEME='gallois' 18 | 19 | # shellcheck disable=SC2034 20 | plugins=(git git-extras wd zsh-interactive-cd) 21 | 22 | export PATH=${HOME}/.bin:${HOME}/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 23 | 24 | source $OH_MY_ZSH_BASE_DIR/oh-my-zsh.sh 25 | 26 | alias l='ls -lAFh --color=always --group-directories-first' 27 | alias mux='tmuxinator' 28 | 29 | # Functions 30 | function rok { 31 | ssh -A rok.lab.lan 32 | } 33 | 34 | function rokx { 35 | ssh -A rok.lab.lan -t "tmux new-session -A -s remote" 36 | } 37 | 38 | function cd { 39 | builtin cd "$@" && l 40 | } 41 | 42 | # `pod python` gives the latest Python in the current directory 43 | # I can't be bothered to install all the stuff on the host, frankly... 44 | function pod { 45 | IMAGE='fedora' 46 | if [[ $# -ge 1 ]]; then 47 | IMAGE="$1" 48 | shift 49 | fi 50 | 51 | if [[ ! $IMAGE = *":"* ]]; then 52 | IMAGE="${IMAGE}:latest" 53 | fi 54 | 55 | WORKDIR=$(pwd) 56 | 57 | if [[ $# -eq 0 ]]; then 58 | set -- '/bin/bash' "$@" 59 | fi 60 | 61 | podman run \ 62 | --pull=newer \ 63 | --rm \ 64 | -ti \ 65 | -P \ 66 | --entrypoint="" \ 67 | -v "${WORKDIR}":/host:z \ 68 | -w /host \ 69 | "$IMAGE" \ 70 | "$@" 71 | } 72 | 73 | function podd { 74 | WORKDIR=$(pwd) 75 | 76 | podman run \ 77 | --pull=newer \ 78 | --rm \ 79 | -ti \ 80 | -P \ 81 | --entrypoint="" \ 82 | -v "${WORKDIR}":/host:z \ 83 | -w /host \ 84 | "$@" 85 | } 86 | 87 | if [[ $UID == 0 || $EUID == 0 ]]; then 88 | export PS1="%{$fg[cyan]%}[%~% ]%{$FG[202]%}[root]%(?.%{$fg[green]%}.%{$fg[red]%})%B$%b " 89 | fi 90 | 91 | export PS1="%{%F{39}%}[%M]%F{default}$PS1" 92 | 93 | zstyle ':completion::complete:make::' tag-order targets variables 94 | 95 | export GPG_TTY=$TTY 96 | -------------------------------------------------------------------------------- /files/fonts/01_LICENSE.IBM-PLEX-SANS.txt: -------------------------------------------------------------------------------- 1 | Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | http://scripts.sil.org/OFL 6 | 7 | ----------------------------------------------------------- 8 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 9 | ----------------------------------------------------------- 10 | 11 | PREAMBLE 12 | The goals of the Open Font License (OFL) are to stimulate worldwide 13 | development of collaborative font projects, to support the font creation 14 | efforts of academic and linguistic communities, and to provide a free and 15 | open framework in which fonts may be shared and improved in partnership 16 | with others. 17 | 18 | The OFL allows the licensed fonts to be used, studied, modified and 19 | redistributed freely as long as they are not sold by themselves. The 20 | fonts, including any derivative works, can be bundled, embedded, 21 | redistributed and/or sold with any software provided that any reserved 22 | names are not used by derivative works. The fonts and derivatives, 23 | however, cannot be released under any other type of license. The 24 | requirement for fonts to remain under this license does not apply 25 | to any document created using the fonts or their derivatives. 26 | 27 | DEFINITIONS 28 | "Font Software" refers to the set of files released by the Copyright 29 | Holder(s) under this license and clearly marked as such. This may 30 | include source files, build scripts and documentation. 31 | 32 | "Reserved Font Name" refers to any names specified as such after the 33 | copyright statement(s). 34 | 35 | "Original Version" refers to the collection of Font Software components as 36 | distributed by the Copyright Holder(s). 37 | 38 | "Modified Version" refers to any derivative made by adding to, deleting, 39 | or substituting -- in part or in whole -- any of the components of the 40 | Original Version, by changing formats or by porting the Font Software to a 41 | new environment. 42 | 43 | "Author" refers to any designer, engineer, programmer, technical 44 | writer or other person who contributed to the Font Software. 45 | 46 | PERMISSION & CONDITIONS 47 | Permission is hereby granted, free of charge, to any person obtaining 48 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 49 | redistribute, and sell modified and unmodified copies of the Font 50 | Software, subject to the following conditions: 51 | 52 | 1) Neither the Font Software nor any of its individual components, 53 | in Original or Modified Versions, may be sold by itself. 54 | 55 | 2) Original or Modified Versions of the Font Software may be bundled, 56 | redistributed and/or sold with any software, provided that each copy 57 | contains the above copyright notice and this license. These can be 58 | included either as stand-alone text files, human-readable headers or 59 | in the appropriate machine-readable metadata fields within text or 60 | binary files as long as those fields can be easily viewed by the user. 61 | 62 | 3) No Modified Version of the Font Software may use the Reserved Font 63 | Name(s) unless explicit written permission is granted by the corresponding 64 | Copyright Holder. This restriction only applies to the primary font name as 65 | presented to the users. 66 | 67 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 68 | Software shall not be used to promote, endorse or advertise any 69 | Modified Version, except to acknowledge the contribution(s) of the 70 | Copyright Holder(s) and the Author(s) or with their explicit written 71 | permission. 72 | 73 | 5) The Font Software, modified or unmodified, in part or in whole, 74 | must be distributed entirely under this license, and must not be 75 | distributed under any other license. The requirement for fonts to 76 | remain under this license does not apply to any document created 77 | using the Font Software. 78 | 79 | TERMINATION 80 | This license becomes null and void if any of the above conditions are 81 | not met. 82 | 83 | DISCLAIMER 84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 88 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 92 | OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /files/fonts/01_LICENSE.IBM-PLEX-SERIF.txt: -------------------------------------------------------------------------------- 1 | Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | http://scripts.sil.org/OFL 6 | 7 | ----------------------------------------------------------- 8 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 9 | ----------------------------------------------------------- 10 | 11 | PREAMBLE 12 | The goals of the Open Font License (OFL) are to stimulate worldwide 13 | development of collaborative font projects, to support the font creation 14 | efforts of academic and linguistic communities, and to provide a free and 15 | open framework in which fonts may be shared and improved in partnership 16 | with others. 17 | 18 | The OFL allows the licensed fonts to be used, studied, modified and 19 | redistributed freely as long as they are not sold by themselves. The 20 | fonts, including any derivative works, can be bundled, embedded, 21 | redistributed and/or sold with any software provided that any reserved 22 | names are not used by derivative works. The fonts and derivatives, 23 | however, cannot be released under any other type of license. The 24 | requirement for fonts to remain under this license does not apply 25 | to any document created using the fonts or their derivatives. 26 | 27 | DEFINITIONS 28 | "Font Software" refers to the set of files released by the Copyright 29 | Holder(s) under this license and clearly marked as such. This may 30 | include source files, build scripts and documentation. 31 | 32 | "Reserved Font Name" refers to any names specified as such after the 33 | copyright statement(s). 34 | 35 | "Original Version" refers to the collection of Font Software components as 36 | distributed by the Copyright Holder(s). 37 | 38 | "Modified Version" refers to any derivative made by adding to, deleting, 39 | or substituting -- in part or in whole -- any of the components of the 40 | Original Version, by changing formats or by porting the Font Software to a 41 | new environment. 42 | 43 | "Author" refers to any designer, engineer, programmer, technical 44 | writer or other person who contributed to the Font Software. 45 | 46 | PERMISSION & CONDITIONS 47 | Permission is hereby granted, free of charge, to any person obtaining 48 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 49 | redistribute, and sell modified and unmodified copies of the Font 50 | Software, subject to the following conditions: 51 | 52 | 1) Neither the Font Software nor any of its individual components, 53 | in Original or Modified Versions, may be sold by itself. 54 | 55 | 2) Original or Modified Versions of the Font Software may be bundled, 56 | redistributed and/or sold with any software, provided that each copy 57 | contains the above copyright notice and this license. These can be 58 | included either as stand-alone text files, human-readable headers or 59 | in the appropriate machine-readable metadata fields within text or 60 | binary files as long as those fields can be easily viewed by the user. 61 | 62 | 3) No Modified Version of the Font Software may use the Reserved Font 63 | Name(s) unless explicit written permission is granted by the corresponding 64 | Copyright Holder. This restriction only applies to the primary font name as 65 | presented to the users. 66 | 67 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 68 | Software shall not be used to promote, endorse or advertise any 69 | Modified Version, except to acknowledge the contribution(s) of the 70 | Copyright Holder(s) and the Author(s) or with their explicit written 71 | permission. 72 | 73 | 5) The Font Software, modified or unmodified, in part or in whole, 74 | must be distributed entirely under this license, and must not be 75 | distributed under any other license. The requirement for fonts to 76 | remain under this license does not apply to any document created 77 | using the Font Software. 78 | 79 | TERMINATION 80 | This license becomes null and void if any of the above conditions are 81 | not met. 82 | 83 | DISCLAIMER 84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 88 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 92 | OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /files/fonts/01_LICENSE.JETBRAINS-MONO.txt: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-Bold.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-BoldItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-ExtraLight.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-Light.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-LightItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-Medium.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-MediumItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-Regular.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-SemiBold.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-Text.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-Text.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-TextItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-TextItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-Thin.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSans-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSans-ThinItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-Bold.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-BoldItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-ExtraLight.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-Light.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-LightItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-Medium.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-MediumItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-Regular.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-SemiBold.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-Text.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-Text.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-TextItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-TextItalic.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-Thin.ttf -------------------------------------------------------------------------------- /files/fonts/IBMPlexSerif-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/IBMPlexSerif-ThinItalic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Bold-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Bold-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Bold.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-BoldItalic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-ExtraBold-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-ExtraBold-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-ExtraBold.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-ExtraLight-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-ExtraLight-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-ExtraLight.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Light-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Light-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Light.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-LightItalic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Medium-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Medium-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Medium.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-MediumItalic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Regular.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-SemiBold.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-SemiLight-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-SemiLight-Italic.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-SemiLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-SemiLight.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-Thin.ttf -------------------------------------------------------------------------------- /files/fonts/JetBrainsMono-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/fonts/JetBrainsMono-ThinItalic.ttf -------------------------------------------------------------------------------- /files/id_rsa.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCoLG3WPkrxwAmbVZKf5bffLiREPi0/YHezYu342OVhjokklmdXm1TcqW3WXDChDB83qaZ4KEbP2aqqwpJNwIv8hz6njFTYgqRyjNFKtTmlTEBSzel225pbm8Rt0B4I4ghJdw84JY6wxMLSkhtF0QsjzW6RcJH4YD+K+8GRH+qA3XL4JeTspB5W94gTsBoTq+wIwi4Ph3U0yfsQ6iozvoi+9OiuXWm1YnoVJ74mFMBQXlR3W1gu+fGu5EYyCUrqgxbwjpcO+7c8GPZ8dF/SbmzIfcvqCL6I5jIWunIrNALNlLC6TJHFp9hs1/TkJa/N+sB4JgLr58aqb1+kyiF9fdr4fDgVFLM6Ij/QD1aSXfxJXoihiDVFBXUTf/vgzALbhwxQXFrA65gu5YfIDZTOxBRSq8FtCLlLXfNA4Cp3lk6oec3WN6z9te9VFORXCQzBYa/oi7OMIQQDkSMR3JpsdXUBcijxK9Y2r6NDwEJINlyyYyPfs5lepu64yube2a9TeXAQP7DPULrGsHo8bNoSJakqoBtT/vg5zwNyzfBxlhNMcEuyYjBG+80mmMsOg6D6G3Zipu9SyDmIMvK3p1w6VeUBp7XogvHLECISdWxYYjpWGv0O88fblu9gsZeFY9LJ4JQ1sZaUaQyFF6UxMhr/qwmNslF4HM/hsHZ9SCDr5a0g1w== matiss@hub256.com 2 | -------------------------------------------------------------------------------- /files/menu-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 38 | 42 | 43 | -------------------------------------------------------------------------------- /files/plymouthd.conf: -------------------------------------------------------------------------------- 1 | [Daemon] 2 | Theme=details 3 | -------------------------------------------------------------------------------- /files/wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/files/wallpaper.jpg -------------------------------------------------------------------------------- /inventory/hosts: -------------------------------------------------------------------------------- 1 | [workstation] 2 | localhost ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3 3 | 4 | [workstation-headless] 5 | localhost ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3 6 | -------------------------------------------------------------------------------- /screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Addvilz/dots/42ca535bb85f7fa58705d55a7394b653db228883/screen.png -------------------------------------------------------------------------------- /scripts/oh-my-zsh-setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script should be run via curl: 4 | # sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 5 | # or via wget: 6 | # sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 7 | # or via fetch: 8 | # sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 9 | # 10 | # As an alternative, you can first download the install script and run it afterwards: 11 | # wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh 12 | # sh install.sh 13 | # 14 | # You can tweak the install behavior by setting variables when running the script. For 15 | # example, to change the path to the Oh My Zsh repository: 16 | # ZSH=~/.zsh sh install.sh 17 | # 18 | # Respects the following environment variables: 19 | # ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh) 20 | # REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh) 21 | # REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS) 22 | # BRANCH - branch to check out immediately after install (default: master) 23 | # 24 | # Other options: 25 | # CHSH - 'no' means the installer will not change the default shell (default: yes) 26 | # RUNZSH - 'no' means the installer will not run zsh after the install (default: yes) 27 | # KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no) 28 | # 29 | # You can also pass some arguments to the install script to set some these options: 30 | # --skip-chsh: has the same behavior as setting CHSH to 'no' 31 | # --unattended: sets both CHSH and RUNZSH to 'no' 32 | # --keep-zshrc: sets KEEP_ZSHRC to 'yes' 33 | # For example: 34 | # sh install.sh --unattended 35 | # or: 36 | # sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended 37 | # 38 | set -e 39 | 40 | # Track if $ZSH was provided 41 | custom_zsh=${ZSH:+yes} 42 | 43 | # Default settings 44 | ZSH=${ZSH:-~/.oh-my-zsh} 45 | REPO=${REPO:-ohmyzsh/ohmyzsh} 46 | REMOTE=${REMOTE:-https://github.com/${REPO}.git} 47 | BRANCH=${BRANCH:-master} 48 | 49 | # Other options 50 | CHSH=${CHSH:-yes} 51 | RUNZSH=${RUNZSH:-yes} 52 | KEEP_ZSHRC=${KEEP_ZSHRC:-no} 53 | 54 | 55 | command_exists() { 56 | command -v "$@" >/dev/null 2>&1 57 | } 58 | 59 | fmt_error() { 60 | printf '%sError: %s%s\n' "$BOLD$RED" "$*" "$RESET" >&2 61 | } 62 | 63 | fmt_underline() { 64 | printf '\033[4m%s\033[24m\n' "$*" 65 | } 66 | 67 | fmt_code() { 68 | # shellcheck disable=SC2016 # backtic in single-quote 69 | printf '`\033[38;5;247m%s%s`\n' "$*" "$RESET" 70 | } 71 | 72 | setup_color() { 73 | # Only use colors if connected to a terminal 74 | if [ -t 1 ]; then 75 | RED=$(printf '\033[31m') 76 | GREEN=$(printf '\033[32m') 77 | YELLOW=$(printf '\033[33m') 78 | BLUE=$(printf '\033[34m') 79 | BOLD=$(printf '\033[1m') 80 | RESET=$(printf '\033[m') 81 | else 82 | RED="" 83 | GREEN="" 84 | YELLOW="" 85 | BLUE="" 86 | BOLD="" 87 | RESET="" 88 | fi 89 | } 90 | 91 | setup_ohmyzsh() { 92 | # Prevent the cloned repository from having insecure permissions. Failing to do 93 | # so causes compinit() calls to fail with "command not found: compdef" errors 94 | # for users with insecure umasks (e.g., "002", allowing group writability). Note 95 | # that this will be ignored under Cygwin by default, as Windows ACLs take 96 | # precedence over umasks except for filesystems mounted with option "noacl". 97 | umask g-w,o-w 98 | 99 | echo "${BLUE}Cloning Oh My Zsh...${RESET}" 100 | 101 | command_exists git || { 102 | fmt_error "git is not installed" 103 | exit 1 104 | } 105 | 106 | ostype=$(uname) 107 | if [ -z "${ostype%CYGWIN*}" ] && git --version | grep -q msysgit; then 108 | fmt_error "Windows/MSYS Git is not supported on Cygwin" 109 | fmt_error "Make sure the Cygwin git package is installed and is first on the \$PATH" 110 | exit 1 111 | fi 112 | 113 | git clone -c core.eol=lf -c core.autocrlf=false \ 114 | -c fsck.zeroPaddedFilemode=ignore \ 115 | -c fetch.fsck.zeroPaddedFilemode=ignore \ 116 | -c receive.fsck.zeroPaddedFilemode=ignore \ 117 | --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { 118 | fmt_error "git clone of oh-my-zsh repo failed" 119 | exit 1 120 | } 121 | 122 | echo 123 | } 124 | 125 | setup_zshrc() { 126 | # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones 127 | # with datestamp of installation that moved them aside, so we never actually 128 | # destroy a user's original zshrc 129 | echo "${BLUE}Looking for an existing zsh config...${RESET}" 130 | 131 | # Must use this exact name so uninstall.sh can find it 132 | OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh 133 | if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then 134 | # Skip this if the user doesn't want to replace an existing .zshrc 135 | if [ "$KEEP_ZSHRC" = yes ]; then 136 | echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" 137 | return 138 | fi 139 | if [ -e "$OLD_ZSHRC" ]; then 140 | OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" 141 | if [ -e "$OLD_OLD_ZSHRC" ]; then 142 | fmt_error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" 143 | fmt_error "re-run the installer again in a couple of seconds" 144 | exit 1 145 | fi 146 | mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}" 147 | 148 | echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ 149 | "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" 150 | fi 151 | echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" 152 | mv ~/.zshrc "$OLD_ZSHRC" 153 | fi 154 | 155 | echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}" 156 | 157 | sed "/^export ZSH=/ c\\ 158 | export ZSH=\"$ZSH\" 159 | " "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp 160 | mv -f ~/.zshrc-omztemp ~/.zshrc 161 | 162 | echo 163 | } 164 | 165 | setup_shell() { 166 | # Skip setup if the user wants or stdin is closed (not running interactively). 167 | if [ "$CHSH" = no ]; then 168 | return 169 | fi 170 | 171 | # If this user's login shell is already "zsh", do not attempt to switch. 172 | if [ "$(basename -- "$SHELL")" = "zsh" ]; then 173 | return 174 | fi 175 | 176 | # If this platform doesn't provide a "chsh" command, bail out. 177 | if ! command_exists chsh; then 178 | cat < ~/.shell.pre-oh-my-zsh 229 | else 230 | grep "^$USERNAME:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh 231 | fi 232 | 233 | # Actually change the default shell to zsh 234 | if ! chsh -s "$zsh"; then 235 | fmt_error "chsh command unsuccessful. Change your default shell manually." 236 | else 237 | export SHELL="$zsh" 238 | echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" 239 | fi 240 | 241 | echo 242 | } 243 | 244 | main() { 245 | # Run as unattended if stdin is not a tty 246 | if [ ! -t 0 ]; then 247 | RUNZSH=no 248 | CHSH=no 249 | fi 250 | 251 | # Parse arguments 252 | while [ $# -gt 0 ]; do 253 | case $1 in 254 | --unattended) RUNZSH=no; CHSH=no ;; 255 | --skip-chsh) CHSH=no ;; 256 | --keep-zshrc) KEEP_ZSHRC=yes ;; 257 | esac 258 | shift 259 | done 260 | 261 | setup_color 262 | 263 | if ! command_exists zsh; then 264 | echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." 265 | exit 1 266 | fi 267 | 268 | if [ -d "$ZSH" ]; then 269 | echo "${YELLOW}The \$ZSH folder already exists ($ZSH).${RESET}" 270 | if [ "$custom_zsh" = yes ]; then 271 | cat <