{"id":31971368,"url":"https://github.com/peter-bread/.dotfiles","last_synced_at":"2026-04-07T08:02:10.010Z","repository":{"id":317778252,"uuid":"760147432","full_name":"peter-bread/.dotfiles","owner":"peter-bread","description":"Managing my dotfiles","archived":false,"fork":false,"pushed_at":"2026-02-20T00:43:58.000Z","size":395,"stargazers_count":1,"open_issues_count":37,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-20T04:45:15.905Z","etag":null,"topics":["configuration","dotfiles","git","linux","macos","skhd","starship","symlinks","wezterm","zsh"],"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/peter-bread.png","metadata":{"files":{"readme":"README.md","changelog":"newsboat/config","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-19T21:45:55.000Z","updated_at":"2026-02-20T00:44:02.000Z","dependencies_parsed_at":"2026-01-19T17:03:12.960Z","dependency_job_id":null,"html_url":"https://github.com/peter-bread/.dotfiles","commit_stats":null,"previous_names":["peter-bread/.dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peter-bread/.dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-bread%2F.dotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-bread%2F.dotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-bread%2F.dotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-bread%2F.dotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peter-bread","download_url":"https://codeload.github.com/peter-bread/.dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-bread%2F.dotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31504897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","dotfiles","git","linux","macos","skhd","starship","symlinks","wezterm","zsh"],"created_at":"2025-10-14T19:46:49.291Z","updated_at":"2026-04-07T08:02:10.004Z","avatar_url":"https://github.com/peter-bread.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# .dotfiles\n\n---\n\n\u003cp align=\"center\"\u003e\n  Managing my dotfiles for MacOS and Linux.\n\u003cp/\u003e\n\n---\n\n\u003c!--toc:ignore--\u003e\n\n## Contents\n\n\u003c!--toc:start--\u003e\n\n- [Install](#install)\n- [File Structure](#file-structure)\n- [Neovim](#neovim)\n\u003c!--toc:end--\u003e\n\n## Install\n\n### TL;DR\n\nFor [me](https://github.com/peter-bread), on a new system run the following:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install |\n  bash -s -- --prime --modules --pkgs --github --nvim peter.nvim\n```\n\nOr:\n\n```bash\nwget -qO- https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install |\n  bash -s -- --prime --modules --pkgs --github --nvim peter.nvim\n```\n\n### Details\n\nRead [install](./install) script help information.\n\n\u003c!-- BEGIN CLI HELP --\u003e\n\n```text\nBootstrap script.\n\nWithout any options provided, this script will check if required tools are\ninstalled and will then clone or pull dotfiles repository to ~/.dotfiles.\n\nOptions can be provided to enable extra functionality.\n\nUsage:\n  ./install [--prime] [--modules] [--pkgs] [--github] [--nvim \u003crepo_name\u003e] [-h | --help]\n\nOptions:\n  --prime       Ensure system has required packages installed\n  --modules     Install modules from MANIFEST.* files\n  --pkgs        Install packages\n  --github      Authenticate with GitHub on this device\n  --nvim        Clone Neovim config as specified by \u003crepo_name\u003e\n\n                The \u003crepo_name\u003e argument can be one of:\n                  - A short name (e.g. \"peter.nvim\"), resolved as:\n                      https://github.com/peter-bread/\u003crepo_name\u003e.git\n                  - A full \"owner/repo\" pair (e.g. \"someone/other.nvim\"), resolved as:\n                      https://github.com/\u003cowner\u003e/\u003crepo_name\u003e.git\n                  - A full Git URL (e.g. \"https://github.com/user/repo.git\"), HTTPS or SSH, used as-is\n\n  -h, --help    Print this help message\n\nEnvironment Variables:\n  These variables mirror the options above. Flags provided on the command line\n  take precedence over environment variables. All boolean variables default to 0\n  (disabled) unless otherwise noted.\n\n  Option Flags (0 = disable, 1 = enable):\n    PRIME       Enable system bootstrap to ensure required packages are installed\n    MODULES     Install modules from MANIFEST.* files\n    PKGS        Install packages\n    GITHUB      Authenticate with GitHub on this device\n\n  Option Arguments (string; default = empty):\n    NVIM        Neovim configuration repository to clone.\n\n  Logging and Output:\n    ENABLE_COLOR  Enable colored logging output (default: 1)\n    ENABLE_DEBUG  Enable debug logging (default: 0)\n\n  Developer / Advanced:\n    DEV_USE_LOCAL   Developer mode: do not attempt to clone/pull dotfiles repo.\n                    Useful when testing WIP scripts in a Docker container.\n```\n\n\u003c!-- END CLI HELP --\u003e\n\nEnsure `bash` is available.\n\nDownload and execute [`install`](./install).\n\nIf on a super minimal system, you may need to download on a another machine and\ntransfer with a USB.\n\n### Default Behaviour\n\nIf no options are provided, the script will:\n\n1. Check requirements (will exit if any errors are reported)\n1. Clone or update existing `~/.dotfiles` repo\n\nUsing `curl`:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install | bash\n```\n\nUsing `wget`:\n\n```bash\nwget -qO- https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install | bash\n```\n\n### Options\n\nUsing `curl`:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install |\n  bash -s -- [options]\n```\n\nUsing `wget`:\n\n```bash\nwget -qO- https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install |\n  bash -s -- [options]\n```\n\n### Install without piping into bash\n\nThe following examples will just print help information.\n\nUsing `curl`:\n\n```bash\ncurl -fsSLo install https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install\nchmod u+x ./install\n./install -h\n```\n\nUsing `wget`:\n\n```bash\nwget -q https://raw.githubusercontent.com/peter-bread/.dotfiles/refs/heads/main/install\nchmod u+x ./install\n./install -h\n```\n\n\u003e [!WARNING]\n\u003e If the script detects that the repo is out of date, it will pull changes then\n\u003e restart itself. When it restarts, it will always use the version in\n\u003e `~/.dotfiles`. If you downloaded the script and it fails after the first run,\n\u003e be sure to delete it and only use the one in `~/.dotfiles` in future.\n\u003e\n\u003e See [this issue](https://github.com/peter-bread/.dotfiles/issues/37).\n\n## File Structure\n\nThis repository has an intentionally shallow file structure.\n\nThe intent is to make navigating to specific config files quicker, then relying\non `install` scripts to create symlinks and handle \"real\" directory structure.\n\nThe top level consists of a few key things:\n\n\u003c!-- markdownlint-disable MD013 --\u003e\n\n| Item              | Role                                                         |\n| ----------------- | ------------------------------------------------------------ |\n| `install`         | Entry point; clones repo, options to do more                 |\n| `MANIFEST.*`      | Files containing lists of modules to be installed on each OS |\n| `_*`              | Repo utilities; _NOT_ modules                                |\n| other directories | Modules containing config files and install scripts          |\n\nEach module consists of:\n\n| Item         | Role                                                                |\n| ------------ | ------------------------------------------------------------------- |\n| `install`    | Script that creates directories and symlinks; can contain any logic |\n| `README.md`  | Documentation for the module                                        |\n| config files | Self-explanatory                                                    |\n\n\u003c!-- markdownlint-restore --\u003e\n\n### Modules\n\nThere are three types of modules:\n\n- Config\n- Data\n- Actions\n\n| Module Type | Files | Install | Description                                                           |\n| ----------- | ----- | ------- | --------------------------------------------------------------------- |\n| Config      | ✅    | ✅      | Config files for tools that need to be symlinked to correct locations |\n| Data        | ✅    | ❌      | Files that are used by other modules or scripts                       |\n| Actions     | ❌    | ✅      | Perform operations, e.g. creating directories                         |\n\nData and Actions are classed as \"Special\" modules.\n\nData modules should _NOT_ be included in `MANIFEST` files.\n\n### Special Modules\n\nMost modules are Config modules, however there are some Special modules.\n\n#### Data\n\n[Packages](./packages/) contains files and scripts used to install software. It\ncan be used by using the `--pkgs` option with the top-level `install` script.\n\n[Env](./env/) provides a unified environment layer that centralises\nshell-agnostic environment settings. Currently it defines environment\nvariables, but it may later include aliases and POSIX-compatible helper\nfunctions for cross-shell consistency.\n\nThese scripts are sourced by shell startup files in the `bash` and `zsh`\nmodules, not executed.\n\n#### Actions\n\n[Dirs](./dirs/) is responsible for creating directories to ensure a consistent\nwork environment.\n\n## Neovim\n\nMy Neovim configuration is in its own repository\n[here](https://github.com/peter-bread/peter.nvim).\n\nIt can be cloned manually or by using the `--nvim` option with the top-level\n`install` script.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeter-bread%2F.dotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeter-bread%2F.dotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeter-bread%2F.dotfiles/lists"}