gcc provides wrappers for binutils' ar, nm and ranlib
executables, which must be used instead when using link-time
optimisation. See also:
http://manpages.ubuntu.com/manpages/zesty/man1/aarch64-linux-gnu-gcc-ar-5.1.html
The upstream version of avr-gcc-ar searches in paths passed to
the configure script for the avr-ar binary that it wraps, falling
back to searching PATH instead. Thus currently avr-gcc-ar works on
Nix, but only if avrbinutils is already in the environment.
This change bakes the path to avr-ar into avr-gcc-ar, since its path
is known at compile time. It also no longer searches PATH, meaning the
user's local environment won't override this path.
Note that avr-gcc-nm and avr-gcc-ranlib are compiled from the same
source file as avr-gcc-ar, just with different compiler flags.
Testing on master (without avrbinutils in the environment):
$ nix-build -A avrgcc
$ result/bin/avr-gcc-ar --version
result/bin/avr-gcc-ar: Cannot find binary 'avr-ar'
Testing on branch with this fix:
$ nix-build -A avrgcc
$ result/bin/avr-gcc-ar --version
GNU ar (GNU Binutils) 2.26.20160125
...
systemd is a fairly large dependency, and it doesn't appear to
be necessary in all circumstances - e.g. when openvpn is
not run as a systemd service (as is usually the case when it is
run in a Docker container).
This change makes the dependency on systemd optional, controlled
by a new argument `useSystemd`. The default behaviour remains
the same as it was before this change: enabled only on Linux systems.
For me, this change reduces the size of my container image (dominated
by the closure of openvpn) from about 110 MB to 45 MB.
Version 2: rename argument to `useSystemd` (was `systemdSupport`), and
rebase onto master
It's necessary to do this in order to fix ckb's compilation, now that
fixupPhase rejects derivation results containing references to the temporary
build directory. It seems like good practice so I've added it to the
other packages that I maintain.
The SYSCONFDIR variable used in the Makefile servers two purposes:
1) During buildPhase, it is hardcoded into the executable as one of
the locations that will be searched for the i3blocks.conf config
file. We want this set to "/etc", so that "/etc/i3blocks.conf"
will be automatically loaded if it exists, as specified in the
manpage.
2) During installPhase, it specifies the location that the sample
i3blocks.conf should be installed to. We want this to be "$out/etc".
Case 2 was already handled correctly, but case 1 was not. This resulted
in i3blocks instead searching for i3blocks.conf in the default value of
SYSCONFDIR, which is "/usr/local/etc", a directory which generally does
not exist on NixOS. This commit remedies this problem by setting
SYSCONFDIR=/etc during buildPhase.
A minor stylistic fix (correcting a usage of "makeFlags" to "buildFlags"
in the expression) has also been applied in this commit.
ckb is a driver for Corsair keyboards/mice. It also contains a graphical tool for configuring their LED backlight settings.
The driver is implemented as a userland daemon. A NixOS module is included that runs this as a systemd service.
Previously, the entire installation was copied to $out/opt/unigine/valley.
Using $out/lib instead of $out/opt would be more consistent with other Nix packages.
The upstream version is "1.0", so that's what the version of the Nix package should be too.
When I packaged this I wasn't aware that a Nix package could update without its version number
increasing, so I added an extra "release version" (like Arch Linux packages). Of course, this
isn't necessary.