{"id":13837900,"url":"https://github.com/johnae/world","last_synced_at":"2025-04-07T07:11:21.658Z","repository":{"id":36979478,"uuid":"277177209","full_name":"johnae/world","owner":"johnae","description":"NixOS configuration","archived":false,"fork":false,"pushed_at":"2024-10-30T00:16:47.000Z","size":31841,"stargazers_count":80,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-30T02:49:37.707Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nix","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/johnae.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-07-04T20:00:34.000Z","updated_at":"2024-10-30T00:16:51.000Z","dependencies_parsed_at":"2023-09-24T02:58:16.455Z","dependency_job_id":"f0b55fdf-f0dd-4c57-93e7-9e3d1e8873c1","html_url":"https://github.com/johnae/world","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/johnae%2Fworld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnae%2Fworld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnae%2Fworld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnae%2Fworld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnae","download_url":"https://codeload.github.com/johnae/world/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608153,"owners_count":20965952,"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":[],"created_at":"2024-08-04T15:01:29.855Z","updated_at":"2025-04-07T07:11:21.628Z","avatar_url":"https://github.com/johnae.png","language":"Nix","funding_links":[],"categories":["Nix"],"sub_categories":[],"readme":"# 🚀 Declarative Today. Utopia Tomorrow.  \n\nThis is my [NixOS](https://nixos.org) configuration repository, managing all my machines and custom packages (i.e., not yet in [nixpkgs](https://github.com/nixos/nixpkgs)). In a way, this repo is my world—hence the name. 🌍  \n\nIt's built on [Nix flakes](https://nixos.wiki/wiki/Flakes), providing a declarative and reproducible way to manage systems—kind of like `Cargo.toml` (Rust), `go.mod` (Go), or `package.json` (Node.js), but **language-agnostic** and handling any package or file. This setup ensures **deterministic** builds for both hosts and software.  \n\nFor modularity, [flake-parts](https://flake.parts) is used to keep [flake.nix](./flake.nix) clean and structured. 🛠️  \n\n## 🖥️ Bootstrapping a New Machine  \n\nTo add a new machine, create a file in the relevant architecture folder under [hosts/](hosts/), copy an existing configuration if needed, and adjust as necessary. Then commit and push your changes. ✅  \n\n### 🔧 Installing NixOS  \n\n1. Download a recent [NixOS installer](https://nixos.org/download.html#nixos-iso) and boot into it.  \n2. Enable flakes:  \n\n   ```sh\n   mkdir -p /etc/nix\n   echo \"experimental-features = nix-command flakes\" \u003e\u003e /etc/nix/nix.conf\n   ```\n\n3. Clone this repository:  \n\n   ```sh\n   cd /tmp\n   git clone https://github.com/johnae/world\n   cd world\n   ```\n\n4. Install the system:  \n\n   ```sh\n   host=eris\n   nix build .#\"$host\"-diskformat\n   ./result/bin/diskformat\n   nixos-install --flake .#\"$host\" --no-root-passwd\n   chown -R 1337:100 /mnt/keep/home/\u003cyour-user\u003e\n   ```\n\n   Hosts are defined in [hosts/](hosts/).  \n\n   _This setup is highly customized to my workflow. Feel free to use it, but you’ll likely want to tweak it for your needs._  \n\n## 🔄 Updating an Existing Machine  \n\nUpdates follow a standard commit/push/pull request workflow. To update a machine:  \n\n```sh\nnixos-rebuild switch --flake github:johnae/world --use-remote-sudo\n```\n\nOr from a local clone:  \n\n```sh\ngit clone git@github.com:johnae/world\ncd world\nnixos-rebuild switch --flake . --use-remote-sudo\n```\n\n## 🤖 Automated Updates  \n\nOS and package updates are automated via CI (buildkite). Updates create pull requests where all custom packages and machine configurations are built and tested before merging, helping catch issues before deployment.  \n\n## 📜 License  \n\n[MIT](https://choosealicense.com/licenses/mit)  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnae%2Fworld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnae%2Fworld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnae%2Fworld/lists"}