Package `eww` failing to build

Is anyone else using eww or eww-wayland? After recently updating my nixpkgs flake, I’m getting build errors. It looks like a rust dependency changed, or something got removed.

I know eww required rust nightly, and the nixpkgs package file contains RUSTC_BOOTSTRAP = 1;, but I don’t know rust so I can’t say if this is still sufficient.

Perhaps I need to override the rust version to something newer?

Error:

error: builder for '/nix/store/x5a6aha4ch0rx7990f8m8fmyparqk50f-eww-0.4.0.drv' failed with exit code 101;
       last 10 log lines:
       >   |
       > 7 | #![feature(once_cell)]
       >   |            ^^^^^^^^^
       >   |
       >   = note: `#[warn(stable_features)]` on by default
       >
       > For more information about this error, try `rustc --explain E0557`.
       > warning: `simplexpr` (lib) generated 1 warning
       > error: could not compile `simplexpr` (lib) due to 9 previous errors; 1 warning emitted
       > warning: build failed, waiting for other jobs to finish...
       For full logs, run 'nix log /nix/store/x5a6aha4ch0rx7990f8m8fmyparqk50f-eww-0.4.0.drv'.

Output from nix log /nix/store/x5a6aha4ch0rx7990f8m8fmyparqk50f-eww-0.4.0.drv:


error[E0557]: feature has been removed
 --> crates/simplexpr/src/lib.rs:3:12
  |
3 | #![feature(box_syntax)]
  |            ^^^^^^^^^^ feature has been removed
  |
  = note: replaced with `#[rustc_box]`

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:72:58
   |
72 |             BinOp(span, box a, op, box b) => BinOp(span, box a.try_map_var_refs(f)?, op, box b.try_map_var_refs(f)?),
   |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
72 |             BinOp(span, box a, op, box b) => BinOp(span, Box::new(a.try_map_var_refs(f)?), op, box b.try_map_var_refs(f)?),
   |                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:72:90
   |
72 |             BinOp(span, box a, op, box b) => BinOp(span, box a.try_map_var_refs(f)?, op, box b.try_map_var_refs(f)?),
   |                                                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
72 |             BinOp(span, box a, op, box b) => BinOp(span, box a.try_map_var_refs(f)?, op, Box::new(b.try_map_var_refs(f)?)),
   |                                                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:74:59
   |
74 |             UnaryOp(span, op, box a) => UnaryOp(span, op, box a.try_map_var_refs(f)?),
   |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
74 |             UnaryOp(span, op, box a) => UnaryOp(span, op, Box::new(a.try_map_var_refs(f)?)),
   |                                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:76:30
   |
76 |                 IfElse(span, box a.try_map_var_refs(f)?, box b.try_map_var_refs(f)?, box c.try_map_var_refs(f)?)
   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
76 |                 IfElse(span, Box::new(a.try_map_var_refs(f)?), box b.try_map_var_refs(f)?, box c.try_map_var_refs(f)?)
   |                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:76:58
   |
76 |                 IfElse(span, box a.try_map_var_refs(f)?, box b.try_map_var_refs(f)?, box c.try_map_var_refs(f)?)
   |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
76 |                 IfElse(span, box a.try_map_var_refs(f)?, Box::new(b.try_map_var_refs(f)?), box c.try_map_var_refs(f)?)
   |                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:76:86
   |
76 |                 IfElse(span, box a.try_map_var_refs(f)?, box b.try_map_var_refs(f)?, box c.try_map_var_refs(f)?)
   |                                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
76 |                 IfElse(span, box a.try_map_var_refs(f)?, box b.try_map_var_refs(f)?, Box::new(c.try_map_var_refs(f)?))
   |                                                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:78:64
   |
78 |             JsonAccess(span, box a, box b) => JsonAccess(span, box a.try_map_var_refs(f)?, box b.try_map_var_refs(f)?),
   |                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
78 |             JsonAccess(span, box a, box b) => JsonAccess(span, Box::new(a.try_map_var_refs(f)?), box b.try_map_var_refs(f)?),
   |                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: `box_syntax` has been removed
  --> crates/simplexpr/src/eval.rs:78:92
   |
78 |             JsonAccess(span, box a, box b) => JsonAccess(span, box a.try_map_var_refs(f)?, box b.try_map_var_refs(f)?),
   |                                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: use `Box::new()` instead
   |
78 |             JsonAccess(span, box a, box b) => JsonAccess(span, box a.try_map_var_refs(f)?, Box::new(b.try_map_var_refs(f)?)),
   |                                                                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

warning: the feature `once_cell` has been stable since 1.70.0 and no longer requires an attribute to enable
 --> crates/simplexpr/src/lib.rs:7:12
  |
7 | #![feature(once_cell)]
  |            ^^^^^^^^^
  |
  = note: `#[warn(stable_features)]` on by default

For more information about this error, try `rustc --explain E0557`.
warning: `simplexpr` (lib) generated 1 warning
error: could not compile `simplexpr` (lib) due to 9 previous errors; 1 warning emitted
warning: build failed, waiting for other jobs to finish...

eww: 0.4.0 -> unstable-2023-06-10 by figsoda · Pull Request #239826 · NixOS/nixpkgs · GitHub should fix the issue

Talk about timing. Thanks!