{"id":13342520,"url":"https://github.com/camalot/symmetry","last_synced_at":"2025-07-28T18:31:21.096Z","repository":{"id":148329701,"uuid":"93866011","full_name":"camalot/symmetry","owner":"camalot","description":"A set of dotFiles that I use on all 'bash' enabled machines.","archived":false,"fork":false,"pushed_at":"2020-05-26T15:04:22.000Z","size":309,"stargazers_count":5,"open_issues_count":3,"forks_count":1,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2024-10-24T12:12:50.038Z","etag":null,"topics":["bash","dotfiles","shell","wsl"],"latest_commit_sha":null,"homepage":"","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/camalot.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}},"created_at":"2017-06-09T14:18:17.000Z","updated_at":"2020-05-26T15:04:25.000Z","dependencies_parsed_at":"2023-05-19T19:30:28.160Z","dependency_job_id":null,"html_url":"https://github.com/camalot/symmetry","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/camalot%2Fsymmetry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camalot%2Fsymmetry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camalot%2Fsymmetry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camalot%2Fsymmetry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camalot","download_url":"https://codeload.github.com/camalot/symmetry/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227941943,"owners_count":17844683,"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":["bash","dotfiles","shell","wsl"],"created_at":"2024-07-29T19:29:30.418Z","updated_at":"2024-12-03T15:18:10.701Z","avatar_url":"https://github.com/camalot.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Symmetry\n\nThe purpose of this is to create a consistent bash experience across multiple devices that run bash; MacOS, Ubuntu, Raspbian, Windows 10 (WSL).\n\nThis was initially inspired by [Mathias Bynens' dotfiles](https://github.com/mathiasbynens/dotfiles).\n\n`This is a WIP and is how I set up my systems but could be used for your systems.`\n\n### INSTALL\n\n```\n$ git clone https://github.com/camalot/symmetry.git \u0026\u0026 cd symmetry \u0026\u0026 bash bootstrap.sh\n```\n\nRun the system application install (bundle is optional).\n```\n$ symmetry install [bundle]\n```\n\nRun the initialization scripts (this happens automatically when bootstrapped).\n```\n$ symmetry init\n```\n\nSet the prompt to one of the defined prompts (currently only `default`).\n```\n$ symmetry set-prompt [prompt]\n```\n\nGet the prompt that is currently loaded by Symmetry.\n```\n$ symmetry get-prompt\n```\n\nList out the available action groups, or actions in a group available for `load`.\n```\n$ symmetry list [action_group]\n```\n\nLoad an action group, or a single action in a group\n```\n$ symmetry load action_group [action]\n```\n\n### ALIASES\n\n- #### NAVIGATION\n\t- `..` : `cd ..`\n\t- `...` : `cd ../..`\n\t- `....` : `cd ../../..`\n\t- `.....` : `cd ../../../..`\n\t- `~` : `cd ~`\n\t- `-` : `cd -`\n- #### SHORTCUTS\n\t- `dl` : `~/Downloads`\n\t- `dt` : `~/Desktop`\n\t- `dev` : `~/Development`\n\t- `g` : `git`\n\t- `got` : `git`\n\t- `gitpush` : `git push` _This exists because I constantly type this without the space._\n\t- `nom` : `npm`\n\t- `h` : `history`\n\t- `j` : `jobs`\n\t- `n` : `nano`\n\t- `epoch` : _unix time_\n\t- `version` : _bash version_\n\t- `reload` : _reload the login shell_\n\t- `path` : _list all paths in `$PATH`_\n\t- `map` : _intuitive mapping function_\n\t- `update` : _run system updates (varies per system)_\n\t- `whatsmyip` : _get public ip address_\n\t- `ips` : _get ip addresses_\n\t- `ifactive` : _show active network interfaces_\n\t- `urlencode` : _url encode a string_\n\t- `week` : _get week number_\n\t- `timer` : _a stop watch_\n\t- `sniff` : _view http traffic_\n\t- `httpdump` : _dump http traffic_\n\n### COMPLETIONS\n- `adb`\n- `repo`\n- `awscli`\n- `bash`\n- `brew`\n- `bundler`\n- `defaults`\n- `docker`\n- `docker-compose`\n- `docker-machine`\n- `dotnet`\n- `gem`\n- `git`\n- `git-flow`\n- `gradle`\n- `grunt`\n- `gulp`\n- `hub`\n- `kubectl`\n- `makefile`\n- `maven`\n- `npm`\n- `nvm`\n- `packer`\n- `pip`\n- `pip3`\n- `powershell`\n- `rake`\n- `sdkman`\n- `ssh`\n- `symmetry`\n- `terraform`\n- `test-kitchen`\n- `vagrant`\n- `vault`\n- `virtualbox`\n- `virtualenv`\n\n### EXTRAS\n\nExtras are a set of scripts that you can use to configure your system for settings that you do not want checked in to source control.\n\nOnly `extras/default.bash` is checked in to source, everything else in this directory is ignored.\n\nExample:\n\n`extras/git.bash`\n```\ngit config --global user.name \"John Q. Public\";\ngit config --global user.email \"john.q.public9999@gmail.com\";\n```\n\n### FUNCTIONS\n\n### PROMPTS\n\n### INITIALIZERS\n\nInitializers run on bootstrap, and on launch of bash shell. This can be used to do initalization of symlinks or making sure that ruby environment is configured. `system.*.bash`, `default.bash`, and `*.default.bash` will *NOT* run automatically\n\n\n\n### INSTALLS\n- CKB NEXT (macOS)\n- dotnet\n- bash\n- nodejs\n- octoprint (raspberry pi)\n- powershell\n- python3\n- ruby\n- screenfetch\n- sdkman\n- [subsonic](http://subsonic.org) (music streaming server)\n- tldr\n- webmin (only tested on raspberry pi)\n\n### FEATURES\n\n- `git` repository aware prompt\n```\nryan@bane ~/Development/projects/github/symmetry [develop 1↑]\n$\n```\n- `npm module` aware prompt\n```\nryan@bane ~/Development/projects/github/osiris [osiris v1.0.0-alpha1] [develop ≡]\n$\n```\n- `extras/*` (expect for `.default.bash`) are gitignored so you can create additional scripts that may contain things you don't want to check in to git.\n- system scripts can be loaded based on the envrionment (windows, macos, rasbian, etc)\n- Create `~/.symmetry/initializers/.authorized_keys` file and put your public keys in there that you want to have added to `~/.ssh/authorized_keys`. (this file is git ignored)\n\n#### WINDOWS WSL (Bash on Ubuntu on Windows)\n\n- Get Windows environment variables (prefixed with `WIN_`)\n```\n$ printwinenv\n```\n- Import current Windows environment variables\n```\n$ $(winenv)\n```\n\n- `powershell` interop from native bash\n```\n$ powershell Write-Host \"Hello World\"\nHello World\n$ powershell ~/powershell-scripts/my-ps-file.ps1\n```\n- Get the full `lxss` path of a path within WSL\n```\n$ lxssdir ~\n/mnt/c/Users/rconr/AppData/Local/lxss/home/rconr\n```\n- Convert from a Windows path to WSL path\n```\n$ windir \"c:\\\\Windows\\\\System32\\\\\"\n/mnt/c/Windows/System32/\n```\n- Convert from a WSL (linux) path to Windows path\n```\n$ wsldir /mnt/c/Windows/System32/\nC:\\Windows\\System32\\\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamalot%2Fsymmetry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamalot%2Fsymmetry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamalot%2Fsymmetry/lists"}