{"id":18694557,"url":"https://github.com/emilte/home","last_synced_at":"2026-04-12T12:47:27.639Z","repository":{"id":50386304,"uuid":"500181287","full_name":"emilte/home","owner":"emilte","description":"Setup for home directory","archived":false,"fork":false,"pushed_at":"2024-03-20T15:46:13.000Z","size":145,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-03-20T17:00:28.268Z","etag":null,"topics":["bash","git","shell"],"latest_commit_sha":null,"homepage":"","language":"Python","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/emilte.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}},"created_at":"2022-06-05T18:36:58.000Z","updated_at":"2024-04-15T11:08:18.052Z","dependencies_parsed_at":"2023-10-05T04:10:23.154Z","dependency_job_id":"2e015a5a-214e-404e-8c0b-2976177884ed","html_url":"https://github.com/emilte/home","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/emilte%2Fhome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emilte%2Fhome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emilte%2Fhome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emilte%2Fhome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emilte","download_url":"https://codeload.github.com/emilte/home/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239552532,"owners_count":19657930,"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","git","shell"],"created_at":"2024-11-07T11:11:29.219Z","updated_at":"2025-11-08T11:30:48.556Z","avatar_url":"https://github.com/emilte.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Home sweet home\n\nI've finally published my local setup, [check it out](https://youtu.be/pqky5B179nM?t=73)!\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Sandbox\n\nIf you want a preview of this setup, you should try this!\n\u003cbr\u003e\nI have provided a simple Dockerfile [/DockerFile](/DockerFile) for sandbox testing.\n\n\u003cbr\u003e\n\nCommand to open a new container (can safely be repeated):\n\n\u003e NOTE: This does not run the installation, continue in the section [for other users](#for-non-emil-users).\n\n```sh\ncd ~ \u0026\u0026 rm -rf /tmp/docker-home-testing \u0026\u0026 mkdir /tmp/docker-home-testing \u0026\u0026 cd /tmp/docker-home-testing \u0026\u0026 curl -LJO https://raw.githubusercontent.com/emilte/home/master/Dockerfile \u0026\u0026 docker build --force-rm --rm -t home-test . ; docker run -it home-test\n```\n\n\u003e This command will:\n\u003e\n\u003e 1. Create a temporary directory in `/tmp/docker-home-testing`.\n\u003e 2. Fetch Dockerfile.\n\u003e 3. Build image and run container.\n\n\u003cbr\u003e\n\nIf you only want the last part of starting a new clean container (can safely be repeated):\n\n```sh\ndocker build --force-rm --rm -t home-test . ; docker run -it home-test\n```\n\n\u003e Does only step 3 above.\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003chr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Full installation:\n\nDedicated to myself, you should probably see the section [for other users](#for-non-emil-users).\n\n\u003e WARNING: This command will ensure that the home directory reflects this repo. The old setup will be backed up in a branch named `home-old`.\n\n```sh\ncd ~ \u0026\u0026 git init \u0026\u0026 git config --global user.email \"you@example.com\" \u0026\u0026 git config --global user.name \"Your Name\" \u0026\u0026 git remote add origin git@github.com:emilte/home.git \u0026\u0026 git fetch --all \u0026\u0026 git checkout -b \"home-old\" \u0026\u0026 git add . \u0026\u0026 git commit -m \"Old home directory\" \u0026\u0026 git checkout master -f ; bash .configure_bash.sh n\n```\n\n```sh\n/bin/bash -c \"shopt -s dotglob \u0026\u0026 cd ~ \u0026\u0026 git clone git@github.com:emilte/home.git \u0026\u0026 mv -iv home/{.,}* ~\"\n```\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003chr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n## For non-Emil users\n\nYou probably don't want the exact same setup as me.\nRun this command for interactive installation:\n\n\u003e WARNING: This command will ensure that the home directory reflects this repo. The old setup will be backed up in a branch named `home-old`.\n\n\u003e WARNING: Never blindly trust commands you didn't write yourself. I advice you to inspect commands before running them.\n\n```sh\ncd ~ \u0026\u0026 git init \u0026\u0026 git config --global user.email \"you@example.com\" \u0026\u0026 git config --global user.name \"Your Name\" \u0026\u0026 git remote add origin https://github.com/emilte/home.git \u0026\u0026 git fetch --all \u0026\u0026 git checkout -b \"home-old\" \u0026\u0026 git add . \u0026\u0026 git commit -m \"Old home directory\" \u0026\u0026 git checkout master -f ; bash .configure_bash.sh y\n```\n\n\u003e This command will:\n\u003e\n\u003e 1. `cd ~` \u003cbr\u003e\n\u003e    Go to home directory.\n\u003e 2. `git init` \u003cbr\u003e\n\u003e    Hack to clone repo into non-empty existing path.\n\u003e    https://stackoverflow.com/questions/50361138/destination-path-already-exists-and-is-not-an-empty-directory\n\u003e 3. `git config --global user.email \"you@example.com\" \u0026\u0026 git config --global user.name \"Your Name\"` \u003cbr\u003e\n\u003e    Added because git complained about missing config. This will be overwritten soon anyway.\n\u003e 4. `git remote add origin https://github.com/emilte/home.git` \u003cbr\u003e\n\u003e    Set this repo as remote.\n\u003e 5. `git fetch --all` \u003cbr\u003e\n\u003e    Fetch all branches and changes to prepare for incoming changes.\n\u003e 6. `git checkout -b \"home-old\"` \u003cbr\u003e\n\u003e    Create branch `home-old` for current setup.\n\u003e 7. `git add .` \u003cbr\u003e\n\u003e    Stage all files and folders in current setup.\n\u003e 8. `git commit -m \"Old home directory\"` \u003cbr\u003e\n\u003e    Commit current setup to branch `home-old`.\n\u003e 9. `git checkout master -f` \u003cbr\u003e\n\u003e    Force new setup in home directory.\n\u003e 10. `bash .configure_bash.sh y` \u003cbr\u003e\n\u003e     Run configuration for bash in interactive mode.\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003chr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Sources:\n\n1. https://stackoverflow.com/a/45514197/12616507\n2. https://stackoverflow.com/questions/50361138/destination-path-already-exists-and-is-not-an-empty-directory\n3. https://curl.se/docs/manpage.html\n4. https://codefather.tech/blog/bash-unary-operator-expected/\n5. https://ryanstutorials.net/bash-scripting-tutorial/bash-if-statements.php\n6. https://stackoverflow.com/a/2642592/12616507\n7. https://hub.docker.com/_/ubuntu\n8. https://ggkbase-help.berkeley.edu/how-to/install-pyenv/\n9. https://unix.stackexchange.com/a/594845\n10. https://stackoverflow.com/a/6212408/12616507\n11. https://github.com/emilyst/home\n12. https://github.com/emilte/terminal\n13. https://linuxize.com/post/bash-functions/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femilte%2Fhome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femilte%2Fhome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femilte%2Fhome/lists"}