{"id":20768845,"url":"https://github.com/alexogeny/freckles","last_synced_at":"2026-04-07T23:31:32.442Z","repository":{"id":155671489,"uuid":"482805015","full_name":"alexogeny/freckles","owner":"alexogeny","description":"alexogeny's dotfiles","archived":false,"fork":false,"pushed_at":"2025-11-29T01:31:28.000Z","size":1017,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"prime","last_synced_at":"2025-12-26T11:43:43.955Z","etag":null,"topics":["ansible","dotfiles","dots","firefox","orchestration","zsh"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexogeny.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-04-18T10:25:55.000Z","updated_at":"2025-11-29T01:31:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"486319fe-b008-4bcb-9b95-0134e77ead26","html_url":"https://github.com/alexogeny/freckles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexogeny/freckles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexogeny%2Ffreckles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexogeny%2Ffreckles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexogeny%2Ffreckles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexogeny%2Ffreckles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexogeny","download_url":"https://codeload.github.com/alexogeny/freckles/tar.gz/refs/heads/prime","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexogeny%2Ffreckles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31533823,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","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":["ansible","dotfiles","dots","firefox","orchestration","zsh"],"created_at":"2024-11-17T11:41:12.807Z","updated_at":"2026-04-07T23:31:32.416Z","avatar_url":"https://github.com/alexogeny.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Freckles\n\nFreckles are alexogeny's dotfiles and workstation bootstrap scripts.\n\nEverything is orchestrated by a Python setup script. With [uv](https://github.com/astral-sh/uv)\ninstalled, provisioning a machine is as simple as:\n\n```shell\nuv run setup.py\n```\n\n## Some Notes\n\n- only really works on linux. haven't really tested on macos or wsl\n- currently supports Debian and Ubuntu Linux distributions\n- is opinionated, like me\n\n## Features\n\n- installs required base tooling including curl, git, make, zsh, and the Cascadia\n  Code font so prompts, editors, and terminals share the same typography\n- configures zsh, syncs the custom freckles prompt, and ensures aliases and\n  helper scripts are available from both bash and zsh\n- installs Visual Studio Code, applies the bespoke **Freckles Midnight/Dawn**\n  themes, and keeps curated settings and keybindings in sync\n- applies opinionated GNOME desktop defaults (dark appearance, Adwaita theming,\n  Night Light, sensible keyboard shortcuts) and configures GNOME Terminal with\n  the Freckles palette, cursor, and sizing\n- installs and configures git, including both personal and work identities,\n  helper aliases like `git fs`/`git rb`, and the shared SSH/GPG material used by\n  [git identity concierge](docs/git-identity-concierge.md)\n- provisions Firefox with enterprise policies, curated defaults, and add-ons\n- installs 1Password, Slack, Spotify, Docker Engine (with Compose), and the 1Password CLI directly from their\n  upstream repositories (adds your user to the `docker` group automatically—log out/in after setup)\n- syncs the freckles shell helpers such as the fuzzy `nn` navigator and keeps\n  the workstation ready for daily development\n\n### Terminal experience\n\nProvisioning now uses a lightweight CLI spinner for sub-commands and an inline\nGNOME/TTY dashboard while `setup.py` runs. The dashboard keeps the checklist of\nphases pinned to the top of the terminal and streams contextual log lines for\nthe active task beneath it (similar to Docker builds). When running in a\nnon-interactive environment the legacy log stream remains available.\n\nUbuntu specific:\n\n- removes snap\n- replaces firefox snap with direct binary install\n\n### Firefox configuration templates\n\nFirefox is now managed through templates in `firefox/policies.json` and\n`firefox/user.js`. Rerun `setup.py` at any time to reapply these files and\nrestore the curated performance defaults. Edit the templates directly if you\nwant to tweak caching behaviour, enable specific features, or relax any of the\nlocked preferences.\n\n## Development\n\nInstall [uv](https://github.com/astral-sh/uv) and then run:\n\n```shell\nuv run python -m pytest\n```\n\nThat command exercises the spinner, SSH config helpers, reporter dashboard, and\nGNOME automation logic. Use `uv run setup.py -- --help` to inspect the CLI,\nand see `docs/` for subsystem-specific details.\n\n## TODO\n\nJust a general list of things I want to do with this project. I may or may not actually do them.\n\n- [ ] add support for a $user.json file that can be used to configure the system instead of just using my own config\n- [ ] add support for macos\n- [ ] add support for wsl\n\n\npopping these here for later\n\n```shell\nflatpak remote-delete flathub\nflatpak repair --user\nsudo apt remove --purge \"libreoffice*\"\nsudo apt autoremove\nsudo apt autoclean\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexogeny%2Ffreckles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexogeny%2Ffreckles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexogeny%2Ffreckles/lists"}