{"id":13479288,"url":"https://github.com/rkalis/dotfiles","last_synced_at":"2026-01-07T04:55:34.879Z","repository":{"id":46698590,"uuid":"50424016","full_name":"rkalis/dotfiles","owner":"rkalis","description":"💻 macOS System Configuration with Fish, Package Control, VS Code, Repo management, Hammerspoon","archived":false,"fork":false,"pushed_at":"2022-06-01T16:13:34.000Z","size":557,"stargazers_count":246,"open_issues_count":0,"forks_count":62,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-01T16:55:48.768Z","etag":null,"topics":["dotfiles","fish","hammerspoon","macos"],"latest_commit_sha":null,"homepage":"https://kalis.me/dotfiles-automating-macos-system-configuration/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rkalis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-26T11:20:09.000Z","updated_at":"2024-07-25T18:23:58.000Z","dependencies_parsed_at":"2022-08-12T13:00:53.090Z","dependency_job_id":null,"html_url":"https://github.com/rkalis/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rkalis%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rkalis%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rkalis%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rkalis%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rkalis","download_url":"https://codeload.github.com/rkalis/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222222309,"owners_count":16951426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","fish","hammerspoon","macos"],"created_at":"2024-07-31T16:02:12.869Z","updated_at":"2026-01-07T04:55:34.866Z","avatar_url":"https://github.com/rkalis.png","language":"Shell","readme":"# Dotfiles\n\nFor more information about dotfiles, I wrote these articles on my blog:\n* [Dotfiles: automating macOS system configuration](https://kalis.me/dotfiles-automating-macos-system-configuration/)\n* [Increasing development productivity with repository management](https://kalis.me/increasing-development-productivity-repository-management/)\n* [Set up a Hyper Key with Hammerspoon on macOS](https://kalis.me/setup-hyper-key-hammerspoon-macos/)\n\n## Usage\n1. Generate new SSH keys and add them to your GitHub account\n    1. Alternatively, restore your safely backed up SSH keys to `~/.ssh/`\n2. Install Homebrew and git\n  ```bash\n  /usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"\n  brew install git\n  ```\n3. Clone this repository\n  ```bash\n  git clone git@github.com:rkalis/dotfiles.git\n  ```\n4. Run the `bootstrap.sh` script\n    1. Alternatively, only run the `setup.sh` scripts in specific subfolders if you don't need everything\n5. (Optional) Point your Alfred preference sync to a backed up folder\n6. Login to applications, enter license keys, set preferences\n\n## Customisation\nI strongly encourage you to play around with the configurations, and add or remove features.\nIf you would like to use these dotfiles for yourself, I'd recommend changing at least the following:\n\n#### Git\n* The .gitconfig file includes my [user] config, replace these with your own user name and email\n\n#### OSX\n* At the top of the setup.sh file, my computer name is set, replace this with your own computer name\n\n#### Packages\nThis folder is a collection of the programs and utilities I use frequently. These lists can easily be amended to your liking.\n\n#### Repos\nThis folder is a collection of my own repos, some of which are even private. The existing lists can easily be edited or replaced by custom lists.\n\n## Contents\n### Root (/)\n* bootstrap.sh - Calls all setup.sh scripts\n\n### User Bin (bin/)\n* setup.sh - Symlinks the other contents of the folder to `~/bin/`\n* imgcat - A utility to display images inline in iTerm 2\n* sethidden - A shell script which takes command line arguments to show or hide hidden files\n* togglehidden - A shell script that toggles between showing and hiding hidden files\n\n### Duti (duti/)\n* setup.sh - Sets the defaults set up in the different files\n* app.package.id - Contains all extensions for the specified program\n\n### Fish (fish/)\n* setup.sh - Symlinks all fish files to their corresponding location in `~/.config/fish/`\n* config.fish - Global fish configuration (.fishrc)\n* fishfile - List of `fisher` plugins\n* completions/\n  * repo.fish - Contains all repos as completions for the `repo` command\n  * repodir.fish - Contains all repos as completions for the `repodir` command\n* functions/\n  * abbrex.fish - Utility for expanding abbreviations in fish-scripts\n  * clear.fish - Clears the screen and shows fish_greeting\n  * emptytrash.fish - Empties trash and clears system logs\n  * fish_greeting.fish - Fish greeting with fish logo\n  * fish_prompt.fish - The Classic + Git prompt from the fish web config\n  * fisher.fish - Fish plugin manager\n  * forrepos.fish - Executes a passed command for all repos in `~/repos`\n  * ls.fish - Calling ls with parameter --color=auto\n  * manp.fish - Open a man page in Preview\n  * mvnpurge.fish - Purge local mvn repository\n  * pubkey.fish - Copies the SSH public key to the clipboard\n  * repo.fish - Finds a repository in `~/repos` and jumps to it\n  * repodir.fish - Finds a repository in `~/repos` and prints its path\n  * setup.fish - Initial setup for a new fish installation, contains abbreviations\n  * update.fish - Installs OS X Software Updates, updates Ruby gems, Homebrew, npm, and their installed packages\n  * week.fish - Returns the current week number\n\n### Git (git/)\n* setup.sh - Symlinks all git files to `~/`\n* .gitignore_global - Contains global gitignores, such as OS-specific files and several compiled files\n* .gitconfig - Sets several global Git variables\n\n### Hammerspoon (hammerspoon/)\n* setup.sh - Symlinks all lua and AppleScript files to `~/.hammerspoon/`\n* init.lua - Contains the main Hammerspoon config, importing the others\n* bluetooth.lua - Toggles Bluetooth headset connection\n* caffeinate.lua - Shortcuts for managing screen state (locking, etc.)\n* connect_headphones.applescript - Toggles Bluetooth headset connection\n* hyper.lua - Binds the \"F18\" key to a Hyper mode, which can be used for global commands\n* minimising.lua - Shortcuts for minimising and unminimising windows\n* shortcuts.lua - Hyper key bindings to existing shortcuts\n* spectacle.lua - Window and monitor management using hyper mode\n\n### Karabiner (karabiner/)\n* setup.sh - Symlinks Karabiner settings to `~/.config/karabiner`\n* karabiner.json - Binds the CAPS LOCK key to \"F18\" to use with hammerspoon\n\n### macOS Preferences (macos/)\n* setup.sh - Executes a long list of commands pertaining to macOS Preferences\n\n### Packages (packages/)\n* setup.sh - Installs the contents of the .list files and the Brewfile\n\n### Repositories (repos/)\n* setup.sh - Clones the repositories in the .list files at the corresponding locations\n\n### Helper Scripts (scripts/)\n* functions.sh - Contains helper functions for symlinking files and printing progress messages\n\n### Vim (vim/)\n* setup.sh - Symlinks all vim files to `~/`\n* .vimrc - Basic Vim configuration\n\n### Visual Studio Code (vscode/)\n* setup.sh - Symlinks the settings.json file to `~/Library/Application Support/Code/User`\n* settings.json - Contains user settings for Visual Studio Code\n","funding_links":[],"categories":["Shell","Example dotfiles repos"],"sub_categories":["Fish"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frkalis%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frkalis%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frkalis%2Fdotfiles/lists"}