diff --git a/README.md b/README.md index 0dbfde0..e650576 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,36 @@ Personal Nix flake hub — custom packages and overlays ## Overview -Personal Nix flake hub for publishing custom packages and overlays. Provides packages for x86_64-linux and aarch64-linux. +Personal Nix flake hub for publishing custom packages and overlays. +Provides packages for x86_64-linux and aarch64-linux. ## Build ```bash nix build .# ``` + +## Antigravity + +`google-antigravity` (FHS-wrapped) and `google-antigravity-no-fhs` are +re-exposed from +[jacopone/antigravity-nix](https://github.com/jacopone/antigravity-nix) +(MIT). Upstream auto-updates daily via its own GitHub Actions; we just bump +the flake input and CI caches the build to attic. + +When the in-app "new version available" banner appears (or you just want to +refresh the pin): + +```bash +just antigravity-update # nix flake update antigravity-nix +git commit -am "antigravity: bump" +git push # CI rebuilds and pushes to attic +``` + +Then, on the consumer: + +```bash +cd ~/projects/servers/emmett +nix flake update oleks-nixpkgs +nix run .#deploy +``` diff --git a/ci/build.py b/ci/build.py index 588b594..c9e70e2 100644 --- a/ci/build.py +++ b/ci/build.py @@ -39,6 +39,8 @@ run(f"'{attic}' login ci {ATTIC_SERVER} '{ATTIC_TOKEN}'") # Packages per arch packages = ["hello-world", "geesefs", "xonsh"] +if ARCH == "x86_64-linux": + packages += ["google-antigravity", "google-antigravity-no-fhs"] if ARCH == "s390x-linux": packages += ["attic-client"] diff --git a/flake.lock b/flake.lock index 7ad58e4..112baa5 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,26 @@ { "nodes": { + "antigravity-nix": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776411505, + "narHash": "sha256-7HILfdTOvWzAMmfS3lQV3MDmVrr2Epj8x4c9F3mzOSE=", + "owner": "jacopone", + "repo": "antigravity-nix", + "rev": "9f31d28882185d30c0e3082fbc52dab1cd4e879f", + "type": "github" + }, + "original": { + "owner": "jacopone", + "repo": "antigravity-nix", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -18,6 +39,24 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "fleet-pins": { "inputs": { "nixpkgs": "nixpkgs", @@ -104,7 +143,8 @@ }, "root": { "inputs": { - "flake-utils": "flake-utils", + "antigravity-nix": "antigravity-nix", + "flake-utils": "flake-utils_2", "fleet-pins": "fleet-pins", "hyprspace": "hyprspace", "nixpkgs": [ @@ -127,6 +167,21 @@ "repo": "default", "type": "github" } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index b57225a..daf9313 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,13 @@ url = "github:KZDKM/Hyprspace/0467be86b18cfc324fab04afbd40fe9ef80f7fa9"; flake = false; }; + + # Google Antigravity packaging. Upstream auto-updates daily; we re-expose + # the overlay and build into our attic cache so emmett pulls from there. + antigravity-nix = { + url = "github:jacopone/antigravity-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = @@ -21,6 +28,7 @@ fleet-pins, flake-utils, hyprspace, + antigravity-nix, ... }: let @@ -38,6 +46,10 @@ mkPackages = pkgs: let + sys = pkgs.stdenv.hostPlatform.system; + # Antigravity ships a Google-provided x86_64/aarch64 Linux binary. + # Skip it for cross targets (e.g. s390x) where it can't run anyway. + supportsAntigravity = sys == "x86_64-linux" || sys == "aarch64-linux"; xontribs = import ./packages/xontribs.nix { inherit (pkgs) python3Packages fetchurl; }; @@ -53,7 +65,15 @@ } # Xontribs: pass into `programs.xonsh.extraPackages` or # `pkgs.xonsh.override { extraPackages = ps: [...]; }`. - // xontribs; + // xontribs + # Antigravity: re-expose jacopone/antigravity-nix's outputs so emmett + # consumes a single flake-hub input and our CI builds into attic. + // nixpkgs.lib.optionalAttrs supportsAntigravity { + inherit (antigravity-nix.packages.${sys}) + google-antigravity + google-antigravity-no-fhs + ; + }; # Overlay providing Hyprspace. Requires `pkgs.hyprland` to be present # (consumer applies the Hyprland flake's overlay first). Kept out of diff --git a/justfile b/justfile new file mode 100644 index 0000000..c8af37c --- /dev/null +++ b/justfile @@ -0,0 +1,30 @@ +default: + @just --list + +# ── Antigravity ──────────────────────────────────────────── + +# Run antigravity (FHS-wrapped) from the attic cache +antigravity-run: + nix run \ + --extra-substituters "https://nix-cache-custom.oleks.space/attic-infra-cache-k3s-1" \ + --extra-trusted-public-keys "attic-infra-cache-k3s-1:qYSNK3DmttQXCFqn1t50qoWGtQNPRFWq9mgQjD05DeU=" \ + git+https://git.oleks.space/oleks/flake-hub#google-antigravity + +# Run antigravity (non-FHS variant) from the attic cache +antigravity-run-no-fhs: + nix run \ + --extra-substituters "https://nix-cache-custom.oleks.space/attic-infra-cache-k3s-1" \ + --extra-trusted-public-keys "attic-infra-cache-k3s-1:qYSNK3DmttQXCFqn1t50qoWGtQNPRFWq9mgQjD05DeU=" \ + git+https://git.oleks.space/oleks/flake-hub#google-antigravity-no-fhs + +# Build antigravity (FHS-wrapped) +antigravity-build: + nix build .#google-antigravity --print-build-logs + +# Build antigravity (non-FHS variant) +antigravity-build-no-fhs: + nix build .#google-antigravity-no-fhs --print-build-logs + +# Pull the latest jacopone/antigravity-nix pin +antigravity-update: + nix flake update antigravity-nix