this boils down to adding some extra dependencies to the shell
environment. they're also inherited from craneArgs because the ones from
the package are actually transformed into the WRONG outputs of the
packages. also refactors to use craneLib.devShell because it's somewhat
cleaner.
In my tests this was necessary to develop Niri using non-NixOS Nix.
Otherwise Niri panics with this error message: called `Result::unwrap()`
on an `Err` value: EventLoopCreation(NotSupported(NotSupportedError)).
* add dev dependencies to flake
* parse only one default-column-width
* require exactly one action per bind, and unique keys for binds
* use proper filename for config errors if possible
* fix duplicate keybinds after invalid action, lose some sanity