{"id":17491970,"url":"https://github.com/alejandrosuero/.dotfiles","last_synced_at":"2025-04-15T06:48:36.188Z","repository":{"id":226240029,"uuid":"768134578","full_name":"AlejandroSuero/.dotfiles","owner":"AlejandroSuero","description":"My configuration files, using anisble for cross-platform managament","archived":false,"fork":false,"pushed_at":"2025-04-11T08:14:22.000Z","size":843,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T06:48:30.357Z","etag":null,"topics":["ansible","ansible-playbook","config","devops","dotfiles","dotfiles-manager","yaml"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/AlejandroSuero.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-03-06T14:32:11.000Z","updated_at":"2025-04-11T08:14:26.000Z","dependencies_parsed_at":"2024-04-15T16:03:21.032Z","dependency_job_id":"9a4878e3-c4e8-4074-893a-4ba6a8b32aa9","html_url":"https://github.com/AlejandroSuero/.dotfiles","commit_stats":null,"previous_names":["alejandrosuero/.dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlejandroSuero%2F.dotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlejandroSuero%2F.dotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlejandroSuero%2F.dotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlejandroSuero%2F.dotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlejandroSuero","download_url":"https://codeload.github.com/AlejandroSuero/.dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249023708,"owners_count":21199958,"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":["ansible","ansible-playbook","config","devops","dotfiles","dotfiles-manager","yaml"],"created_at":"2024-10-19T08:06:41.063Z","updated_at":"2025-04-15T06:48:36.170Z","avatar_url":"https://github.com/AlejandroSuero.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"![dotfiles image](./assets/imgs/dotfiles.png)\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/AlejanroSuero/.dotfiles/actions/workflows/ansible-lint.yml\"\u003e\u003cimg align=\"center\" src=\"https://github.com/AlejandroSuero/.dotfiles/actions/workflows/ansible-lint.yml/badge.svg\" alt=\"ansible action badge\" title=\"Ansible passing?\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/AlejanroSuero/.dotfiles/issues\"\u003e\u003cimg align=\"center\" src=\"https://img.shields.io/github/issues/alejandrosuero/.dotfiles\" alt=\"issues badge\" title=\"Issues\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n# AoMe's dotfiles\n\nWelcome to my automated dotfiles.\n\nThis repo is heavily influenced by [ALT-F4-LLC](https://github.com/ALT-F4-LLC/dotfiles)'s repo. Go check it out!\n\n\n## Goals\n\nProvide fully automated `Ubuntu|Archlinux|MacOSX` development environment that is easy to set up and maintain.\n\n### Why Ansible?\n\nAnsible replicates what we would do to set up a development environment pretty well. There are many automation solutions out there - I happen to enjoy using Ansible.\n\n## Requirements\n\n### Operating System\n\nThis Ansible playbook only supports `Ubuntu|Archlinux|MacOSX` distribution. This is by design to provide a consistent development experience across hosts.\n\n### System Upgrade\n\nVerify your `Ubuntu|Archlinux|MacOSX` installation has all latest packages installed before running the playbook.\n\n```bash\n# Ubuntu\nsudo apt-get update \u0026\u0026 sudo apt-get upgrade -y\n# Arch\nsudo pacman -Syu\n# MacOSX\nbrew update \u0026\u0026 brew upgrade\n```\n\n\u003e NOTE: This will take some time.\n\n## Setup\n\n### all.yaml values file\n\nThe `all.yaml` file allows you to personalize your setup to your needs. This file will be created in the file located at `~/.dotfiles/group_vars/all.yaml` after you [Install this dotfiles](#install) and include your desired settings.\n\nBelow is a list of all available values. Not all are required but incorrect values will break the playbook if not properly set.\n\n| Name                  | Type                                | Required |\n| --------------------- | ----------------------------------- | -------- |\n| git_user_email        | string                              | no       |\n| git_user_name         | string                              | yes      |\n| exclude_roles         | array `(see group_vars/all)`        | no       |\n| ssh_key               | dict `(see SSH Keys below)`         | no       |\n| system_host           | dict `(see System Hosts below)`     | no       |\n| bash_public           | dict `(see Environment below)`      | no       |\n| bash_private          | dict `(see Environment below)`      | no       |\n\n\n#### Environment\n\nManage environment variables by configuring the `bash_public` and `bash_private` values in `values.yaml`. See both values usecase below.\n\n##### bash_public\n\nThe `bash_public` value allows you to include a dictionary of generic and unsecure key-value pairs that will be stored in a `~/.bash_public`.\n\n```yaml\n\n---\nbash_public:\n  MY_ENV_VAR: something\n```\n\n#### bash_private\n\nThe `bash_private` value allows you to include a dictionary of secure key-value pairs that will be stored in a `~/.bash_private`.\n\n```yaml\n\n---\nbash_private:\n  MY_ENV_VAR_SECRET: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    62333533626436313366316235626561626635396233303730343332666466393561346462303163\n    3666636638613437353663356563656537323136646137630a336332303030323031376164316562\n    65333963633339323382938472963766303966643035303234376163616239663539366564396166\n    3830376265316231630a623834333061393138306331653164626437623337366165636163306237\n    3437\n```\n\n### SSH Keys\n\nManage SSH keys by setting the `ssh_key` value in `values.yaml` shown as example below:\n\n```yaml\n\n---\nssh_key:\n  \u003cfilename\u003e: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    62333533626436313366316235626561626635396233303730343332666466393561346462303163\n    3666636638613437483928376563656537323136646137630a336332303030323031376164316562\n    65333963633339323762663865363766303966643035303234376163616239663539366564396166\n    3830376265316231630a623834333061393138306331653164626437623337366165636163306237\n    3437\n```\n\n\u003e NOTE: All ssh keys will be stored at `$HOME/.ssh/\u003cfilename\u003e`.\n\n### System Hosts\n\nManage `/etc/hosts` by setting the `system_host` value in `values.yaml`.\n\n```yaml\n\n---\nsystem_host:\n  127.0.0.1: foobar.localhost\n```\n\n### Examples\n\n#### Minimal\n\nBelow is a minimal example of `values.yaml` file:\n\n```yaml\n---\ngit_user_email: foo@bar.com\ngit_user_name: Foo Bar\n```\n\n#### Advanced\n\nBelow is a more advanced example of `values.yaml` file:\n\n```yaml\n---\ngit_user_email: foo@bar.com\ngit_user_name: Foo Bar\nexclude_roles:\n  - slack\nssh_key: !vault |\n  $ANSIBLE_VAULT;1.1;AES256\n  62333533626436313366316235626561626635396233303730343332666466393561346462303163\n  3666636638613437353663356563656537323136646137630a336332303030323031376164316562\n  65333963633339323762663865363766303966643035303234376163616239663539366564396166\n  3830376265316231630a623834333061393138306331653164626437623337366165636163306237\n  3437\nsystem_host:\n  127.0.0.1: foobar.localhost\nbash_public:\n  MY_PUBLIC_VAR: foobar\nbash_private:\n  MY_SECRET_VAR: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    62333533626436313366316235626561626635396233303730343332666466393561346462303163\n    3666636638613437353663356563656537323136646137630a336332303030323031376164316562\n    65333963633339323762663865363766303966643035303234376163616239663539366564396166\n    3830376265316231630a623834333061393138306331653164626437623337366165636163306237\n    3437\n```\n\n### vault.secret\n\nThe `vault.secret` file allows you to encrypt values with `Ansible vault` and store them securely in source control. Create a file located at `~/.config/dotfiles/vault.secret` with a secure password in it.\n\n```bash\nnvim ~/.ansible-vault/vault.secret\n```\n\n\u003e NOTE: you can use any other text editor.\n\nTo then encrypt values with your vault password use the following:\n\n```bash\nansible-vault encrypt_string --vault-password-file $HOME/.ansible-vault/vault.secret \"mynewsecret\" --name \"MY_SECRET_VAR\"\ncat myfile.conf | ansible-vault encrypt_string --vault-password-file $HOME/.ansible-vault/vault.secret --stdin-name \"myfile\"\n```\n\n\u003e NOTE: This file will automatically be detected by the playbook when running `dotfiles` command to decrypt values. Read more on Ansible Vault [here](https://docs.ansible.com/ansible/latest/user_guide/vault.html).\n\n## Usage\n\n### Install\n\nThis playbook includes a custom shell script located at `bin/dotfiles`. This script is added to your $PATH after installation and can be run multiple times while making sure any Ansible dependencies are installed and updated.\n\nThis shell script is also used to initialize your environment after installing `Ubuntu|Archlinux|MacOSX` and performing a full system upgrade as mentioned above.\n\n\u003e NOTE: You must follow required steps before running this command or things may become unusable until fixed.\n\n```bash\nbash -c \"$(curl -fsSL https://raw.githubusercontent.com/AlejandroSuero/.dotfiles/main/bin/dotfiles)\"\n```\n\nIf you want to run only a specific role, you can specify the following bash command:\n```bash\ncurl -fsSL https://raw.githubusercontent.com/AlejandroSuero/.dotfiles/main/bin/dotfiles | bash -s -- --tags comma,seperated,tags\n```\n\n### Update\n\nThis repository is continuously updated with new features and settings which become available to you when updating.\n\nTo update your environment run the `dotfiles` command in your shell:\n\n```bash\ndotfiles\n```\n\nThis will handle the following tasks:\n\n- Verify Ansible is up-to-date\n- Generate SSH keys and add to `~/.ssh/authorized_keys`\n- Clone this repository locally to `~/.dotfiles`\n- Verify any `ansible-galaxy` plugins are updated\n- Run this playbook with the values in `~/.config/dotfiles/group_vars/all.yaml`\n\nThis `dotfiles` command is available to you after the first use of this repo, as it adds this repo's `bin` directory to your path, allowing you to call `dotfiles` from anywhere.\n\nAny flags or arguments you pass to the `dotfiles` command are passed as-is to the `ansible-playbook` command.\n\nFor Example: Running the tmux tag with verbosity\n```bash\ndotfiles -t tmux -vvv\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falejandrosuero%2F.dotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falejandrosuero%2F.dotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falejandrosuero%2F.dotfiles/lists"}