Can't publish a package on aarch64

Hi,

I am setting up a new macbook with an aarch64 architecture instead of x86. Most of the reinstalls are going great so far but this one doesn’t work

Building cheat-sh ...
warning: the flag '--override-input flox-floxpkgs/nixpkgs/nixpkgs flake:nixpkgs-stable' does not match any input
warning: the flag '--override-input target/flox-floxpkgs/nixpkgs/nixpkgs flake:nixpkgs-stable' does not match any input
error: attribute 'finalFlake' missing

       at /nix/store/1mjmg6ypjik86j7c5npymiiim3vwd5h8-source/lib/capacitate/capacitate.nix:395:20:

          394|           systems = self.systems;
          395|           config = self.finalFlake.config;
             |                    ^
          396|       }

ERROR: eval of path:/nix/store/w39szbhsdlinqy8wq52hh698vvgqg6fp-flox-0.0.8-r123/lib/catalog-ingest#analysis.eval.packages.aarch64-darwin.cheat-sh failed - see above

This is for this repository https://github.com/etorreborre/cheat.sh. Do you have any idea of what can be done in that case?

Thanks

I did find a few issues, but I’m having trouble understanding the situation you are in. You mention this being part of setting up a new architecture.

  • Are you struggling with instantiating an existing named environment on a new machine? (if so, can you share your floxmeta repo with me to help diagnose?)
  • Are you trying to build cheat-sh (i didn’t have problems with this at your cheat.sh repo )
  • Are you trying to perform a publish? (what commands did you run and options did you pick?)

Some notes:

  • the specific capacitor library you seem to be using is a few months old
  • your cheat.sh repo seems to be recently updated, and thus i’d expect a different set of warnings
  • Are you struggling with instantiating an existing named environment on a new machine? (if so, can you share your floxmeta repo with me to help diagnose?)

Yes that’s the case. I have a new Mac M1 and I would like to install the packages that are published under GitHub - etorreborre/floxpkgs but that I built with an older Mac on a x86 architecture.

For example I tried to publish from my Mac M1 this tool GitHub - etorreborre/cmt: Write consistent git commit messages based on a custom template (let’s focus on this one which is more useful to me than cheat-sh for now).

Publishing works fine, I think you can see it here: https://github.com/etorreborre/floxpkgs/tree/main/catalog

But then when I try to install the package it is not found

± flox install commit-tool -e default                                                                                                                                                                                                                                                       error: Channel nixpkgs-flox does not contain evalCatalog.aarch64-darwin.stable.commit-tool
(use '--show-trace' to show detailed location information)

ERROR: failed to install packages: flake:nixpkgs-flox#evalCatalog.aarch64-darwin.stable.commit-tool

This has possibly something to do with a missing “arch” declaration somewhere?

Thank you.

Thanks for that context. That perfectly explains what is happening. The floxpkgs template has evolved and needs to be updated. You have a few options here depending on exactly how you made the repo, but the changes are pretty simple.

  1. (recommended if possible): in your floxpkgs repo, run:
git remote add flox git@github.com:flox/floxpkgs-template
git fetch flox
git rebase flox/main
flox flake update
# git add and commit as you see fit 
curl https://raw.githubusercontent.com/flox/floxpkgs-template/main/flox.nix > flox.nix
curl https://raw.githubusercontent.com/flox/floxpkgs-template/main/flake.nix > flake.nix
flox flake update
# git add and commit as you see fit 

In that template we are changing the name from “floxpkgs” to “flox-floxpkgs”, this is in order to allow new organizations to define and extend our baseline with their own, for example “etorreborre-floxpkgs”! As we continue development, the floxpkgs repo should be “refreshed” occasionally to keep the libraries and the framework up to date. Thanks for bearing with us as we’re making changes.

1 Like

I get it. Thanks I was able to build / publish and install the tools I needed.

I have another question though. See this session

± flox install cheat-sh -e default                                                                                                                                                                                                                                                          error: Channel nixpkgs-flox does not contain evalCatalog.aarch64-darwin.stable.cheat-sh
(use '--show-trace' to show detailed location information)

ERROR: failed to install packages: flake:nixpkgs-flox#evalCatalog.aarch64-darwin.stable.cheat-sh

± flox search cheat-sh                                                                                                                                                                                                                                                                      etorreborre.cheat-sh - cheat.sh executable
  stable.etorreborre.cheat-sh@1.0.0

± flox install stable.etorreborre.cheat-sh@1.0.0 -e default                                                                                                                                                                                                                                 created generation 17

How come cheat-sh is not found at first?

the relevant docs

The specification of what to install has some defaults that look roughly like this:

[stability.].[channel.]PACKAGENAME[@VERSION]

where

  • default stability = “stable”
  • default channel = “nixpkgs-flox”
  • default version = “latest”

So in the first case it was trying to install stable.nixpkgs-flox.cheat-sh which does not exist in Nixpkgs upstream. Though now that I look, there IS cht-sh which seems to be 5 commits behind your fork. I’m not sure why it was originally named in this way: original PR So

flox install cht-sh

does work.

1 Like

I see, thanks for the explanation (which I think I already had before :-D)