{"id":19112046,"url":"https://github.com/airtasker/dotfiles","last_synced_at":"2025-10-06T21:42:40.624Z","repository":{"id":148121653,"uuid":"535468015","full_name":"airtasker/dotfiles","owner":"airtasker","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-13T01:16:23.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":29,"default_branch":"main","last_synced_at":"2025-06-13T01:39:36.936Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/airtasker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-09-12T01:01:30.000Z","updated_at":"2025-06-13T01:16:21.000Z","dependencies_parsed_at":"2024-02-09T03:31:01.933Z","dependency_job_id":"e2e78e23-d60f-4198-ae82-9410a556d636","html_url":"https://github.com/airtasker/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/airtasker/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airtasker%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airtasker%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airtasker%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airtasker%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/airtasker","download_url":"https://codeload.github.com/airtasker/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airtasker%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278686634,"owners_count":26028325,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-09T04:31:17.507Z","updated_at":"2025-10-06T21:42:40.619Z","avatar_url":"https://github.com/airtasker.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Airtasker dotfiles\n\nThe Airtasker dotfiles is a simple repo that installs a selection of standard tools and also symlinks standard configuration files to system\n\n## Setup\nThis is a quick guide to get your setup up and running!\n\n1. Run bootstrap.sh script\n    ```\n    zsh -c \"$(curl -fsSL https://raw.githubusercontent.com/airtasker/dotfiles/main/bootstrap.sh)\"\n    ```\n2. Enter Github Email and Github Personal Access Token (classic)\n    \n    The script will prompt the user for their Github email. Once entered, the data is saved in ```~/environment/environment.zsh``` so that you don't need to be prompted again\n    \n    The script will also ask for a Github Personal Access Token (classic) which can be added here: https://github.com/settings/tokens\n    The minimum required scope is:\n      ```\n      repo\n      read:org\n      write:public_key\n      admin:ssh_signing_key\n      read:packages\n      ```\n    Althogh more permissions may be useful if you plan to use the ```gh``` cli for other functions      \n\n3. Set ZSH_THEME to and configure P10K\n\n    Check `~/.zshrc` and make sure the `ZSH_THEME` is correct\n    ```\n    ...\n    export ZSH_THEME=\"powerlevel10k/powerlevel10k\"\n    ...\n    ```\n    Open iTerm2 and run the commands below\n    ```\n    source ~/.zshrc\n    p10k configure\n    ```\n\n4. Post Install steps\n    To install default asdf versions and other common brew packages\n    ```\n    install_asdf_defaults\n    install_brew_defaults\n    ```\n\n### Adding variables, aliases and functions\nYour ZSH environment will automatically scan any files ending with ```.sh``` ```.zsh``` ```.rc``` in your ```~/environment``` directory. So if you need to add a new environment variable, ensure it exists in ```~/environment```. \n\nA couple empty files have already been added like ```~/environment/aliases.zsh``` ready to receive your own aliases and functions. These files won't be tracked in git so you can use them to store secrets and other variables. \n\nFor instance, I can edit ```~/environment/environment.zsh``` with \n```\nexport RANDOM_KEY=verysecure\n```\nYou can open a new terminal or ```source ~/.zshrc``` then that variable will be sourced in your environment\n\nIf you do edit files in ```~/environment/dotfiles``` then those will be tracked by github as those have been symlinked to that directory from this repository.\n\n### Using asdf \n```asdf``` is one of the tools installed by the bootstrap script. \nasdf is a version manager designed to support many different tools making it the one version manager to rule them all! \nasdf is really simple, first you need to make sure you have the plugin of the tool you want to install.\n\ne.g. To install nodejs version 18.9.0 just run the following. \n```\nasdf plugin add nodejs\nasdf install nodejs 18.9.0\nasdf set --home nodejs 18.9.0\n```\nRunning ```asdf set --home``` or ```asdf set -u``` command will edit the ```~/.tool-versions``` file which contains the default versions for your system. \n\nRunning ```asdf set``` will edit your current directory's ```.tool-versions``` file. Every time you change directory, asdf will check if a ```.tool-versions``` file exists, and if it does will use the versions defined in that file. This is useful for setting versions of tools across different projects.\n\nIf you enter a directory which has a ```.tool-versions``` file like this and then run ```asdf install``` it will check that file and install the versions defined here allowing you to get setup quickly\n```\nnodejs 18.9.0\nruby 3.1.2\n```\n\n\n### What does bootstrap script do? \nThe bootstrap.sh sets up your mac for first use\n* It installs brew and then uses brew to install more tools found in ```Brewfile```. \n* Creates new SSH key and uses the ```gh``` command line tool to add that key to your github account. (Script will prompt for Github Personal Access Token)\n* Installs the ```asdf``` version manager tool and also installs the latest version of these tools\n    * golang \n    * kubectl \n    * nodejs \n    * python \n    * ruby \n    * terraform\n* Installs oh-my-zsh and powerlevel10k to make your terminal look great!\n* Installs NvChad to make your vim spectactular\n* Installs a great default tmux config \n\n### Dotfiles Structure\nThe dotfiles are powered by a tool called `stow`.\nstow is a simple tool that creates symlinks of folders in the current directory and links them to the parent directory. \n\nThe first directory like `asdf` is considered a package, and the files/folders in this directory are symlinked to the parent directory by default. So files like `asdf/.asdfrc` will be symlinked to `~/.asdfrc`. This is assuming this repo has been cloned to the home directory `~/dotfiles`\n\nstow also manages directories, so if the configuration file needs to be symlinked into another directory, you can include those files by placing them in the expected directory structure. For instance, looking at the `environment` package, we have a file like `environment/environment/dotfiles/aliases.zsh` which will get symlinked to `~/environment/dotfiles/aliases.zsh`\n\n**Source structure** ~/dotfiles\n```\n├── asdf\n│   └── .asdfrc\n├── dotfiles\n|   ├── .editorconfig\n│   └── .hushlogin\n├── environment\n│   └── environment\n│       └── dotfiles\n|           ├── aliases.zsh\n|           ├── environment.zsh\n|           └── functions.zsh\n```\n**Output structure** ~ (home directory)\n```\n├── .asdfrc\n|── .editorconfig\n│── .hushlogin\n│── environment\n│   └── dotfiles\n|       ├── aliases.zsh\n|       ├── environment.zsh\n|       └── functions.zsh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairtasker%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fairtasker%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairtasker%2Fdotfiles/lists"}