{"id":13896266,"url":"https://github.com/smithbm2316/dotfiles","last_synced_at":"2025-03-21T13:31:13.336Z","repository":{"id":49169043,"uuid":"354773425","full_name":"smithbm2316/dotfiles","owner":"smithbm2316","description":"There's no place like ~","archived":false,"fork":false,"pushed_at":"2025-03-01T03:58:39.000Z","size":948,"stargazers_count":19,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T15:37:41.869Z","etag":null,"topics":["configuration-files","configuration-management","dotfiles","dotfiles-linux","dotfiles-macos","dotfiles-setup"],"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/smithbm2316.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":"2021-04-05T08:51:07.000Z","updated_at":"2025-03-01T03:58:43.000Z","dependencies_parsed_at":"2023-01-22T16:01:14.332Z","dependency_job_id":"e15d8b79-e1bf-402b-a516-3e131b7deadf","html_url":"https://github.com/smithbm2316/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/smithbm2316%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithbm2316%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithbm2316%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithbm2316%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smithbm2316","download_url":"https://codeload.github.com/smithbm2316/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244806088,"owners_count":20513377,"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":["configuration-files","configuration-management","dotfiles","dotfiles-linux","dotfiles-macos","dotfiles-setup"],"created_at":"2024-08-06T18:02:47.166Z","updated_at":"2025-03-21T13:31:12.972Z","avatar_url":"https://github.com/smithbm2316.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# dotfiles\n\n```sh\n# TLDR: here's the command you need to install everything now\nstow -vt ~/.config dotfiles\n```\n\nThe are my personal configuration files, feel free to steal anything you find interesting! I tend to update them relatively regularly with new apps or settings I add. The most interesting/useful dotfiles I probably have are my neovim config, my various window manager dotfiles (awesomewm, i3, spectrwm, and xmonad folders; I use awesomewm at the moment), and how I actually set up my dotfiles (I use a cli program called **gnu stow**, but I use it a bit differently than most tutorials online, I'll explain that process below). If you have any questions feel free to open an issue and answer the best that I can!\n\n\n## How I setup and manage these files\n\n### My old setup\n\nAs I mentioned above, I use a program called **gnu stow** to set up and manage my dotfiles. However, the way I came around to using it is a bit different than almost every _\"manage your dotfiles with stow\"_ tutorial that I found on Youtube or in blog posts online. I didn't really like how most people used it, as I had already been managing my dotfiles directly in my XDG_CONFIG_HOME directory (~/.config for me), which was a bit of a mess. You have two options doing that: write a _.gitignore_ that you have to edit **every** time you install a new program that adds a config directory/files to your XDG_CONFIG_HOME, which would be a nightmare for me with how much I try out new tools and programs. My XDG_CONFIG_HOME gets pretty messy bloated pretty quickly, so that wasn't a good option for me. The second option (and the option I used for months) is to automatically **ignore everything** in your _.gitignore_, and then manually edit it every time you have new config files you want to track and keep under version control. This also gets messy, as I had a _71 line long_ .gitignore. Yuck. I finally switched to a better method recently and am loving it much more now.\n\n### My new setup with git + stow\n\nBasically, I now keep this repo cloned to my home directory (~/dotfiles), and use a program called **gnu stow** to symlink all of the folders in this repo to my XDG_CONFIG_HOME directory. To get my dotfiles installed onto a new machine, all I have to do is `git clone https://github.com/smithbm2316/dotfiles ~/dotfiles`, and then run `stow -v -t ~/.config dotfiles`. Since I'm symlinking the _folders_ and not each individual file, what that means is that I can update the files in the appropriate folder in either my `~/dotfiles` directory or `~/.config` directory, keep my environment variable of `XDG_CONFIG_HOME` still set to `~/.config`, and all the apps on my system treat my dotfiles like they're in the `~/.config` folder. Magic! I don't have to continually maintain a super ugly `.gitignore` file in my `~/.config` directory, and to add any new program's dotfiles to my dotfiles repo, all I do is move that folder with `mv ~/.config/new-program-to-track ~/dotfiles/new-program-to-track`, change directory to my home folder with `cd`, and re-run `stow -v -t ~/.config dotfiles`, and I'm done! Stow is smart enough to realize that it already has symlinked the rest of the folders in my dotfiles repo to `~/.config`, and it will only symlink the newly added directory. I'm currently working on a Makefile to make this process even easier, and hopefully will have that done soon to make this setup even simpler!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmithbm2316%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmithbm2316%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmithbm2316%2Fdotfiles/lists"}