{"id":19398754,"url":"https://github.com/marcus-crane/dotfiles","last_synced_at":"2025-04-24T06:31:34.895Z","repository":{"id":39924378,"uuid":"237924535","full_name":"marcus-crane/dotfiles","owner":"marcus-crane","description":"My dotfiles","archived":false,"fork":false,"pushed_at":"2025-03-20T23:03:15.000Z","size":3202,"stargazers_count":34,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T00:32:09.552Z","etag":null,"topics":["1password","1password-cli","chezmoi","dotfiles","git","github-actions","gnupg","homebrew","literate-configuration","macos","material-docs","mise","mkdocs","shellcheck","ssh","system-preferences","templates","work","zsh","zsh4humans"],"latest_commit_sha":null,"homepage":"https://dotfiles.utf9k.net","language":"Shell","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/marcus-crane.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,"publiccode":null,"codemeta":null}},"created_at":"2020-02-03T09:06:25.000Z","updated_at":"2025-03-20T23:03:19.000Z","dependencies_parsed_at":"2024-01-08T02:15:53.076Z","dependency_job_id":"8f2a30fd-8736-4379-9f5a-bc7141149c23","html_url":"https://github.com/marcus-crane/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/marcus-crane%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus-crane%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus-crane%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus-crane%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcus-crane","download_url":"https://codeload.github.com/marcus-crane/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250578124,"owners_count":21453247,"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":["1password","1password-cli","chezmoi","dotfiles","git","github-actions","gnupg","homebrew","literate-configuration","macos","material-docs","mise","mkdocs","shellcheck","ssh","system-preferences","templates","work","zsh","zsh4humans"],"created_at":"2024-11-10T11:07:01.903Z","updated_at":"2025-04-24T06:31:34.401Z","avatar_url":"https://github.com/marcus-crane.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotfiles\n\n\u003e View my dotfiles in literate form at [dotfiles.utf9k.net](https://dotfiles.utf9k.net)\n\n\u003ccenter\u003e\n\n![](public/term.png)\n\n\u003c/center\u003e\n\nThis repository contains my dotfiles which are shared between my home and work machines which consist of both macOS and Linux devices.\n\nI have more macOS devices than Linux but I aspire to keep the installation as seamless as possible between the two.\n\nIn saying that, this repository definitely has some sharp edges so while you're welcome to take whatever from it, do note that there are no guarantees of anything working or being easy to use.\n\n[Chezmoi](https://github.com/twpayne/chezmoi) is my dotfile manager which both manages files as well as runs some pre and post-installation scripts to install dependencies, programming languages and libraries that I use day to day.\n\nI have a wonky (read: gross) language manager abstraction visible in [`.chezmoidata.yaml`](.chezmoidata.yaml) which selectively installs different language runtimes depending on whether the machine is used for home or work.\n\nCurrently I use [mise](https://github.com/jdx/mise) to manage languages and previously used [asdf](https://asdf-vm.com/) for quite a few years.\n\nMy shell of choice is zsh, with [oh-my-zsh](https://ohmyz.sh/) although from time to time I flip between OMZ and raw zsh as I don't really use many features from it.\n\n## Installation\n\nOn a fresh machine, it's supposed to be possible to both install `chezmoi` and my dotfiles in one go like so:\n\n```bash\nsh -c \"$(curl -fsLS get.chezmoi.io)\" -- init --apply marcus-crane\n```\n\nI say supposed to because I don't set up machines from scratch very often, and each time I do, there's usually some bootstrapping problem like hard references to chezmoi that don't resolve, because it isn't installed yet where my shell scripts expect it to be.\n\nAs mentioned, there's no guarantee that this repo will be easy to set up, as it's not intended for others to be running day to day.\n\n## A note on tangling files\n\nYou may notice that some configuration files are seemingly missing with `.md` files in their place.\n\nThis is because a few, and in time most of, my config files are kept as \"literate configuration\".\n\nIn short, all of the surrounding commentary is stripped and the correct file is generated off of the source code blocks.\n\nIn order to \"tangle\" them into a proper config, I use [lugh](https://github.com/marcus-crane/lugh), a hacky custom made tool for tangling markdown that I made one day to play with [crystal](https://crystal-lang.org). It's just sort of stuck around so I haven't had any reason to deprecate it but there are probably better tool for this sort of thing.\n\nI have used Emacs `org-tangle` for this job and it's nice but it's also quite a bit of overhead to get it running. Generally on a new machine, compiling Emacs can take quite some time.\n\nAnyway, `lugh` should be installed automatically as part of the initial `chezmoi apply` so with that, you can \"tangle\" the file you're interested in like so:\n\n```bash\nlugh -f \u003cfile\u003e\n```\n\nA working example would be:\n\n```bash\nlugh -f zshrc.md\n# Wrote /Users/marcus/.local/share/chezmoi/dot_zshrc.tmpl\n```\n\nInstead of anything fancy, I just \"tangle\" the contents into a file that chezmoi expects and since it's a `.tmpl` file, it can also make use of chezmoi's built in variables.\n\n## Extras to be manually installed\n\n- Wallpaper - [evangelion-clock-screensaver](https://github.com/Wandmalfarbe/evangelion-clock-screensaver)\n- Font - [JetBrainsMono Nerd Font](https://www.nerdfonts.com/font-downloads) Regular 14\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcus-crane%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcus-crane%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcus-crane%2Fdotfiles/lists"}