Previously it was missing a runtime dependency on setuptools:
[kier@saelli:~/checkouts/nixpkgs]$ $(nix-build -A python27Packages.pylint --no-out-link)/bin/pylint
Traceback (most recent call last):
File "/nix/store/0k8h6n6nxjcs2j5jp54mfppjbx37hrrg-python2.7-pylint-1.9.5/bin/.pylint-wrapped", line 6, in <module>
from pylint import run_pylint
File "/nix/store/0k8h6n6nxjcs2j5jp54mfppjbx37hrrg-python2.7-pylint-1.9.5/lib/python2.7/site-packages/pylint/__init__.py", line 11, in <module>
from .__pkginfo__ import version as __version__
File "/nix/store/0k8h6n6nxjcs2j5jp54mfppjbx37hrrg-python2.7-pylint-1.9.5/lib/python2.7/site-packages/pylint/__pkginfo__.py", line 25, in <module>
from pkg_resources import parse_version
ImportError: No module named pkg_resources
With this change, the same command now correctly prints pylint's help text.
This only applies to Python 2.
Since 61bc03c017, patch-shebangs
now distinguishes between build-time and runtime dependencies.
Prior to this commit, perl was not being placed in patch-shebangs'
search path when it is run during the fixup phase.
`perl` needs to be a native build input to ensure that it is
present in `PATH` during the build, allowing `patchShebangs` to
correctly fix the shebang in `pius-party-worksheet`. Previously,
the shebang was left as `/usr/bin/perl` because `perl` could not
be found by `patchShebangs`.
`six` is a required dependency of `pius` and likely should have
been included in the derivation a long time ago, since the `pius`,
`pius-report` and `pius-keyring-mgr` commands are broken without it.
Annoyingly, `pius` still uses `distutils` rather than `setuptools`
which seems to happily install the package without checking that
its dependencies have been installed.
This introduces a dependency on xxHash. Unfortunately, hashcat's
build system wants to rebuild xxHash from the source code located
in `<hashcat source root>/deps/git/xxHash`, a Git submodule whose
contents are not included in the source tarball we currently
download.
This could be fixed by either using a recursive git clone instead
a tarball download, or patching the build files to use an existing
installation of xxHash (i.e. the one already provided by Nix). I
believe the latter is preferable since it avoids the situation in
which the xxHash version used by hashcat is different to the xxHash
version used by all other Nix packages.
Fortunately, this situation has been greatly improved [1] since
release 5.0.0; the next release of hashcat should drop usage of
git submodules and provide better support for using existing
installations of dependencies.
[1] https://github.com/hashcat/hashcat/commit/4177e1ee286f80c344f7bae6a65c40192f523e0a
In this update:
* binaries `ckb` and `ckb-daemon` are renamed to `ckb-next` and `ckb-next-daemon`
* build system changed from qmake to cmake
* the directory searched for animation plugins no longer needs to be patched, as a result of the build system change
* modprobe patch has been bumped, since the source repository layout has changed
* the cmake scripts are quite FHS-centric and require patching to fix install locations
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
While BOINC itself is open source, many of the project applications
it runs are not. Additionally, these project applications are
checksummed before they are run, so they can't be patched. This
means we can't make the project applications find required binaries/libraries
on a NixOS system. The solution is therefore to make said binaries
and libraries appear in the expected locations, by wrapping BOINC
in an FHS-compatible environment [1].
An `extraEnvPackages` is also added to allow more packages to
be added into this environment. The documentation for this option
describes some practical use cases for it.
[1] https://nixos.org/nixpkgs/manual/#sec-fhs-environments
Version 2: fixed Docbook list formatting, minor rewording
Version 3: rebase onto master (9c048f4fb6)
Version 4: fix usage of targetPkgs argument to buildFHSUserEnv
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.