Merge branch 'master' into staging

There were some conflicts in python modules, commented at #28314.
This commit is contained in:
Vladimír Čunát 2017-08-29 10:51:54 +02:00
commit 2858c41823
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
300 changed files with 6475 additions and 4510 deletions

View File

@ -2,115 +2,204 @@
## User Guide
Several versions of Python are available on Nix as well as a high amount of
packages. The default interpreter is CPython 2.7.
### Using Python
#### Overview
Several versions of the Python interpreter are available on Nix, as well as a
high amount of packages. The attribute `python` refers to the default
interpreter, which is currently CPython 2.7. It is also possible to refer to
specific versions, e.g. `python35` refers to CPython 3.5, and `pypy` refers to
the default PyPy interpreter.
Python is used a lot, and in different ways. This affects also how it is
packaged. In the case of Python on Nix, an important distinction is made between
whether the package is considered primarily an application, or whether it should
be used as a library, i.e., of primary interest are the modules in
`site-packages` that should be importable.
In the Nixpkgs tree Python applications can be found throughout, depending on
what they do, and are called from the main package set. Python libraries,
however, are in separate sets, with one set per interpreter version.
The interpreters have several common attributes. One of these attributes is
`pkgs`, which is a package set of Python libraries for this specific
interpreter. E.g., the `toolz` package corresponding to the default interpreter
is `python.pkgs.toolz`, and the CPython 3.5 version is `python35.pkgs.toolz`.
The main package set contains aliases to these package sets, e.g.
`pythonPackages` refers to `python.pkgs` and `python35Packages` to
`python35.pkgs`.
#### Installing Python and packages
It is important to make a distinction between Python packages that are
used as libraries, and applications that are written in Python.
The Nix and NixOS manuals explain how packages are generally installed. In the
case of Python and Nix, it is important to make a distinction between whether the
package is considered an application or a library.
Applications on Nix are installed typically into your user
Applications on Nix are typically installed into your user
profile imperatively using `nix-env -i`, and on NixOS declaratively by adding the
package name to `environment.systemPackages` in `/etc/nixos/configuration.nix`.
Dependencies such as libraries are automatically installed and should not be
installed explicitly.
The same goes for Python applications and libraries. Python applications can be
installed in your profile, but Python libraries you would like to use to develop
cannot. If you do install libraries in your profile, then you will end up with
import errors.
installed in your profile. But Python libraries you would like to use for
development cannot be installed, at least not individually, because they won't
be able to find each other resulting in import errors. Instead, it is possible
to create an environment with `python.buildEnv` or `python.withPackages` where
the interpreter and other executables are able to find each other and all of the
modules.
#### Python environments using `nix-shell`
In the following examples we create an environment with Python 3.5, `numpy` and
`toolz`. As you may imagine, there is one limitation here, and that's that
you can install only one environment at a time. You will notice the complaints
about collisions when you try to install a second environment.
The recommended method for creating Python environments for development is with
`nix-shell`. Executing
##### Environment defined in separate `.nix` file
```sh
$ nix-shell -p python35Packages.numpy python35Packages.toolz
Create a file, e.g. `build.nix`, with the following expression
```nix
with import <nixpkgs> {};
python35.withPackages (ps: with ps; [ numpy toolz ])
```
and install it in your profile with
```shell
nix-env -if build.nix
```
Now you can use the Python interpreter, as well as the extra packages (`numpy`,
`toolz`) that you added to the environment.
##### Environment defined in `~/.config/nixpkgs/config.nix`
If you prefer to, you could also add the environment as a package override to the Nixpkgs set, e.g.
using `config.nix`,
```nix
{ # ...
packageOverrides = pkgs: with pkgs; {
myEnv = python35.withPackages (ps: with ps; [ numpy toolz ]);
};
}
```
and install it in your profile with
```shell
nix-env -iA nixpkgs.myEnv
```
The environment is is installed by referring to the attribute, and considering
the `nixpkgs` channel was used.
##### Environment defined in `/etc/nixos/configuration.nix`
For the sake of completeness, here's another example how to install the environment system-wide.
```nix
{ # ...
environment.systemPackages = with pkgs; [
(python35.withPackages(ps: with ps; [ numpy toolz ]))
];
}
```
opens a Nix shell which has available the requested packages and dependencies.
Now you can launch the Python interpreter (which is itself a dependency)
#### Temporary Python environment with `nix-shell`
The examples in the previous section showed how to install a Python environment
into a profile. For development you may need to use multiple environments.
`nix-shell` gives the possibility to temporarily load another environment, akin
to `virtualenv`.
There are two methods for loading a shell with Python packages. The first and recommended method
is to create an environment with `python.buildEnv` or `python.withPackages` and load that. E.g.
```sh
$ nix-shell -p 'python35.withPackages(ps: with ps; [ numpy toolz ])'
```
opens a shell from which you can launch the interpreter
```sh
[nix-shell:~] python3
```
The other method, which is not recommended, does not create an environment and requires you to list the packages directly,
If the packages were not available yet in the Nix store, Nix would download or
build them automatically. A convenient option with `nix-shell` is the `--run`
option, with which you can execute a command in the `nix-shell`. Let's say we
want the above environment and directly run the Python interpreter
```sh
$ nix-shell -p python35.pkgs.numpy python35.pkgs.toolz
```
Again, it is possible to launch the interpreter from the shell.
The Python interpreter has the attribute `pkgs` which contains all Python libraries for that specific interpreter.
##### Load environment from `.nix` expression
As explained in the Nix manual, `nix-shell` can also load an
expression from a `.nix` file. Say we want to have Python 3.5, `numpy`
and `toolz`, like before, in an environment. Consider a `shell.nix` file
with
```nix
with import <nixpkgs> {};
python35.withPackages (ps: [ps.numpy ps.toolz])
```
Executing `nix-shell` gives you again a Nix shell from which you can run Python.
What's happening here?
1. We begin with importing the Nix Packages collections. `import <nixpkgs>` imports the `<nixpkgs>` function, `{}` calls it and the `with` statement brings all attributes of `nixpkgs` in the local scope. These attributes form the main package set.
2. Then we create a Python 3.5 environment with the `withPackages` function.
3. The `withPackages` function expects us to provide a function as an argument that takes the set of all python packages and returns a list of packages to include in the environment. Here, we select the packages `numpy` and `toolz` from the package set.
##### Execute command with `--run`
A convenient option with `nix-shell` is the `--run`
option, with which you can execute a command in the `nix-shell`. We can
e.g. directly open a Python shell
```sh
$ nix-shell -p python35Packages.numpy python35Packages.toolz --run "python3"
```
This way you can use the `--run` option also to directly run a script
or run a script
```sh
$ nix-shell -p python35Packages.numpy python35Packages.toolz --run "python3 myscript.py"
```
In fact, for this specific use case there is a more convenient method. You can
##### `nix-shell` as shebang
In fact, for the second use case, there is a more convenient method. You can
add a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) to your script
specifying which dependencies Nix shell needs. With the following shebang, you
can use `nix-shell myscript.py` and it will make available all dependencies and
specifying which dependencies `nix-shell` needs. With the following shebang, you
can just execute `./myscript.py`, and it will make available all dependencies and
run the script in the `python3` shell.
```py
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p python3Packages.numpy
#! nix-shell -i 'python3.withPackages(ps: [ps.numpy])'
import numpy
print(numpy.__version__)
```
Likely you do not want to type your dependencies each and every time. What you
can do is write a simple Nix expression which sets up an environment for you,
requiring you only to type `nix-shell`. Say we want to have Python 3.5, `numpy`
and `toolz`, like before, in an environment. With a `shell.nix` file
containing
```nix
with import <nixpkgs> {};
(pkgs.python35.withPackages (ps: [ps.numpy ps.toolz])).env
```
executing `nix-shell` gives you again a Nix shell from which you can run Python.
What's happening here?
1. We begin with importing the Nix Packages collections. `import <nixpkgs>` import the `<nixpkgs>` function, `{}` calls it and the `with` statement brings all attributes of `nixpkgs` in the local scope. Therefore we can now use `pkgs`.
2. Then we create a Python 3.5 environment with the `withPackages` function.
3. The `withPackages` function expects us to provide a function as an argument that takes the set of all python packages and returns a list of packages to include in the environment. Here, we select the packages `numpy` and `toolz` from the package set.
4. And finally, for in interactive use we return the environment by using the `env` attribute.
### Developing with Python
Now that you know how to get a working Python environment with Nix, it is time
to go forward and start actually developing with Python. We will first have a
look at how Python packages are packaged on Nix. Then, we will look at how you
can use development mode with your code.
Now that you know how to get a working Python environment on Nix, it is time to go forward and start actually developing with Python.
We will first have a look at how Python packages are packaged on Nix. Then, we will look how you can use development mode with your code.
#### Packaging a library
#### Python packaging on Nix
On Nix all packages are built by functions. The main function in Nix for building Python packages is [`buildPythonPackage`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/interpreters/python/build-python-package.nix).
Let's see how we would build the `toolz` package. According to [`python-packages.nix`](https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/top-level/python-packages.nix) `toolz` is build using
With Nix all packages are built by functions. The main function in Nix for
building Python libraries is `buildPythonPackage`. Let's see how we can build the
`toolz` package.
```nix
{ # ...
toolz = buildPythonPackage rec {
name = "toolz-${version}";
pname = "toolz";
version = "0.7.4";
name = "${pname}-${version}";
src = pkgs.fetchurl {
url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz";
src = fetchPypi {
inherit pname version;
sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
};
doCheck = false;
meta = {
homepage = "http://github.com/pytoolz/toolz/";
description = "List processing tools and functional utilities";
@ -122,63 +211,37 @@ Let's see how we would build the `toolz` package. According to [`python-packages
```
What happens here? The function `buildPythonPackage` is called and as argument
it accepts a set. In this case the set is a recursive set ([`rec`](http://nixos.org/nix/manual/#sec-constructs)).
One of the arguments is the name of the package, which consists of a basename
(generally following the name on PyPi) and a version. Another argument, `src`
specifies the source, which in this case is fetched from an url. `fetchurl` not
only downloads the target file, but also validates its hash. Furthermore, we
specify some (optional) [meta information](http://nixos.org/nixpkgs/manual/#chap-meta).
The output of the function is a derivation, which is an attribute with the name
`toolz` of the set `pythonPackages`. Actually, sets are created for all interpreter versions,
so e.g. `python27Packages`, `python35Packages` and `pypyPackages`.
it accepts a set. In this case the set is a recursive set, `rec`. One of the
arguments is the name of the package, which consists of a basename (generally
following the name on PyPi) and a version. Another argument, `src` specifies the
source, which in this case is fetched from PyPI using the helper function
`fetchPypi`. The argument `doCheck` is used to set whether tests should be run
when building the package. Furthermore, we specify some (optional) meta
information. The output of the function is a derivation.
An expression for `toolz` can be found in the Nixpkgs repository. As explained
in the introduction of this Python section, a derivation of `toolz` is available
for each interpreter version, e.g. `python35.pkgs.toolz` refers to the `toolz`
derivation corresponding to the CPython 3.5 interpreter.
The above example works when you're directly working on
`pkgs/top-level/python-packages.nix` in the Nixpkgs repository. Often though,
you will want to test a Nix expression outside of the Nixpkgs tree. If you
create a `shell.nix` file with the following contents
you will want to test a Nix expression outside of the Nixpkgs tree.
```nix
with import <nixpkgs> {};
pkgs.python35Packages.buildPythonPackage rec {
name = "toolz-${version}";
version = "0.8.0";
src = pkgs.fetchurl {
url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz";
sha256 = "e8451af61face57b7c5d09e71c0d27b8005f001ead56e9fdf470417e5cc6d479";
};
doCheck = false;
meta = {
homepage = "http://github.com/pytoolz/toolz/";
description = "List processing tools and functional utilities";
license = licenses.bsd3;
maintainers = with maintainers; [ fridh ];
};
}
```
and then execute `nix-shell` will result in an environment in which you can use
Python 3.5 and the `toolz` package. As you can see we had to explicitly mention
for which Python version we want to build a package.
The above example considered only a single package. Generally you will want to use multiple packages.
If we create a `shell.nix` file with the following contents
The following expression creates a derivation for the `toolz` package,
and adds it along with a `numpy` package to a Python environment.
```nix
with import <nixpkgs> {};
( let
toolz = pkgs.python35Packages.buildPythonPackage rec {
name = "toolz-${version}";
version = "0.8.0";
my_toolz = python35.pkgs.buildPythonPackage rec {
pname = "toolz";
version = "0.7.4";
name = "${pname}-${version}";
src = pkgs.fetchurl {
url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz";
sha256 = "e8451af61face57b7c5d09e71c0d27b8005f001ead56e9fdf470417e5cc6d479";
src = python35.pkgs.fetchPypi {
inherit pname version;
sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
};
doCheck = false;
@ -189,24 +252,24 @@ with import <nixpkgs> {};
};
};
in pkgs.python35.withPackages (ps: [ps.numpy toolz])
in python35.withPackages (ps: [ps.numpy my_toolz])
).env
```
Executing `nix-shell` will result in an environment in which you can use
Python 3.5 and the `toolz` package. As you can see we had to explicitly mention
for which Python version we want to build a package.
and again execute `nix-shell`, then we get a Python 3.5 environment with our
locally defined package as well as `numpy` which is build according to the
definition in Nixpkgs. What did we do here? Well, we took the Nix expression
that we used earlier to build a Python environment, and said that we wanted to
include our own version of `toolz`. To introduce our own package in the scope of
`withPackages` we used a
[`let`](http://nixos.org/nix/manual/#sec-constructs) expression.
You can see that we used `ps.numpy` to select numpy from the nixpkgs package set (`ps`).
But we do not take `toolz` from the nixpkgs package set this time.
Instead, `toolz` will resolve to our local definition that we introduced with `let`.
So, what did we do here? Well, we took the Nix expression that we used earlier
to build a Python environment, and said that we wanted to include our own
version of `toolz`, named `my_toolz`. To introduce our own package in the scope
of `withPackages` we used a `let` expression. You can see that we used
`ps.numpy` to select numpy from the nixpkgs package set (`ps`). We did not take
`toolz` from the Nixpkgs package set this time, but instead took our own version
that we introduced with the `let` expression.
### Handling dependencies
#### Handling dependencies
Our example, `toolz`, doesn't have any dependencies on other Python
Our example, `toolz`, does not have any dependencies on other Python
packages or system libraries. According to the manual, `buildPythonPackage`
uses the arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If something is
exclusively a build-time dependency, then the dependency should be included as a
@ -713,63 +776,6 @@ Both are also exported in `nix-shell`.
## FAQ
### How can I install a working Python environment?
As explained in the user's guide installing individual Python packages
imperatively with `nix-env -i` or declaratively in `environment.systemPackages`
is not supported. However, it is possible to install a Python environment with packages (`python.buildEnv`).
In the following examples we create an environment with Python 3.5, `numpy` and `ipython`.
As you might imagine there is one limitation here, and that's you can install
only one environment at a time. You will notice the complaints about collisions
when you try to install a second environment.
#### Environment defined in separate `.nix` file
Create a file, e.g. `build.nix`, with the following expression
```nix
with import <nixpkgs> {};
pkgs.python35.withPackages (ps: with ps; [ numpy ipython ])
```
and install it in your profile with
```shell
nix-env -if build.nix
```
Now you can use the Python interpreter, as well as the extra packages that you added to the environment.
#### Environment defined in `~/.config/nixpkgs/config.nix`
If you prefer to, you could also add the environment as a package override to the Nixpkgs set.
```nix
{ # ...
packageOverrides = pkgs: with pkgs; {
myEnv = python35.withPackages (ps: with ps; [ numpy ipython ]);
};
}
```
and install it in your profile with
```shell
nix-env -iA nixpkgs.myEnv
```
We're installing using the attribute path and assume the channels is named `nixpkgs`.
Note that I'm using the attribute path here.
#### Environment defined in `/etc/nixos/configuration.nix`
For the sake of completeness, here's another example how to install the environment system-wide.
```nix
{ # ...
environment.systemPackages = with pkgs; [
(python35.withPackages(ps: with ps; [ numpy ipython ]))
];
}
```
### How to solve circular dependencies?
Consider the packages `A` and `B` that depend on each other. When packaging `B`,

View File

@ -97,6 +97,7 @@
canndrew = "Andrew Cann <shum@canndrew.org>";
carlsverre = "Carl Sverre <accounts@carlsverre.com>";
casey = "Casey Rodarmor <casey@rodarmor.net>";
caugner = "Claas Augner <nixos@caugner.de>";
cdepillabout = "Dennis Gosnell <cdep.illabout@gmail.com>";
cfouche = "Chaddaï Fouché <chaddai.fouche@gmail.com>";
changlinli = "Changlin Li <mail@changlinli.com>";
@ -215,6 +216,7 @@
garrison = "Jim Garrison <jim@garrison.cc>";
gavin = "Gavin Rogers <gavin@praxeology.co.uk>";
gebner = "Gabriel Ebner <gebner@gebner.org>";
geistesk = "Alvar Penning <post@0x21.biz>";
georgewhewell = "George Whewell <georgerw@gmail.com>";
gilligan = "Tobias Pflug <tobias.pflug@gmail.com>";
giogadi = "Luis G. Torres <lgtorres42@gmail.com>";
@ -578,6 +580,7 @@
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";
timbertson = "Tim Cuthbertson <tim@gfxmonk.net>";
titanous = "Jonathan Rudenberg <jonathan@titanous.com>";
tnias = "Philipp Bartsch <phil@grmr.de>";
tohl = "Tomas Hlavaty <tom@logand.com>";
tokudan = "Daniel Frank <git@danielfrank.net>";
tomberek = "Thomas Bereknyei <tomberek@gmail.com>";

View File

@ -1,2 +1,2 @@
# Expose the minimum required version for evaluating Nixpkgs
"1.10"
"1.11"

View File

@ -31,18 +31,21 @@ EVAL_FILE = {
def get_maintainers(attr_name):
nixname = attr_name.split('.')
meta_json = subprocess.check_output([
'nix-instantiate',
'--eval',
'--strict',
'-A',
'.'.join(nixname[1:]) + '.meta',
EVAL_FILE[nixname[0]],
'--json'])
meta = json.loads(meta_json)
if meta.get('maintainers'):
return [MAINTAINERS[name] for name in meta['maintainers'] if MAINTAINERS.get(name)]
try:
nixname = attr_name.split('.')
meta_json = subprocess.check_output([
'nix-instantiate',
'--eval',
'--strict',
'-A',
'.'.join(nixname[1:]) + '.meta',
EVAL_FILE[nixname[0]],
'--json'])
meta = json.loads(meta_json)
if meta.get('maintainers'):
return [MAINTAINERS[name] for name in meta['maintainers'] if MAINTAINERS.get(name)]
except:
return []
@click.command()

View File

@ -0,0 +1,61 @@
{ config, lib, pkgs, ... }:
with lib;
let
hpssacli = pkgs.stdenv.mkDerivation rec {
name = "hpssacli-${version}";
version = "2.40-13.0";
src = pkgs.fetchurl {
url = "http://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/${name}_amd64.deb";
sha256 = "11w7fwk93lmfw0yya4jpjwdmgjimqxx6412sqa166g1pz4jil4sw";
};
nativeBuildInputs = [ pkgs.dpkg ];
unpackPhase = "dpkg -x $src ./";
installPhase = ''
mkdir -p $out/bin $out/share/doc $out/share/man
mv opt/hp/hpssacli/bld/{hpssascripting,hprmstr,hpssacli} $out/bin/
mv opt/hp/hpssacli/bld/*.{license,txt} $out/share/doc/
mv usr/man $out/share/
for file in $out/bin/*; do
chmod +w $file
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath ${lib.makeLibraryPath [ pkgs.stdenv.cc.cc ]} \
$file
done
'';
dontStrip = true;
meta = with lib; {
description = "HP Smart Array CLI";
homepage = http://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/;
license = licenses.unfreeRedistributable;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ volth ];
};
};
in {
###### interface
options = {
hardware.raid.HPSmartArray = {
enable = mkEnableOption "HP Smart Array kernel modules and CLI utility";
};
};
###### implementation
config = mkIf config.hardware.raid.HPSmartArray.enable {
boot.initrd.kernelModules = [ "sg" ]; /* hpssacli wants it */
boot.initrd.availableKernelModules = [ "hpsa" ];
environment.systemPackages = [ hpssacli ];
};
}

View File

@ -43,6 +43,7 @@
./hardware/nitrokey.nix
./hardware/opengl.nix
./hardware/pcmcia.nix
./hardware/raid/hpsa.nix
./hardware/usb-wwan.nix
./hardware/video/amdgpu.nix
./hardware/video/amdgpu-pro.nix
@ -269,6 +270,7 @@
./services/mail/rspamd.nix
./services/mail/rmilter.nix
./services/mail/nullmailer.nix
./services/misc/airsonic.nix
./services/misc/apache-kafka.nix
./services/misc/autofs.nix
./services/misc/autorandr.nix
@ -562,6 +564,7 @@
./services/security/tor.nix
./services/security/torify.nix
./services/security/torsocks.nix
./services/security/usbguard.nix
./services/security/vault.nix
./services/system/cgmanager.nix
./services/system/cloud-init.nix

View File

@ -1,4 +1,4 @@
{ lib, ... }:
{ lib, pkgs, ... }:
with lib;
@ -14,11 +14,16 @@ with lib;
(mkRenamedOptionModule [ "networking" "enableRT73Firmware" ] [ "networking" "enableRalinkFirmware" ])
(mkRenamedOptionModule [ "services" "cadvisor" "host" ] [ "services" "cadvisor" "listenAddress" ])
(mkChangedOptionModule [ "services" "printing" "gutenprint" ] [ "services" "printing" "drivers" ]
(config:
let enabled = getAttrFromPath [ "services" "printing" "gutenprint" ] config;
in if enabled then [ pkgs.gutenprint ] else [ ]))
(mkRenamedOptionModule [ "services" "elasticsearch" "host" ] [ "services" "elasticsearch" "listenAddress" ])
(mkRenamedOptionModule [ "services" "graphite" "api" "host" ] [ "services" "graphite" "api" "listenAddress" ])
(mkRenamedOptionModule [ "services" "graphite" "web" "host" ] [ "services" "graphite" "web" "listenAddress" ])
(mkRenamedOptionModule [ "services" "logstash" "address" ] [ "services" "logstash" "listenAddress" ])
(mkRenamedOptionModule [ "services" "i2pd" "extIp" ] [ "services" "i2pd" "address" ])
(mkRenamedOptionModule [ "services" "kibana" "host" ] [ "services" "kibana" "listenAddress" ])
(mkRenamedOptionModule [ "services" "logstash" "address" ] [ "services" "logstash" "listenAddress" ])
(mkRenamedOptionModule [ "services" "mpd" "network" "host" ] [ "services" "mpd" "network" "listenAddress" ])
(mkRenamedOptionModule [ "services" "neo4j" "host" ] [ "services" "neo4j" "listenAddress" ])
(mkRenamedOptionModule [ "services" "shout" "host" ] [ "services" "shout" "listenAddress" ])

View File

@ -0,0 +1,117 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.airsonic;
in {
options = {
services.airsonic = {
enable = mkEnableOption "Airsonic, the Free and Open Source media streaming server (fork of Subsonic and Libresonic)";
user = mkOption {
type = types.str;
default = "airsonic";
description = "User account under which airsonic runs.";
};
home = mkOption {
type = types.path;
default = "/var/lib/airsonic";
description = ''
The directory where Airsonic will create files.
Make sure it is writable.
'';
};
listenAddress = mkOption {
type = types.string;
default = "127.0.0.1";
description = ''
The host name or IP address on which to bind Airsonic.
Only relevant if you have multiple network interfaces and want
to make Airsonic available on only one of them. The default value
will bind Airsonic to all available network interfaces.
'';
};
port = mkOption {
type = types.int;
default = 4040;
description = ''
The port on which Airsonic will listen for
incoming HTTP traffic. Set to 0 to disable.
'';
};
contextPath = mkOption {
type = types.path;
default = "/";
description = ''
The context path, i.e., the last part of the Airsonic
URL. Typically '/' or '/airsonic'. Default '/'
'';
};
maxMemory = mkOption {
type = types.int;
default = 100;
description = ''
The memory limit (max Java heap size) in megabytes.
Default: 100
'';
};
transcoders = mkOption {
type = types.listOf types.path;
default = [ "${pkgs.ffmpeg.bin}/bin/ffmpeg" ];
defaultText= [ "\${pkgs.ffmpeg.bin}/bin/ffmpeg" ];
description = ''
List of paths to transcoder executables that should be accessible
from Airsonic. Symlinks will be created to each executable inside
${cfg.home}/transcoders.
'';
};
};
};
config = mkIf cfg.enable {
systemd.services.airsonic = {
description = "Airsonic Media Server";
after = [ "local-fs.target" "network.target" ];
wantedBy = [ "multi-user.target" ];
preStart = ''
# Install transcoders.
rm -rf ${cfg.home}/transcode
mkdir -p ${cfg.home}/transcode
for exe in ${toString cfg.transcoders}; do
ln -sf "$exe" ${cfg.home}/transcode
done
'';
serviceConfig = {
ExecStart = ''
${pkgs.jre}/bin/java -Xmx${toString cfg.maxMemory}m \
-Dairsonic.home=${cfg.home} \
-Dserver.address=${cfg.listenAddress} \
-Dserver.port=${toString cfg.port} \
-Dairsonic.contextPath=${cfg.contextPath} \
-Djava.awt.headless=true \
-verbose:gc \
-jar ${pkgs.airsonic}/webapps/airsonic.war
'';
Restart = "always";
User = "airsonic";
UMask = "0022";
};
};
users.extraUsers.airsonic = {
description = "Airsonic service user";
name = cfg.user;
home = cfg.home;
createHome = true;
};
};
}

View File

@ -28,15 +28,15 @@ let
};
mkKeyedEndpointOpt = name: addr: port: keyFile:
(mkEndpointOpt name addr port) // {
keys = mkOption {
type = types.str;
default = "";
description = ''
File to persist ${lib.toUpper name} keys.
'';
(mkEndpointOpt name addr port) // {
keys = mkOption {
type = types.str;
default = "";
description = ''
File to persist ${lib.toUpper name} keys.
'';
};
};
};
commonTunOpts = let
i2cpOpts = {
@ -59,7 +59,7 @@ let
description = "Number of ElGamal/AES tags to send.";
default = 40;
};
destination = mkOption {
destination = mkOption {
type = types.str;
description = "Remote endpoint, I2P hostname or b32.i2p address.";
};
@ -70,88 +70,91 @@ let
};
} // mkEndpointOpt name "127.0.0.1" 0;
i2pdConf = pkgs.writeText "i2pd.conf"
''
ipv4 = ${boolToString cfg.enableIPv4}
ipv6 = ${boolToString cfg.enableIPv6}
notransit = ${boolToString cfg.notransit}
floodfill = ${boolToString cfg.floodfill}
netid = ${toString cfg.netid}
${if isNull cfg.bandwidth then "" else "bandwidth = ${toString cfg.bandwidth}" }
${if isNull cfg.port then "" else "port = ${toString cfg.port}"}
i2pdConf = pkgs.writeText "i2pd.conf" ''
# DO NOT EDIT -- this file has been generated automatically.
loglevel = ${cfg.logLevel}
[limits]
transittunnels = ${toString cfg.limits.transittunnels}
ipv4 = ${boolToString cfg.enableIPv4}
ipv6 = ${boolToString cfg.enableIPv6}
notransit = ${boolToString cfg.notransit}
floodfill = ${boolToString cfg.floodfill}
netid = ${toString cfg.netid}
${if isNull cfg.bandwidth then "" else "bandwidth = ${toString cfg.bandwidth}" }
${if isNull cfg.port then "" else "port = ${toString cfg.port}"}
[upnp]
enabled = ${boolToString cfg.upnp.enable}
name = ${cfg.upnp.name}
[limits]
transittunnels = ${toString cfg.limits.transittunnels}
[precomputation]
elgamal = ${boolToString cfg.precomputation.elgamal}
[upnp]
enabled = ${boolToString cfg.upnp.enable}
name = ${cfg.upnp.name}
[reseed]
verify = ${boolToString cfg.reseed.verify}
file = ${cfg.reseed.file}
urls = ${builtins.concatStringsSep "," cfg.reseed.urls}
[precomputation]
elgamal = ${boolToString cfg.precomputation.elgamal}
[addressbook]
defaulturl = ${cfg.addressbook.defaulturl}
subscriptions = ${builtins.concatStringsSep "," cfg.addressbook.subscriptions}
${flip concatMapStrings
[reseed]
verify = ${boolToString cfg.reseed.verify}
file = ${cfg.reseed.file}
urls = ${builtins.concatStringsSep "," cfg.reseed.urls}
[addressbook]
defaulturl = ${cfg.addressbook.defaulturl}
subscriptions = ${builtins.concatStringsSep "," cfg.addressbook.subscriptions}
${flip concatMapStrings
(collect (proto: proto ? port && proto ? address && proto ? name) cfg.proto)
(proto: let portStr = toString proto.port; in
''
[${proto.name}]
enabled = ${boolToString proto.enable}
address = ${proto.address}
port = ${toString proto.port}
${if proto ? keys then "keys = ${proto.keys}" else ""}
${if proto ? auth then "auth = ${boolToString proto.auth}" else ""}
${if proto ? user then "user = ${proto.user}" else ""}
${if proto ? pass then "pass = ${proto.pass}" else ""}
${if proto ? outproxy then "outproxy = ${proto.outproxy}" else ""}
${if proto ? outproxyPort then "outproxyport = ${toString proto.outproxyPort}" else ""}
'')
}
(proto: let portStr = toString proto.port; in ''
[${proto.name}]
enabled = ${boolToString proto.enable}
address = ${proto.address}
port = ${toString proto.port}
${if proto ? keys then "keys = ${proto.keys}" else ""}
${if proto ? auth then "auth = ${boolToString proto.auth}" else ""}
${if proto ? user then "user = ${proto.user}" else ""}
${if proto ? pass then "pass = ${proto.pass}" else ""}
${if proto ? outproxy then "outproxy = ${proto.outproxy}" else ""}
${if proto ? outproxyPort then "outproxyport = ${toString proto.outproxyPort}" else ""}
'')
}
'';
i2pdTunnelConf = pkgs.writeText "i2pd-tunnels.conf" ''
${flip concatMapStrings
(collect (tun: tun ? port && tun ? destination) cfg.outTunnels)
(tun: let portStr = toString tun.port; in ''
[${tun.name}]
type = client
destination = ${tun.destination}
keys = ${tun.keys}
address = ${tun.address}
port = ${toString tun.port}
inbound.length = ${toString tun.inbound.length}
outbound.length = ${toString tun.outbound.length}
inbound.quantity = ${toString tun.inbound.quantity}
outbound.quantity = ${toString tun.outbound.quantity}
crypto.tagsToSend = ${toString tun.crypto.tagsToSend}
'')
}
${flip concatMapStrings
(collect (tun: tun ? port && tun ? host) cfg.inTunnels)
(tun: let portStr = toString tun.port; in ''
[${tun.name}]
type = server
destination = ${tun.destination}
keys = ${tun.keys}
host = ${tun.address}
port = ${tun.port}
inport = ${tun.inPort}
accesslist = ${builtins.concatStringsSep "," tun.accessList}
'')
}
# DO NOT EDIT -- this file has been generated automatically.
${flip concatMapStrings
(collect (tun: tun ? port && tun ? destination) cfg.outTunnels)
(tun: let portStr = toString tun.port; in ''
[${tun.name}]
type = client
destination = ${tun.destination}
keys = ${tun.keys}
address = ${tun.address}
port = ${toString tun.port}
inbound.length = ${toString tun.inbound.length}
outbound.length = ${toString tun.outbound.length}
inbound.quantity = ${toString tun.inbound.quantity}
outbound.quantity = ${toString tun.outbound.quantity}
crypto.tagsToSend = ${toString tun.crypto.tagsToSend}
'')
}
${flip concatMapStrings
(collect (tun: tun ? port && tun ? host) cfg.inTunnels)
(tun: let portStr = toString tun.port; in ''
[${tun.name}]
type = server
destination = ${tun.destination}
keys = ${tun.keys}
host = ${tun.address}
port = ${tun.port}
inport = ${tun.inPort}
accesslist = ${builtins.concatStringsSep "," tun.accessList}
'')
}
'';
i2pdSh = pkgs.writeScriptBin "i2pd" ''
#!/bin/sh
${pkgs.i2pd}/bin/i2pd \
${if isNull cfg.extIp then "" else "--host="+cfg.extIp} \
exec ${pkgs.i2pd}/bin/i2pd \
${if isNull cfg.address then "" else "--host="+cfg.address} \
--conf=${i2pdConf} \
--tunconf=${i2pdTunnelConf}
'';
@ -176,11 +179,23 @@ in
'';
};
extIp = mkOption {
logLevel = mkOption {
type = types.enum ["debug" "info" "warn" "error"];
default = "error";
description = ''
The log level. <command>i2pd</command> defaults to "info"
but that generates copious amounts of log messages.
We default to "error" which is similar to the default log
level of <command>tor</command>.
'';
};
address = mkOption {
type = with types; nullOr str;
default = null;
description = ''
Your external IP.
Your external IP or hostname.
'';
};
@ -213,7 +228,7 @@ in
default = null;
description = ''
Set a router bandwidth limit integer in KBps.
If not set, i2pd defaults to 32KBps.
If not set, <command>i2pd</command> defaults to 32KBps.
'';
};
@ -261,9 +276,14 @@ in
precomputation.elgamal = mkOption {
type = types.bool;
default = false;
default = true;
description = ''
Use ElGamal precomputated tables.
Whenever to use precomputated tables for ElGamal.
<command>i2pd</command> defaults to <literal>false</literal>
to save 64M of memory (and looses some performance).
We default to <literal>true</literal> as that is what most
users want anyway.
'';
};
@ -353,7 +373,7 @@ in
};
};
proto.httpProxy = mkKeyedEndpointOpt "httpproxy" "127.0.0.1" 4446 "";
proto.httpProxy = mkKeyedEndpointOpt "httpproxy" "127.0.0.1" 4444 "";
proto.socksProxy = (mkKeyedEndpointOpt "socksproxy" "127.0.0.1" 4447 "")
// {
outproxy = mkOption {

View File

@ -28,16 +28,11 @@ in
users.extraGroups._lldpd = {};
environment.systemPackages = [ pkgs.lldpd ];
systemd.packages = [ pkgs.lldpd ];
systemd.services.lldpd = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
requires = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.lldpd}/bin/lldpd -d ${concatStringsSep " " cfg.extraArgs}";
PrivateTmp = true;
PrivateDevices = true;
};
environment.LLDPD_OPTIONS = concatStringsSep " " cfg.extraArgs;
};
};
}

View File

@ -4,7 +4,7 @@ with lib;
let
inherit (pkgs) cups cups-pk-helper cups-filters gutenprint;
inherit (pkgs) cups cups-pk-helper cups-filters;
cfg = config.services.printing;
@ -35,7 +35,6 @@ let
name = "cups-progs";
paths =
[ cups.out additionalBackends cups-filters pkgs.ghostscript ]
++ optional cfg.gutenprint gutenprint
++ cfg.drivers;
pathsToLink = [ "/lib" "/share/cups" "/bin" ];
postBuild = cfg.bindirCmds;
@ -97,12 +96,15 @@ let
(writeConf "client.conf" cfg.clientConf)
(writeConf "snmp.conf" cfg.snmpConf)
] ++ optional avahiEnabled browsedFile
++ optional cfg.gutenprint gutenprint
++ cfg.drivers;
pathsToLink = [ "/etc/cups" ];
ignoreCollisions = true;
};
filterGutenprint = pkgs: filter (pkg: pkg.meta.isGutenprint or false == true) pkgs;
containsGutenprint = pkgs: length (filterGutenprint pkgs) > 0;
getGutenprint = pkgs: head (filterGutenprint pkgs);
in
{
@ -224,23 +226,17 @@ in
'';
};
gutenprint = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable Gutenprint drivers for CUPS. This includes auto-updating
Gutenprint PPD files.
'';
};
drivers = mkOption {
type = types.listOf types.path;
default = [];
example = literalExample "[ pkgs.splix ]";
example = literalExample "[ pkgs.gutenprint pkgs.hplip pkgs.splix ]";
description = ''
CUPS drivers to use. Drivers provided by CUPS, cups-filters, Ghostscript
and Samba are added unconditionally. For adding Gutenprint, see
<literal>gutenprint</literal>.
CUPS drivers to use. Drivers provided by CUPS, cups-filters,
Ghostscript and Samba are added unconditionally. If this list contains
Gutenprint (i.e. a derivation with
<literal>meta.isGutenprint = true</literal>) the PPD files in
<filename>/var/lib/cups/ppd</filename> will be updated automatically
to avoid errors due to incompatible versions.
'';
};
@ -318,9 +314,9 @@ in
[ ! -e /var/lib/cups/path ] && \
ln -s ${bindir} /var/lib/cups/path
${optionalString cfg.gutenprint ''
${optionalString (containsGutenprint cfg.drivers) ''
if [ -d /var/lib/cups/ppd ]; then
${gutenprint}/bin/cups-genppdupdate -p /var/lib/cups/ppd
${getGutenprint cfg.drivers}/bin/cups-genppdupdate -p /var/lib/cups/ppd
fi
''}
'';

View File

@ -0,0 +1,200 @@
{config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.usbguard;
# valid policy options
policy = (types.enum [ "allow" "block" "reject" "keep" "apply-policy" ]);
# decide what file to use for rules
ruleFile = if cfg.rules != null then pkgs.writeText "usbguard-rules" cfg.rules else cfg.ruleFile;
daemonConf = ''
# generated by nixos/modules/services/security/usbguard.nix
RuleFile=${ruleFile}
ImplicitPolicyTarget=${cfg.implictPolicyTarget}
PresentDevicePolicy=${cfg.presentDevicePolicy}
PresentControllerPolicy=${cfg.presentControllerPolicy}
InsertedDevicePolicy=${cfg.insertedDevicePolicy}
RestoreControllerDeviceState=${if cfg.restoreControllerDeviceState then "true" else "false"}
# this does not seem useful for endusers to change
DeviceManagerBackend=uevent
IPCAllowedUsers=${concatStringsSep " " cfg.IPCAllowedUsers}
IPCAllowedGroups=${concatStringsSep " " cfg.IPCAllowedGroups}
IPCAccessControlFiles=${cfg.IPCAccessControlFiles}
DeviceRulesWithPort=${if cfg.deviceRulesWithPort then "true" else "false"}
AuditFilePath=${cfg.auditFilePath}
'';
daemonConfFile = pkgs.writeText "usbguard-daemon-conf" daemonConf;
in {
###### interface
options = {
services.usbguard = {
enable = mkEnableOption "USBGuard daemon";
ruleFile = mkOption {
type = types.path;
default = "/var/lib/usbguard/rules.conf";
description = ''
The USBGuard daemon will use this file to load the policy rule set
from it and to write new rules received via the IPC interface.
Running the command <literal>usbguard generate-policy</literal> as
root will generate a config for your currently plugged in devices.
For a in depth guide consult the official documentation.
Setting the <literal>rules</literal> option will ignore the
<literal>ruleFile</literal> option.
'';
};
rules = mkOption {
type = types.nullOr types.str;
default = null;
example = ''
allow with-interface equals { 08:*:* }
'';
description = ''
The USBGuard daemon will load this policy rule set. Modifying it via
the IPC interface won't work if you use this option, since the
contents of this option will be written into the nix-store it will be
read-only.
You can still use <literal> usbguard generate-policy</literal> to
generate rules, but you would have to insert them here.
Setting the <literal>rules</literal> option will ignore the
<literal>ruleFile</literal> option.
'';
};
implictPolicyTarget = mkOption {
type = policy;
default = "block";
description = ''
How to treat USB devices that don't match any rule in the policy.
Target should be one of allow, block or reject (logically remove the
device node from the system).
'';
};
presentDevicePolicy = mkOption {
type = policy;
default = "apply-policy";
description = ''
How to treat USB devices that are already connected when the daemon
starts. Policy should be one of allow, block, reject, keep (keep
whatever state the device is currently in) or apply-policy (evaluate
the rule set for every present device).
'';
};
presentControllerPolicy = mkOption {
type = policy;
default = "keep";
description = ''
How to treat USB controller devices that are already connected when
the daemon starts. One of allow, block, reject, keep or apply-policy.
'';
};
insertedDevicePolicy = mkOption {
type = policy;
default = "apply-policy";
description = ''
How to treat USB devices that are already connected after the daemon
starts. One of block, reject, apply-policy.
'';
};
restoreControllerDeviceState = mkOption {
type = types.bool;
default = false;
description = ''
The USBGuard daemon modifies some attributes of controller
devices like the default authorization state of new child device
instances. Using this setting, you can controll whether the daemon
will try to restore the attribute values to the state before
modificaton on shutdown.
'';
};
IPCAllowedUsers = mkOption {
type = types.listOf types.str;
default = [ "root" ];
example = [ "root" "yourusername" ];
description = ''
A list of usernames that the daemon will accept IPC connections from.
'';
};
IPCAllowedGroups = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "wheel" ];
description = ''
A list of groupnames that the daemon will accept IPC connections
from.
'';
};
IPCAccessControlFiles = mkOption {
type = types.path;
default = "/var/lib/usbguard/IPCAccessControl.d/";
description = ''
The files at this location will be interpreted by the daemon as IPC
access control definition files. See the IPC ACCESS CONTROL section
in <citerefentry><refentrytitle>usbguard-daemon.conf</refentrytitle>
<manvolnum>5</manvolnum></citerefentry> for more details.
'';
};
deviceRulesWithPort = mkOption {
type = types.bool;
default = false;
description = ''
Generate device specific rules including the "via-port" attribute.
'';
};
auditFilePath = mkOption {
type = types.path;
default = "/var/log/usbguard/usbguard-audit.log";
description = ''
USBGuard audit events log file path.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.usbguard ];
systemd.services.usbguard = {
description = "USBGuard daemon";
wantedBy = [ "basic.target" ];
wants = [ "systemd-udevd.service" "local-fs.target" ];
# make sure an empty rule file and required directories exist
preStart = ''mkdir -p $(dirname "${cfg.ruleFile}") "${cfg.IPCAccessControlFiles}" && ([ -f "${cfg.ruleFile}" ] || touch ${cfg.ruleFile})'';
serviceConfig = {
Type = "simple";
ExecStart = ''${pkgs.usbguard}/bin/usbguard-daemon -d -k -c ${daemonConfFile}'';
Restart = "on-failure";
};
};
};
}

View File

@ -150,7 +150,8 @@ in {
PrivateDevices = true;
ProtectSystem = "full";
ProtectHome = true;
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
# XXX: We need AF_NETLINK to make the sendmail SUID binary from postfix work
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
Type = "notify";
ExecStart = "${cfg.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}";
ExecReload = "${pkgs.coreutils}/bin/kill -USR2 $MAINPID";

View File

@ -102,7 +102,7 @@ in {
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ libvirt netcat-openbsd ];
environment.systemPackages = with pkgs; [ libvirt netcat-openbsd qemu_kvm ];
boot.kernelModules = [ "tun" ];

View File

@ -3,13 +3,13 @@
, perl, DigestSHA, MusicBrainz, MusicBrainzDiscID
, makeWrapper }:
let version = "2.7.2";
let version = "2.8.1";
in
stdenv.mkDerivation {
name = "abcde-${version}";
src = fetchurl {
url = "http://abcde.einval.com/download/abcde-${version}.tar.gz";
sha256 = "1pakpi41k8yd780mfp0snhia6mmwjwxk9lcrq6gynimch8b8hfda";
sha256 = "0f9bjs0phk23vry7gvh0cll9vl6kmc1y4fwwh762scfdvpbp3774";
};
# FIXME: This package does not support `distmp3', `eject', etc.

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, boost, cmake, chromaprint, gettext, gst_all_1, liblastfm
, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist, usbmuxd, libmtp
, libpulseaudio, gvfs, libcdio, libechonest, libspotify, pcre, protobuf
, libpulseaudio, gvfs, libcdio, libechonest, libspotify, pcre, projectm, protobuf
, qca2, pkgconfig, sparsehash, config, makeWrapper, runCommand, gst_plugins }:
let
@ -26,9 +26,10 @@ let
./clementine-spotify-blob-remove-from-build.patch
];
nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [
boost
cmake
chromaprint
fftw
gettext
@ -40,7 +41,7 @@ let
liblastfm
libpulseaudio
pcre
pkgconfig
projectm
protobuf
qca2
qjson
@ -55,7 +56,10 @@ let
free = stdenv.mkDerivation {
name = "clementine-free-${version}";
inherit patches src buildInputs;
inherit src patches nativeBuildInputs buildInputs;
cmakeFlags = [ "-DUSE_SYSTEM_PROJECTM=ON" ];
enableParallelBuilding = true;
postPatch = ''
sed -i src/CMakeLists.txt \
@ -76,7 +80,7 @@ let
blob = stdenv.mkDerivation {
name = "clementine-blob-${version}";
# Use the same patches and sources as Clementine
inherit src;
inherit src nativeBuildInputs;
patches = [
./clementine-spotify-blob.patch
@ -114,15 +118,13 @@ runCommand "clementine-${version}"
dontPatchELF = true;
dontStrip = true;
meta = {
homepage = http://www.clementine-player.org;
description = "A multiplatform music player"
+ " (" + (optionalString withSpotify "with Spotify, ")
+ "with gstreamer plugins: "
+ concatStrings (intersperse ", " (map (x: x.name) gst_plugins))
+ ")";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = [ maintainers.ttuegel ];
inherit (free.meta) homepage platforms maintainers;
};
}
''

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "drumkv1-${version}";
version = "0.8.1";
version = "0.8.4";
src = fetchurl {
url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
sha256 = "0l6kjb1q9vslwy56836a0c65mf8z8ycam5vzz3k4qvd8g74bs1zq";
sha256 = "0qqpklzy4wgw9jy0v2810j06712q90bwc69fp7da82536ba058a9";
};
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];

View File

@ -4,7 +4,7 @@
}:
let
version = "4.4.0";
version = "4.4.1";
deps = [
alsaLib
@ -46,7 +46,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/releases/download/v${version}/google-play-music-desktop-player_${version}_amd64.deb";
sha256 = "01a52rsp0a9k47mm3wqnhnmlnd7fw6xmdrn882msldijjgwsq5cc";
sha256 = "0jqgawgij6jxf3zy3glviqj6s34mq7d756syg2c7kk1gkqkwgdpw";
};
dontBuild = true;

View File

@ -12,11 +12,11 @@ in
stdenv.mkDerivation rec {
name = "guitarix-${version}";
version = "0.35.3";
version = "0.35.6";
src = fetchurl {
url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz";
sha256 = "0pvw4ijkq6lcn45vrif9b4mqmgzi0qg1dp5b33kb5zan6n1aci4j";
sha256 = "0ffvfnvhj6vz73zsrpi88hs69ys4zskm847zf825dl2r39n9nn41";
};
nativeBuildInputs = [ gettext intltool wrapGAppsHook pkgconfig python2 ];

View File

@ -67,10 +67,6 @@ stdenv.mkDerivation rec {
export CMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH:$(echo "${jamomacore}/jamoma/share/cmake/Jamoma")"
'';
preBuild = ''
ninja
'';
installPhase = ''
cmake --build . --target install
'';

View File

@ -0,0 +1,23 @@
{ stdenv, fetchurl, pkgconfig, libjack2, alsaLib, libsndfile, liblo, lv2, qt5, fftw }:
stdenv.mkDerivation rec {
name = "padthv1-${version}";
version = "0.8.4";
src = fetchurl {
url = "mirror://sourceforge/padthv1/${name}.tar.gz";
sha256 = "1p6wfgh90h7gj1j3hlvwik3zj07xamkxbya85va2lsj6fkkkk20r";
};
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftw ];
nativeBuildInputs = [ pkgconfig ];
meta = with stdenv.lib; {
description = "polyphonic additive synthesizer";
homepage = http://padthv1.sourceforge.net/;
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.magnetophon ];
};
}

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgconfig, cmake
{ stdenv, fetchurl, fetchpatch, pkgconfig, cmake
, glew, ftgl, ttf_bitstream_vera
, withQt ? true, qt4
, withLibvisual ? false, libvisual, SDL
@ -24,7 +24,13 @@ stdenv.mkDerivation {
sha256 = "1vh6jk68a0jdb6qwppb6f8cbgmhnv2ba3bcavzfd6sq06gq08cji";
};
patch_gcc6 = fetchpatch {
url = https://raw.githubusercontent.com/gentoo/gentoo/45abd63abc6644b6e177c057b5b42d894dbf8e29/media-libs/libprojectm/files/libprojectm-2.1.0-fix-c++14.patch;
sha256 = "1i50scxv1jlqvb3jm3sql89a7wqckxhlpvnhz20vvmm1kii6lrsn";
};
patchPhase = ''
patch -d src/libprojectM -p1 -i "$patch_gcc6"
sed -i 's:''${LIBVISUAL_PLUGINSDIR}:''${CMAKE_INSTALL_PREFIX}/lib/libvisual-0.4:' \
src/projectM-libvisual/CMakeLists.txt
'';

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "samplv1-${version}";
version = "0.8.0";
version = "0.8.4";
src = fetchurl {
url = "mirror://sourceforge/samplv1/${name}.tar.gz";
sha256 = "0j3hkmd9q0bw9b7nk9cssqywlrishkd1n790a9vq6gh3pdc5sf3r";
sha256 = "107p2xsj066q2bil0xcgqrrn7lawp02wzf7qmlajcbnd79jhsi6i";
};
buildInputs = [ libjack2 alsaLib liblo libsndfile lv2 qt5.qtbase qt5.qttools];

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "synthv1-${version}";
version = "0.8.0";
version = "0.8.4";
src = fetchurl {
url = "mirror://sourceforge/synthv1/${name}.tar.gz";
sha256 = "155pfyhr6d35ciw95pbxlqy7751cmij8j5d849rvblqbjzyzb5qx";
sha256 = "0awk2zx0xa6vl6ah24zz0k2mwsx50hh5g1rh32mp790fp4x7l5s8";
};
buildInputs = [ qt5.qtbase qt5.qttools libjack2 alsaLib liblo lv2 ];

View File

@ -6,11 +6,11 @@ assert stdenv ? glibc;
stdenv.mkDerivation rec {
name = "yoshimi-${version}";
version = "1.5.0";
version = "1.5.3";
src = fetchurl {
url = "mirror://sourceforge/yoshimi/${name}.tar.bz2";
sha256 = "10s1i18xlmvqfrnr0zn2mj2b28i7p62dlqzzzkmpaapqj1gsgpz5";
sha256 = "0sns35pyw2f74xrv1fxiyf9g9415kvh2rrbdjd60hsiv584nlari";
};
buildInputs = [

View File

@ -27,9 +27,9 @@ in rec {
preview = mkStudio rec {
pname = "android-studio-preview";
version = "3.0.0.11"; # "Android Studio 3.0 Beta 3"
build = "171.4294784";
sha256Hash = "11m939hpwnrrz0grnc1x1ff19yjnwzx5w1dzaw9hpm8ylx692mrf";
version = "3.0.0.10"; # "Android Studio 3.0 Beta 2"
build = "171.4263559";
sha256Hash = "0bya69qa50s6dbvlzb198b5w6ixs21y6b56v3v1xjb3kndf9y44w";
meta = stable.meta // {
description = "The Official IDE for Android (preview version)";

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "atom-${version}";
version = "1.19.2";
version = "1.19.3";
src = fetchurl {
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
sha256 = "0bfhcxhjsa7p35s5dz3zjxm4wc802m3k137p04l9anr3v5hrgqmb";
sha256 = "0cms0zgxlzrm0sdqm97qdvrmvjcdcrbqi3bw66xabgx365pkry7z";
name = "${name}.deb";
};

View File

@ -320,15 +320,15 @@ in
phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}";
version = "2017.1.4";
version = "2017.2.1"; /* updated by script */
description = "Professional IDE for Web and PHP developers";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
sha256 = "0zrbcziznz6dwh56snr27752xcsnl2gsxzi6jiraplkd92f2xlaf";
sha256 = "2f1af9ef6e9cda25a809a19a25f2d4fbaef00edf9d1d5a195572ab5e04e71e5e"; /* updated by script */
};
wmClass = "jetbrains-phpstorm";
update-channel = "PS2017.1";
update-channel = "PS2017.2";
};
phpstorm10 = buildPhpStorm rec {

View File

@ -10,6 +10,7 @@ let
if stdenv.system == "i686-linux" then "i686"
else if stdenv.system == "x86_64-linux" || stdenv.system == "x86_64-darwin" then "x86-64"
else if stdenv.system == "armv7l-linux" then "armv7l"
else if stdenv.system == "aarch64-linux" then "aarch64"
else throw "ImageMagick is not supported on this platform.";
cfg = {

View File

@ -10,6 +10,7 @@ let
if stdenv.system == "i686-linux" then "i686"
else if stdenv.system == "x86_64-linux" || stdenv.system == "x86_64-darwin" then "x86-64"
else if stdenv.system == "armv7l-linux" then "armv7l"
else if stdenv.system == "aarch64-linux" then "aarch64"
else throw "ImageMagick is not supported on this platform.";
cfg = {

View File

@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
};
cmakeFlags = "-G Ninja";
buildPhase = "ninja";
installPhase = ''
ninja install
cd ..

View File

@ -6,7 +6,7 @@
assert stdenv.system == "x86_64-linux";
let version = "2017-SP1"; in
let version = "2017-SP2"; in
stdenv.mkDerivation {
name = "draftsight-${version}";
@ -56,7 +56,7 @@ stdenv.mkDerivation {
src = requireFile {
name = "draftSight.deb";
url = "https://www.3ds.com/?eID=3ds_brand_download&uid=41&pidDown=13426&L=0";
sha256 = "0s7b74685r0961kd59hxpdp9s5yhvzx8307imsxm66f99s8rswdv";
sha256 = "04i3dqza6y4p2059pqg5inp3qzr5jmiqplzzk7h1a6gh380v1rbr";
};
libPath = stdenv.lib.makeLibraryPath [ gcc.cc mesa xdg_utils

View File

@ -2,7 +2,7 @@
mkDerivation, lib, kdepimTeam,
extra-cmake-modules, kdoctools,
akonadi, akonadi-contacts, calendarsupport, kcalcore, kcompletion,
kconfigwidgets, kcontacts, kdbusaddons, kitemmodels, kpimtextedit,
kconfigwidgets, kcontacts, kdbusaddons, kitemmodels, kpimtextedit, libkdepim,
ktextwidgets, kxmlgui, messagelib, qtbase,
}:
@ -16,6 +16,6 @@ mkDerivation {
buildInputs = [
akonadi akonadi-contacts calendarsupport kcalcore kcompletion kconfigwidgets
kcontacts kdbusaddons kitemmodels kpimtextedit ktextwidgets kxmlgui
messagelib qtbase
messagelib qtbase libkdepim
];
}

View File

@ -44,17 +44,6 @@ Index: grantleetheme-17.04.0/src/grantleetheme.cpp
loader->setTheme(dirName);
if (!sEngine) {
@@ -102,9 +105,7 @@ QString ThemePrivate::errorTemplate(cons
Grantlee::Context ctx = createContext();
ctx.insert(QStringLiteral("error"), reason);
ctx.insert(QStringLiteral("templateName"), origTemplateName);
- const QString errorString = failedTemplate
- ? failedTemplate->errorString()
- : QStringLiteral("(null template)");
+ const QString errorString = failedTemplate->errorString();
ctx.insert(QStringLiteral("errorMessage"), errorString);
return tpl->render(&ctx);
}
@@ -122,7 +123,7 @@ Theme::Theme(const QString &themePath, c
KConfigGroup group(&config, QStringLiteral("Desktop Entry"));
if (group.isValid()) {

View File

@ -1,25 +0,0 @@
diff --git a/src/grantleetheme.cpp b/src/grantleetheme.cpp
index b86fc3a..8af72f4 100644
--- a/src/grantleetheme.cpp
+++ b/src/grantleetheme.cpp
@@ -102,7 +102,10 @@ QString ThemePrivate::errorTemplate(const QString &reason,
Grantlee::Context ctx = createContext();
ctx.insert(QStringLiteral("error"), reason);
ctx.insert(QStringLiteral("templateName"), origTemplateName);
- ctx.insert(QStringLiteral("errorMessage"), failedTemplate->errorString());
+ const QString errorString = failedTemplate
+ ? failedTemplate->errorString()
+ : QStringLiteral("(null template)");
+ ctx.insert(QStringLiteral("errorMessage"), errorString);
return tpl->render(&ctx);
}
@@ -208,7 +211,7 @@ QString Theme::render(const QString &templateName, const QVariantHash &data, con
}
Grantlee::Template tpl = d->loader->loadByName(templateName, ThemePrivate::sEngine);
- if (tpl->error()) {
+ if (!tpl || tpl->error()) {
return d->errorTemplate(i18n("Template parsing error"), templateName, tpl);
}

View File

@ -1,2 +1 @@
grantleetheme_check_null.patch
grantlee-merge-theme-dirs.patch

View File

@ -1,11 +1,11 @@
{ mkDerivation, lib
, extra-cmake-modules, kdoctools, makeWrapper
, extra-cmake-modules, kdoctools, makeWrapper, shared_mime_info
, qtwebkit
, libkcddb, karchive, kcmutils, kfilemetadata, knewstuff, knotifyconfig, solid, kxmlgui
, flac, lame, libmad, libmpcdec, libvorbis
, libsamplerate, libsndfile, taglib
, cdparanoia, cdrdao, cdrtools, dvdplusrwtools, libburn, libdvdcss, libdvdread, vcdimager
, ffmpeg, libmusicbrainz2, normalize, sox, transcode, shared_mime_info, kinit
, ffmpeg, libmusicbrainz3, normalize, sox, transcode, kinit
}:
mkDerivation {
@ -15,7 +15,7 @@ mkDerivation {
maintainers = with maintainers; [ sander phreedom ];
platforms = platforms.linux;
};
nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper shared_mime_info ];
nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
propagatedBuildInputs = [
# qt
qtwebkit
@ -28,7 +28,7 @@ mkDerivation {
# cd/dvd
cdparanoia libdvdcss libdvdread
# others
ffmpeg libmusicbrainz2 shared_mime_info
ffmpeg libmusicbrainz3 shared_mime_info
];
propagatedUserEnvPkgs = [ (lib.getBin kinit) ];
postFixup =

View File

@ -5,7 +5,7 @@
akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes,
kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement,
kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig,
qtwebengine,
pimcommon, qtwebengine,
}:
mkDerivation {
@ -19,6 +19,7 @@ mkDerivation {
akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes
kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap
kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine
pimcommon
];
# Attempts to build some files before dependencies have been generated
enableParallelBuilding = false;

View File

@ -2,7 +2,7 @@
mkDerivation, lib, kdepimTeam,
extra-cmake-modules, kdoctools,
akonadi-search, kbookmarks, kcalutils, kcmutils, kcompletion, kconfig,
kconfigwidgets, kcoreaddons, kdelibs4support, kdepim-apps-libs,
kconfigwidgets, kcoreaddons, kdelibs4support, kdepim-apps-libs, libkdepim,
kdepim-runtime, kguiaddons, ki18n, kiconthemes, kinit, kio, kldap,
kmail-account-wizard, kmailtransport, knotifications, knotifyconfig,
kontactinterface, kparts, kpty, kservice, ktextwidgets, ktnef, kwallet,
@ -20,7 +20,7 @@ mkDerivation {
buildInputs = [
akonadi-search kbookmarks kcalutils kcmutils kcompletion kconfig
kconfigwidgets kcoreaddons kdelibs4support kdepim-apps-libs kguiaddons ki18n
kiconthemes kinit kio kldap kmail-account-wizard kmailtransport
kiconthemes kinit kio kldap kmail-account-wizard kmailtransport libkdepim
knotifications knotifyconfig kontactinterface kparts kpty kservice
ktextwidgets ktnef kwidgetsaddons kwindowsystem kxmlgui libgravatar
libksieve mailcommon messagelib pim-sieve-editor qtscript qtwebengine

View File

@ -4,7 +4,7 @@
qtwebengine,
kcmutils, kcrash, kdbusaddons, kwindowsystem,
akonadi, grantleetheme, kdepim-apps-libs, kontactinterface, kpimtextedit,
mailcommon,
mailcommon, libkdepim
}:
mkDerivation {
@ -18,6 +18,6 @@ mkDerivation {
qtwebengine
kcmutils kcrash kdbusaddons kwindowsystem
akonadi grantleetheme kdepim-apps-libs kontactinterface kpimtextedit
mailcommon
mailcommon libkdepim
];
}

View File

@ -3,7 +3,7 @@
extra-cmake-modules, kdoctools,
akonadi, akonadi-mime, karchive, kcodecs, kcompletion, kconfigwidgets,
kdbusaddons, kdesignerplugin, kiconthemes, kio, kitemmodels, kldap,
kmailtransport, kwindowsystem, mailimporter, messagelib, phonon,
kmailtransport, kwindowsystem, mailimporter, messagelib, phonon, libkdepim
}:
mkDerivation {
@ -16,7 +16,7 @@ mkDerivation {
buildInputs = [
akonadi akonadi-mime karchive kcodecs kcompletion kconfigwidgets kdbusaddons
kdesignerplugin kiconthemes kio kitemmodels kldap kmailtransport
kwindowsystem mailimporter messagelib phonon
kwindowsystem mailimporter messagelib phonon libkdepim
];
outputs = [ "out" "dev" ];
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchFromGitHub, pkgconfig, libnotify, gdk_pixbuf }:
stdenv.mkDerivation rec {
name = "et-${version}";
version = "2017-03-04";
src = fetchFromGitHub {
owner = "geistesk";
repo = "et";
rev = "151e9b6bc0d2d4f45bda8ced740ee99d0f2012f6";
sha256 = "1a1jdnzmal05k506bbvzlwsj2f3kql6l5xc1gdabm79y6vaf4r7s";
};
buildInputs = [ libnotify gdk_pixbuf ];
nativeBuildInputs = [ pkgconfig ];
installPhase = ''
mkdir -p $out/bin
cp et $out/bin
cp et-status.sh $out/bin/et-status
'';
meta = with stdenv.lib; {
description = "Minimal libnotify-based (egg) timer for GNU/Linux";
homepage = https://github.com/geistesk/et;
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ geistesk ];
};
}

View File

@ -16,11 +16,13 @@ stdenv.mkDerivation {
makeFlags = "INSTALLDIR=$(out)";
NIX_CFLAGS_COMPILE = [ "-Wno-error=narrowing" ]; # since gcc-6
patchPhase = ''
# don't try to use ccache
substituteInPlace makefiles/arch/desktop.mk \
--replace "CCACHE = " "# CCACHE = "
substituteInPlace fbreader/desktop/Makefile \
--replace "/usr/share" "$out/share"
'';

View File

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, qt4, qmake4Hook, gnuradio, boost, gnuradio-osmosdr
{ stdenv, fetchFromGitHub, cmake, qtbase, qtsvg, gnuradio, boost, gnuradio-osmosdr
# drivers (optional):
, rtl-sdr, hackrf
, pulseaudioSupport ? true, libpulseaudio
@ -8,29 +8,25 @@ assert pulseaudioSupport -> libpulseaudio != null;
stdenv.mkDerivation rec {
name = "gqrx-${version}";
version = "2.5.3";
version = "2.7";
src = fetchFromGitHub {
owner = "csete";
repo = "gqrx";
rev = "v${version}";
sha256 = "02pavd1kc0gsnrl18bfa01r2f3j4j05zly4a8zwss9yrsgf8432x";
sha256 = "1dslb8l8ggj6vf9257c2bj0z8z1wy9c6sr2zksp5jdgf8m4j71im";
};
nativeBuildInputs = [ qmake4Hook ];
nativeBuildInputs = [ cmake ];
buildInputs = [
qt4 gnuradio boost gnuradio-osmosdr rtl-sdr hackrf
qtbase qtsvg gnuradio boost gnuradio-osmosdr rtl-sdr hackrf
] ++ stdenv.lib.optionals pulseaudioSupport [ libpulseaudio ];
enableParallelBuilding = true;
postInstall = ''
mkdir -p "$out/share/applications"
mkdir -p "$out/share/icons"
cp gqrx.desktop "$out/share/applications/"
cp resources/icons/gqrx.svg "$out/share/icons/"
install -vD $src/gqrx.desktop -t "$out/share/applications/"
install -vD $src/resources/icons/gqrx.svg -t "$out/share/icons/"
'';
meta = with stdenv.lib; {

View File

@ -1,6 +1,6 @@
{ cairo, cmake, fetchgit, libXdmcp, libpthreadstubs, libxcb, pcre, pkgconfig
, python2 , stdenv, xcbproto, xcbutil, xcbutilimage, xcbutilrenderutil
, xcbutilwm, xcbutilxrm
, xcbutilwm, xcbutilxrm, fetchpatch
# optional packages-- override the variables ending in 'Support' to enable or
# disable modules
@ -32,13 +32,21 @@ stdenv.mkDerivation rec {
description = "A fast and easy-to-use tool for creatin status bars.";
longDescription = ''
Polybar aims to help users build beautiful and highly customizable
status bars for their desktop environment, without the need of
status bars for their desktop environment, without the need of
having a black belt in shell scripting.
'';
'';
license = licenses.mit;
maintainers = [ maintainers.afldcr ];
platforms = platforms.unix;
};
# This patch should be removed with next stable release.
patches = [
(fetchpatch {
name = "polybar-remove-curlbuild.patch";
url = "https://github.com/jaagr/polybar/commit/d35abc7620c8f06618b4708d9a969dfa2f309e96.patch";
sha256 = "14xr65vsjvd51hzg9linj09w0nnixgn26dh9lqxy25bxachcyzxy";
})
];
buildInputs = [
cairo libXdmcp libpthreadstubs libxcb pcre python2 xcbproto xcbutil

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "postage-${version}";
version = "3.2.17";
version = "3.2.18";
src = fetchFromGitHub {
owner = "workflowproducts";
repo = "postage";
rev = "eV${version}";
sha256 = "1c9ss5vx8s05cgw68z7y224qq8z8kz8rxfgcayd2ny200kqyn5bl";
sha256 = "1kdg8pw2vxwkxw3b6dim4s740s60j3iyrh96524wi3lqkkq98krn";
};
buildInputs = [ postgresql openssl ];

View File

@ -4,22 +4,22 @@
stdenv.mkDerivation rec {
name = "styx-${version}";
version = "0.6.0";
version = "0.7.0";
src = fetchFromGitHub {
owner = "styx-static";
repo = "styx";
rev = "v${version}";
sha256 = "1dl6zmic8bv17f3ib8by66c2fj7izlnv9dh2cfa2m0ipkxk930vk";
sha256 = "044zpj92w96csaddf1qnnc2w2w9iq4b7rzlqqsqnd1s0a87lm1qd";
};
setSourceRoot = "cd styx-*/src; export sourceRoot=`pwd`";
server = "${caddy.bin}/bin/caddy";
linkcheck = "${linkchecker}/bin/linkchecker";
nativeBuildInputs = [ asciidoctor ];
outputs = [ "out" "lib" "themes" ];
propagatedBuildInputs = [
file
lessc
@ -30,39 +30,42 @@ stdenv.mkDerivation rec {
(python27.withPackages (ps: [ ps.parsimonious ]))
];
outputs = [ "out" "lib" ];
installPhase = ''
mkdir $out
install -D -m 777 styx.sh $out/bin/styx
install -D -m 777 src/styx.sh $out/bin/styx
mkdir -p $out/share/styx
cp -r scaffold $out/share/styx
cp -r nix $out/share/styx
mkdir -p $out/share/styx-src
cp -r ./* $out/share/styx-src
mkdir -p $out/share/doc/styx
asciidoctor doc/index.adoc -o $out/share/doc/styx/index.html
asciidoctor doc/styx-themes.adoc -o $out/share/doc/styx/styx-themes.html
asciidoctor doc/library.adoc -o $out/share/doc/styx/library.html
cp -r doc/highlight $out/share/doc/styx/
cp -r doc/imgs $out/share/doc/styx/
cp -r tools $out/share
asciidoctor src/doc/index.adoc -o $out/share/doc/styx/index.html
asciidoctor src/doc/styx-themes.adoc -o $out/share/doc/styx/styx-themes.html
asciidoctor src/doc/library.adoc -o $out/share/doc/styx/library.html
cp -r src/doc/highlight $out/share/doc/styx/
cp -r src/doc/imgs $out/share/doc/styx/
substituteAllInPlace $out/bin/styx
substituteAllInPlace $out/share/doc/styx/index.html
substituteAllInPlace $out/share/doc/styx/styx-themes.html
substituteAllInPlace $out/share/doc/styx/library.html
mkdir -p $out/share/styx/scaffold
cp -r src/scaffold $out/share/styx
cp -r src/tools $out/share/styx
mkdir $lib
cp -r lib/* $lib
cp -r src/lib/* $lib
mkdir $themes
cp -r themes/* $themes
'';
meta = with stdenv.lib; {
description = "Nix based static site generator";
maintainers = with maintainers; [ ericsagnes ];
homepage = https://styx-static.github.io/styx-site/;
description = "Nix based static site generator";
maintainers = with maintainers; [ ericsagnes ];
homepage = https://styx-static.github.io/styx-site/;
downloadPage = https://github.com/styx-static/styx/;
platforms = platforms.all;
license = licenses.mit;
platforms = platforms.all;
license = licenses.mit;
};
}

View File

@ -1,104 +0,0 @@
{ fetchFromGitHub, stdenv }:
let
mkThemeDrv = args: stdenv.mkDerivation {
name = "styx-theme-${args.themeName}-${args.version}";
src = fetchFromGitHub ({
owner = "styx-static";
repo = "styx-theme-${args.themeName}";
} // args.src);
installPhase = ''
mkdir $out
cp -r * $out/
'';
preferLocalBuild = true;
meta = with stdenv.lib; {
maintainer = with maintainers; [ ericsagnes ];
description = "${args.themeName} theme for styx";
platforms = platforms.all;
} // args.meta;
};
in
{
agency = mkThemeDrv rec {
themeName = "agency";
version = "0.6.0";
src = {
rev = "v${version}";
sha256 = "1i9bajzgmxd3ffvgic6wwnqijsgkfr2mfdijkgw9yf3bxcdq5cb6";
};
meta = {
license = stdenv.lib.licenses.asl20;
longDescription = ''
Agency Theme is a one page portfolio for companies and freelancers.
This theme features several content sections, a responsive portfolio
grid with hover effects, full page portfolio item modals, a timeline,
and a contact form.
'';
};
};
generic-templates = mkThemeDrv rec {
themeName = "generic-templates";
version = "0.6.0";
src = {
rev = "v${version}";
sha256 = "0wr2687pffczn0sns1xvqxr2gpf5v9j64zbj6q9f7km6bq0zpiiy";
};
meta = {
license = stdenv.lib.licenses.mit;
};
};
hyde = mkThemeDrv rec {
themeName = "hyde";
version = "0.6.0";
src = {
rev = "v${version}";
sha256 = "0yca76p297ymxd049fkcpw8bca5b9yvv36707z31jbijriy50zxb";
};
meta = {
license = stdenv.lib.licenses.mit;
longDescription = ''
Port of the Jekyll Hyde theme to styx; Hyde is a brazen two-column
Styx theme that pairs a prominent sidebar with uncomplicated content.
'';
};
};
orbit = mkThemeDrv rec {
themeName = "orbit";
version = "0.6.0";
src = {
rev = "v${version}";
sha256 = "0qdx1r7dcycr5hzl9ix70pl4xf0426ghpi1lgh61zdpdhcch0xfi";
};
meta = {
license = stdenv.lib.licenses.cc-by-30;
longDescription = ''
Orbit is a free resume/CV template designed for developers.
'';
};
};
showcase = mkThemeDrv rec {
themeName = "showcase";
version = "0.6.0";
src = {
rev = "v${version}";
sha256 = "1jfhw49yag8l1zr69l01y1p4p88waig3xv3b6c3mfxc8jrchp7pb";
};
meta = {
license = stdenv.lib.licenses.mit;
longDescription = ''
Theme that show most of styx functionalities with a basic design.
'';
};
};
}

View File

@ -16,9 +16,15 @@ stdenv.mkDerivation rec {
patches = [ ./openssl-1.1.patch ];
patch_gcc6 = fetchpatch {
url = https://raw.githubusercontent.com/gentoo/gentoo/20e2bff3697ebf5f291e9907b34aae3074a36b53/dev-cpp/gmock/files/gmock-1.7.0-gcc6.patch;
sha256 = "0j3f381x1lf8qci9pfv6mliggl8qs2w05v5lw3rs3gn7aibg174d";
};
postPatch = ''
${unzip}/bin/unzip -d ext/gmock-1.6.0 ext/gmock-1.6.0.zip
${unzip}/bin/unzip -d ext/gtest-1.6.0 ext/gtest-1.6.0.zip
patch -d ext/gmock-1.6.0 -p1 -i ${patch_gcc6}
''
# We have XRRNotifyEvent (libXrandr), but with the upstream CMakeLists.txt
# it's not able to find it (it's trying to search the store path of libX11

View File

@ -18,8 +18,8 @@ stdenv.mkDerivation rec {
postInstall = ''
mkdir -p "$out/share/bash-completion/completions"
ln -s "../../doc/task/scripts/bash/task.sh" "$out/share/bash-completion/completions/"
mkdir -p "$out/etc/fish/completions"
ln -s "../../../share/doc/task/scripts/fish/task.fish" "$out/etc/fish/completions/"
mkdir -p "$out/share/fish/vendor_completions.d"
ln -s "../../../share/doc/task/scripts/fish/task.fish" "$out/share/fish/vendor_completions.d/"
'';
meta = with stdenv.lib; {

View File

@ -1,24 +1,28 @@
{ enableGUI ? true, enablePDFtoPPM ? true, useT1Lib ? false
, stdenv, fetchurl, zlib, libpng, xlibsWrapper ? null, motif ? null, freetype ? null, t1lib ? null
, base14Fonts ? null
, stdenv, fetchurl, zlib, libpng, freetype ? null, t1lib ? null
, cmake, qtbase ? null
}:
assert enableGUI -> xlibsWrapper != null && motif != null && freetype != null;
assert enableGUI -> qtbase != null && freetype != null;
assert enablePDFtoPPM -> freetype != null;
assert useT1Lib -> t1lib != null;
assert !useT1Lib; # t1lib has multiple unpatched security vulnerabilities
stdenv.mkDerivation {
name = "xpdf-3.04";
name = "xpdf-4.00";
src = fetchurl {
url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.04.tar.gz;
sha256 = "1rbp54mr3z2x3a3a1qmz8byzygzi223vckfam9ib5g1sfds0qf8i";
src = fetchurl {
url = http://www.xpdfreader.com/dl/xpdf-4.00.tar.gz;
sha256 = "1mhn89738vjva14xr5gblc2zrdgzmpqbbjdflqdmpqv647294ggz";
};
nativeBuildInputs = [ cmake ];
cmakeFlags = ["-DSYSTEM_XPDFRC=/etc/xpdfrc" "-DA4_PAPER=ON"];
buildInputs = [ zlib libpng ] ++
stdenv.lib.optionals enableGUI [xlibsWrapper motif] ++
stdenv.lib.optional enableGUI qtbase ++
stdenv.lib.optional useT1Lib t1lib ++
stdenv.lib.optional enablePDFtoPPM freetype;
@ -27,14 +31,6 @@ stdenv.mkDerivation {
hardeningDisable = [ "format" ];
configureFlags = "--enable-a4-paper";
postInstall = stdenv.lib.optionalString (base14Fonts != null) ''
substituteInPlace $out/etc/xpdfrc \
--replace /usr/local/share/ghostscript/fonts ${base14Fonts} \
--replace '#fontFile' fontFile
'';
meta = {
homepage = http://www.foolabs.com/xpdf/;
description = "Viewer for Portable Document Format (PDF) files";

View File

@ -3,11 +3,11 @@
}:
stdenv.mkDerivation rec {
name = "xterm-327";
name = "xterm-330";
src = fetchurl {
url = "ftp://invisible-island.net/xterm/${name}.tgz";
sha256 = "02qmfr1y24y5vq6kddksw84b8gxalc96n9wwaj7i8hmk6mn2zyv6";
url = "http://invisible-mirror.net/archives/xterm/${name}.tgz";
sha256 = "1psnfmqd23v9gxj8a98nzrgvymrk0p1whwqi92gy15bbkzrgkvks";
};
buildInputs =

View File

@ -6,10 +6,10 @@ rec {
firefox = common rec {
pname = "firefox";
version = "55.0.2";
version = "55.0.3";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "a27722cb5840aac89752fea0880a7e093e84b50dc78a36dc8c4bd493ffda10fa61446007f680bfe65db7a0debe4c21e6f0bf9f0de9876bba067abdda6fed7be4";
sha512 = "3cacc87b97871f3a8c5e97c17ef7025079cb5c81f32377d9402cdad45815ac6c4c4762c79187f1e477910161c2377c42d41de62a50b6741d5d7c1cd70e8c6416";
};
patches = lib.optional stdenv.isi686 (fetchpatch {

View File

@ -14,10 +14,10 @@ let
# instead, we download localkube ourselves and shove it into the minikube binary. The versions URL that minikube uses is
# currently https://storage.googleapis.com/minikube/k8s_releases.json
localkube-version = "1.7.0";
localkube-version = "1.7.3";
localkube-binary = fetchurl {
url = "https://storage.googleapis.com/minikube/k8sReleases/v${localkube-version}/localkube-linux-amd64";
sha256 = "1pp5bi0bpxxzrshvkv47hqs20jfx3gp1i1p3pw1rvzm5n1fn2q1a";
sha256 = "1ay11321kg3waxzi9d885pr08hz97a8ajwk31kbfxlm3x5bk3jii";
};
in buildGoPackage rec {
pname = "minikube";

View File

@ -3,14 +3,14 @@
, glib_networking }:
stdenv.mkDerivation rec {
version = "1.5.1";
version = "1.6";
name = "corebird-${version}";
src = fetchFromGitHub {
owner = "baedert";
repo = "corebird";
rev = version;
sha256 = "1qajb4xms3vsfm5sg91z9ka0nrzgfi0fjgjxqm7snhkfgxlkph7w";
sha256 = "1bxjlamdy5d2j3xdahmxf6lwc7f6xdfxbzi712ppvh1dwggw654v";
};
preConfigure = ''
@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ automake autoconf libtool pkgconfig wrapGAppsHook ];
buildInputs = [
gtk3 json_glib sqlite libsoup gettext vala_0_32 gnome3.rest gnome3.dconf gnome3.gspell glib_networking
gtk3 json_glib sqlite libsoup gettext vala_0_32 gnome3.dconf gnome3.gspell glib_networking
] ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good (gst-plugins-bad.override { gtkSupport = true; }) gst-libav ]);
meta = {

View File

@ -1,20 +1,21 @@
{stdenv, fetchurl, cmake, flex, bison, openssl, libpcap, perl, zlib, file, curl
, geoip, gperftools, python }:
, geoip, gperftools, python, swig }:
stdenv.mkDerivation rec {
name = "bro-2.5";
name = "bro-2.5.1";
src = fetchurl {
url = "http://www.bro.org/downloads/${name}.tar.gz";
sha256 = "10603lwhwsmh08m5rgknbspbhd4lis71qv7z8ixacgv6sf8a40hm";
sha256 = "04cmm0vs8q31mgaq3pxybjk834py3ji16qp4qcir7vjbhq1fav1c";
};
buildInputs = [ cmake flex bison openssl libpcap perl zlib file curl geoip gperftools python ];
nativeBuildInputs = [ cmake flex bison file ];
buildInputs = [ openssl libpcap perl zlib curl geoip gperftools python swig ];
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "Powerful network analysis framework that is much different from the typical IDS you may know";
description = "Powerful network analysis framework much different from a typical IDS";
homepage = https://www.bro.org/;
license = licenses.bsd3;
maintainers = with maintainers; [ pSub ];

View File

@ -25,21 +25,21 @@ stdenv.mkDerivation rec {
];
installPhase = ''
mkdir -p $out/{bin,opt,share/pixmaps}
mv * $out/opt
mkdir -p $out/{bin,opt/discord,share/pixmaps}
mv * $out/opt/discord
# Copying how adobe-reader does it,
# see pkgs/applications/misc/adobe-reader/builder.sh
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "$out/opt:$libPath" \
$out/opt/Discord
--set-rpath "$out/opt/discord:$libPath" \
$out/opt/discord/Discord
paxmark m $out/opt/Discord
paxmark m $out/opt/discord/Discord
wrapProgram $out/opt/Discord --prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH:${libcxx}/lib:${systemd.lib}/lib:${libpulseaudio}/lib"
wrapProgram $out/opt/discord/Discord --prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH:${libcxx}/lib:${systemd.lib}/lib:${libpulseaudio}/lib"
ln -s $out/opt/Discord $out/bin/
ln -s $out/opt/discord.png $out/share/pixmaps
ln -s $out/opt/discord/Discord $out/bin/
ln -s $out/opt/discord/discord.png $out/share/pixmaps
ln -s "${desktopItem}/share/applications" $out/share/
'';

View File

@ -0,0 +1,25 @@
{ stdenv, fetchurl, fetchpatch }:
stdenv.mkDerivation rec {
name= "riot-web-${version}";
version = "0.12.2";
src = fetchurl {
url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
sha256 = "0zyddpnng1vjli12hn1hd0w99g6sfsk80dn2ll5h9276nc677pnh";
};
installPhase = ''
mkdir -p $out/
cp -R . $out/
'';
meta = {
description = "A glossy Matrix collaboration client for the web";
homepage = http://riot.im/;
maintainers = with stdenv.lib.maintainers; [ bachp ];
license = stdenv.lib.licenses.asl20;
platforms = stdenv.lib.platforms.all;
hydraPlatforms = [];
};
}

View File

@ -1,4 +1,4 @@
{ mkDerivation, lib, fetchFromGitHub, fetchgit, pkgconfig, gyp, cmake
{ mkDerivation, lib, fetchgit, pkgconfig, gyp, cmake
, qtbase, qtimageformats
, breakpad, gtk3, libappindicator-gtk3, dee
, ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio
@ -7,19 +7,20 @@
mkDerivation rec {
name = "telegram-desktop-${version}";
version = "1.1.7";
version = "1.1.19";
# Submodules
src = fetchgit {
url = "https://github.com/telegramdesktop/tdesktop";
rev = "refs/tags/v${version}";
sha256 = "0y0nc8d4vlhsmzayy26zdxc5jaiwcv0rb2s1v5fwnnx71gf89m2w";
url = "git://github.com/telegramdesktop/tdesktop";
rev = "v${version}";
sha256 = "1zpl71k2lq861k89yp6nzkm4jm6szxrzigmmbxx63rh4v03di3b6";
fetchSubmodules = true;
};
tgaur = fetchgit {
url = "https://aur.archlinux.org/telegram-desktop-systemqt.git";
rev = "83af81905de7fc5dc9fbea8f5318d56fa8a6efc6";
sha256 = "0v7g7y5cmxzp2yrcj6ylwzxlzr9yrqs2badzplm7sg012nc69yf9";
rev = "a4ba392309116003bc2b75c1c4c12dc733168d6f";
sha256 = "1n0yar8pm050770x36kjr4iap773xjigfbnrk289b51i5vijwhsv";
};
buildInputs = [

View File

@ -0,0 +1,28 @@
{ stdenv, fetchgit, cmake, pkgconfig, qtbase, qtwebkit, qtkeychain, sqlite }:
stdenv.mkDerivation rec {
name = "nextcloud-client-${version}";
version = "2.3.2";
src = fetchgit {
url = "git://github.com/nextcloud/client_theming.git";
rev = "1ee750d1aeaaefc899629e85c311594603e9ac1b";
sha256 = "0dxyng8a7cg78z8yngiqypsb44lf5c6vkabvkfch0cl0cqmarc1a";
fetchSubmodules = true;
};
nativeBuildInputs = [ pkgconfig cmake ];
buildInputs = [ qtbase qtwebkit qtkeychain sqlite ];
preConfigure = ''
cmakeFlagsArray+=("-UCMAKE_INSTALL_LIBDIR" "-DOEM_THEME_DIR=$(realpath ./nextcloudtheme)" "../client")
'';
meta = with stdenv.lib; {
description = "Nextcloud themed desktop client";
homepage = https://nextcloud.com;
license = licenses.gpl2;
maintainers = with maintainers; [ caugner ];
platforms = platforms.unix;
};
}

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, jre }:
{ stdenv, fetchurl, jre, makeWrapper }:
with stdenv.lib;
@ -11,20 +11,14 @@ stdenv.mkDerivation rec {
sha256 = "01nq1vwkqdidmprlnz5d3c5412r6igv689barv64dmb9m6iqg53z";
};
inherit jre;
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
jar=$(ls */*.jar)
mkdir -p $out/share/java
mv $jar $out/share/java
mkdir -p $out/bin
cat > $out/bin/frostwire <<EOF
#! $SHELL -e
exec $out/share/java/frostwire
EOF
chmod +x $out/bin/frostwire
mv $(ls */*.jar) $out/share/java
makeWrapper $out/share/java/frostwire $out/bin/frostwire \
--prefix PATH : ${jre}/bin/
'';
meta = with stdenv.lib; {

View File

@ -14,13 +14,13 @@
stdenv.mkDerivation rec {
name = "freerdp-git-${version}";
version = "20170502";
version = "20170724";
src = fetchFromGitHub {
owner = "FreeRDP";
repo = "FreeRDP";
rev = "8569102c3a011602de3a1cdf69f7c69adbb864ee";
sha256 = "0m61aiy8l3ybnk2d2kjmpp9ql31zfs63gjixyj9x95jd4m507j67";
rev = "2.0.0-rc0";
sha256 = "0ngwdy0lfv2k59z1z8yq1wj5zbhqigpyfqbgh38m9p35yzh33lv1";
};
# outputs = [ "bin" "out" "dev" ];

View File

@ -1,21 +1,45 @@
{ stdenv, fetchurl, automoc4, cmake, perl, pkgconfig
, kdelibs4, kdepimlibs, boost, baloo }:
{
stdenv,
fetchurl, fetchpatch,
extra-cmake-modules,
qtbase, boost,
akonadi-calendar, akonadi-notes, akonadi-search, kidentitymanagement, kontactinterface, kldap,
krunner, kwallet
}:
stdenv.mkDerivation rec {
name = "zanshin-0.3.1";
pname = "zanshin";
version = "0.4.1";
name = "${pname}-${version}";
src = fetchurl {
url = "http://files.kde.org/zanshin/${name}.tar.bz2";
sha256 = "1ck2ncz8i816d6d1gcsdrh6agd2zri24swgz3bhn8vzbk4215yzl";
url = "https://files.kde.org/${pname}/${name}.tar.bz2";
sha256 = "1llqm4w4mhmdirgrmbgwrpqyn47phwggjdghf164k3qw0bi806as";
};
nativeBuildInputs = [ automoc4 cmake perl pkgconfig ];
patches = [
(fetchpatch {
name = "zanshin-fix-qt59-build.patch";
url = "https://phabricator.kde.org/R4:77ad64872f69ad9f7abe3aa8e103a12b95e100a4?diff=1";
sha256 = "0p497gqd3jmhbmqzh46zp6zwf6j1q77a9jp0in49xhgc2kj5ar7x";
})
];
buildInputs = [ kdelibs4 kdepimlibs boost baloo ];
nativeBuildInputs = [
extra-cmake-modules
];
meta = {
description = "GTD for KDE";
maintainers = [ ];
inherit (kdelibs4.meta) platforms;
buildInputs = [
qtbase boost
akonadi-calendar akonadi-notes akonadi-search kidentitymanagement kontactinterface kldap
krunner kwallet
];
meta = with stdenv.lib; {
description = "A powerful yet simple application to manage your day to day actions, getting your mind like water";
homepage = https://zanshin.kde.org/;
maintainers = with maintainers; [ zraexy ];
platforms = platforms.linux;
license = licenses.gpl2Plus;
};
}

View File

@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
cd src
'';
cmakeFlags = [ "-GNinja" ];
postInstall = ''
wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin
'';

View File

@ -1,6 +1,6 @@
{stdenv, fetchurl, gmp, cmake, python}:
let version = "0.1.3";
let version = "0.1.4";
in
stdenv.mkDerivation {
@ -8,7 +8,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://github.com/SRI-CSL/libpoly/archive/v${version}.tar.gz";
sha256 = "0nd90585imnznyp04vg6a5ixxkd3bavhv1437397aj2k3dfc0y2k";
sha256 = "16x1pk2a3pcb5a0dzyw28ccjwkhmbsck4hy80ss7kx0dd7qgpi7j";
};
buildInputs = [ cmake gmp python ];

View File

@ -2,12 +2,12 @@
stdenv.mkDerivation rec {
name = "yices-${version}";
version = "2.5.2";
version = "2.5.3";
src = fetchurl {
url = "http://yices.csl.sri.com/cgi-bin/yices2-newnewdownload.cgi?file=${name}-src.tar.gz&accept=I+Agree";
url = "https://github.com/SRI-CSL/yices2/archive/Yices-${version}.tar.gz";
name = "${name}-src.tar.gz";
sha256 = "18mjnwg0pwc0fx4f99l7hxsi10mb5skkzk0k1m3xv5kx3qfnghs0";
sha256 = "0a3zzbvmgyiljzqn6xmc037gismm779p696jywk09j2pqbvp52ac";
};
patchPhase = ''patchShebangs tests/regress/check.sh'';
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
# only installing the libyices.so.2.5.1 file.
installPhase = ''
make install LDCONFIG=true
(cd $out/lib && ln -s -f libyices.so.2.5.2 libyices.so.2.5)
(cd $out/lib && ln -s -f libyices.so.2.5.3 libyices.so.2.5)
'';
meta = with stdenv.lib; {

View File

@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
license = stdenv.lib.licenses.asl20;
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ wscott thoughtpolice ];
broken = true; # seems to fail on recent glibc versions
};
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "git-open-${version}";
version = "1.3.0";
version = "1.3.1";
src = fetchFromGitHub {
owner = "paulirish";
repo = "git-open";
rev = "v${version}";
sha256 = "005am4phf7j4ybc9k1hqsxjb7gv2i56a3axrza866pwwx1ayrhpq";
sha256 = "1klj41vqgyyigqzi6s1ykz9vd8wvaq3skin63pi989dlsjf7igyr";
};
buildInputs = [ makeWrapper ];

View File

@ -1,12 +1,13 @@
{ fetchurl, stdenv, curl, openssl, zlib, expat, perl, python, gettext, cpio
, gnugrep, gnused, gawk, coreutils # needed at runtime by git-filter-branch etc
, gzip, openssh
, gzip, openssh, pcre2
, asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45
, libxslt, tcl, tk, makeWrapper, libiconv
, svnSupport, subversionClient, perlLibs, smtpPerlLibs, gitwebPerlLibs
, guiSupport
, withManual ? true
, pythonSupport ? true
, withpcre2 ? true
, sendEmailSupport
, darwin
}:
@ -44,6 +45,7 @@ stdenv.mkDerivation {
++ stdenv.lib.optionals withManual [ asciidoc texinfo xmlto docbook2x
docbook_xsl docbook_xml_dtd_45 libxslt ]
++ stdenv.lib.optionals guiSupport [tcl tk]
++ stdenv.lib.optionals withpcre2 [ pcre2 ]
++ stdenv.lib.optionals stdenv.isDarwin [ darwin.Security ];
@ -70,7 +72,9 @@ stdenv.mkDerivation {
# so that `SPARSE_FLAGS' corresponds to the current architecture...
#doCheck = true;
installFlags = "NO_INSTALL_HARDLINKS=1";
installFlags = "NO_INSTALL_HARDLINKS=1"
+ (if withpcre2 then " USE_LIBPCRE2=1" else "");
preInstall = stdenv.lib.optionalString stdenv.isDarwin ''
mkdir -p $out/bin

View File

@ -1,24 +1,24 @@
{ stdenv, fetchurl, rustPlatform, perl, darwin }:
{ stdenv, fetchurl, rustPlatform, darwin }:
with rustPlatform;
buildRustPackage rec {
name = "pijul-${version}";
version = "0.6.0";
version = "0.7.3";
src = fetchurl {
url = "https://pijul.org/releases/${name}.tar.gz";
sha256 = "a6b066b49b25d1083320c5ab23941deee795e1fcbe1faa951e95189fd594cdb3";
sha256 = "08cffv6nfp1iv9m2qhr9hggy9kg8xp07p8kqkjypfsdsb983vz5n";
};
sourceRoot = "pijul";
sourceRoot = "${name}/pijul";
buildInputs = stdenv.lib.optionals stdenv.isDarwin
(with darwin.apple_sdk.frameworks; [ Security ]);
doCheck = false;
depsSha256 = "0raim0ahqg6fkidb6picfzircdzwdbsdmmv8in70r5hw770bv67r";
depsSha256 = "1qzzpnkyw1bn5fnj06c80f7985v1q0rqcphrrrkpbi33lg5mzgbv";
meta = with stdenv.lib; {
description = "A distributed version control system";

View File

@ -10,13 +10,13 @@ with stdenv.lib;
stdenv.mkDerivation rec {
name = "mkvtoolnix-${version}";
version = "14.0.0";
version = "15.0.0";
src = fetchFromGitHub {
owner = "mbunkus";
repo = "mkvtoolnix";
rev = "release-${version}";
sha256 = "1ygc2qrd074vz2yw4iqml5ir31kkvkv7pz3hcfy423p9s06xi1k2";
sha256 = "06n0hbp484zpsjvnzp6p0nzzssym3illxdicn3y1jf8gy971rxi0";
};
nativeBuildInputs = [ pkgconfig autoconf automake gettext drake ruby docbook_xsl libxslt ];

View File

@ -3,11 +3,11 @@
let
pythonEnv = python3.withPackages (ps: with ps; [ pyqt5 sip ]);
in stdenv.mkDerivation {
name = "qarte-3.2.0+158";
name = "qarte-3.10.0+188";
src = fetchbzr {
url = http://bazaar.launchpad.net/~vincent-vandevyvre/qarte/qarte-3;
rev = "158";
sha256 = "0nj9yxylz1nz0hdjm0jzrq2l3dgfdqkafwxnzydp6qv6261w564n";
rev = "188";
sha256 = "06xpkjgm5ci5gfkza9f44m8l4jj32gfmr65cqs4x0j2ihrc6b4r9";
};
buildInputs = [ makeWrapper pythonEnv ];

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, qmake, qtscript }:
stdenv.mkDerivation rec {
name = "smplayer-17.7.0";
name = "smplayer-17.8.0";
src = fetchurl {
url = "mirror://sourceforge/smplayer/${name}.tar.bz2";
sha256 = "1g35h8xqs2bdwjdibzgs1ab2z2lmwgj8h53a7vqydv3j3crxx9wk";
sha256 = "0sm7zf7nvcjlx8fvzfnlrs7rr0c549j7r60j68lv898vp6yhwybh";
};
buildInputs = [ qtscript ];

View File

@ -27,7 +27,7 @@ stdenv.mkDerivation (edk2.setup "OvmfPkg/OvmfPkg${targetArch}.dsc" {
export OUTPUT_FD=$fd
for file in \
"${edk2.src}"/{UefiCpuPkg,MdeModulePkg,IntelFrameworkModulePkg,PcAtChipsetPkg,FatBinPkg,EdkShellBinPkg,MdePkg,ShellPkg,OptionRomPkg,IntelFrameworkPkg};
"${edk2.src}"/{UefiCpuPkg,MdeModulePkg,IntelFrameworkModulePkg,PcAtChipsetPkg,FatBinPkg,EdkShellBinPkg,MdePkg,ShellPkg,OptionRomPkg,IntelFrameworkPkg,FatPkg,CryptoPkg,SourceLevelDebugPkg};
do
ln -sv "$file" .
done

View File

@ -2,7 +2,7 @@
buildGoPackage rec {
name = "distribution-${version}";
version = "2.6.0";
version = "2.6.2";
rev = "v${version}";
goPackagePath = "github.com/docker/distribution";
@ -11,7 +11,7 @@ buildGoPackage rec {
owner = "docker";
repo = "distribution";
inherit rev;
sha256 = "1yg2zrikn3vkvkx5mn51p6bfjk840qdkn7ahhhvvcsc8mpigrjc6";
sha256 = "0nj4xd72mik4pj8g065cqb0yjmgpj5ppsqf2k5ibz9f68c39c00b";
};
meta = with stdenv.lib; {

View File

@ -3,22 +3,22 @@
, freetype, fontconfig, pkgconfig, gdk_pixbuf
, mkfontdir, libX11, libXft, libXext, libXinerama
, libXrandr, libICE, libSM, libXpm, libXdmcp, libxcb
, libpthreadstubs }:
, libpthreadstubs, pcre }:
with stdenv.lib;
stdenv.mkDerivation rec {
name = "icewm-${version}";
version = "1.3.12";
version = "1.4.2";
buildInputs =
[ cmake gettext libjpeg libtiff libungif libpng imlib expat
freetype fontconfig pkgconfig gdk_pixbuf mkfontdir libX11
libXft libXext libXinerama libXrandr libICE libSM libXpm
libXdmcp libxcb libpthreadstubs ];
libXdmcp libxcb libpthreadstubs pcre ];
src = fetchurl {
url = "https://github.com/bbidulock/icewm/archive/${version}.tar.gz";
sha256 = "0cmjnf0yvafwg73qy5wq7ghiknpn1jf1978c1yj7yabyn07zxq77";
sha256 = "05chzjjnb4n4j05ld2gmhhr07c887qb4j9inwg9izhvml51af1bw";
};
preConfigure = ''

View File

@ -1,7 +1,7 @@
{ stdenv, fetchzip }:
let
version = "1.13.1";
version = "1.13.3";
in fetchzip rec {
name = "iosevka-${version}";
@ -12,7 +12,7 @@ in fetchzip rec {
unzip -j $downloadedFile \*.ttc -d $out/share/fonts/iosevka
'';
sha256 = "0w35jkvfnzn4clm3010wv13sil2yj6pxffx40apjp7yhh19c4sw7";
sha256 = "0103rjxcp2sis42xp7fh7g8i03h5snvs8n78lgsf79g8ssw0p9d4";
meta = with stdenv.lib; {
homepage = https://be5invis.github.io/Iosevka/;

View File

@ -1,16 +1,15 @@
{ stdenv, fetchgit }:
{ stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "wireless-regdb-${version}";
version = "2016-06-10";
version = "2017.03.07";
src = fetchgit {
sha256 = "0im9likzpziircl96pql2jpyl8pfcqc5v0wgqy705j4ga5sx8pmn";
url = https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git;
rev = "refs/tags/master-${version}";
src = fetchurl {
url = "https://www.kernel.org/pub/software/network/wireless-regdb/${name}.tar.xz";
sha256 = "1f9mcp78sdd4sci6v32vxfcl1rfjpv205jisz1p93kkfnaisy7ip";
};
phases = [ "unpackPhase" "installPhase" ];
dontBuild = true;
makeFlags = [
"DESTDIR=$(out)"
@ -22,6 +21,6 @@ stdenv.mkDerivation rec {
homepage = http://wireless.kernel.org/en/developers/Regulatory/;
license = licenses.isc;
platforms = platforms.all;
maintainers = with maintainers; [ nckx ];
maintainers = with maintainers; [ nckx fpletz ];
};
}

View File

@ -2,7 +2,6 @@
rec {
#### CORE EFL
efl = callPackage ./efl.nix { openjpeg = pkgs.openjpeg_1; };
efl_1_19 = callPackage ./efl.nix { eflVersion = "1.19.1"; openjpeg = pkgs.openjpeg_1; };
#### WINDOW MANAGER
enlightenment = callPackage ./enlightenment.nix { };
@ -11,5 +10,5 @@ rec {
econnman = callPackage ./econnman.nix { };
terminology = callPackage ./terminology.nix { };
rage = callPackage ./rage.nix { };
ephoto = callPackage ./ephoto.nix { efl = efl_1_19; };
ephoto = callPackage ./ephoto.nix { };
}

View File

@ -4,35 +4,30 @@
, python27Packages, openjpeg, doxygen, expat, harfbuzz, jbig2dec, librsvg
, dbus_libs, alsaLib, poppler, ghostscript, libraw, libspectre, xineLib, libwebp
, curl, libinput, systemd, writeText
# Support more than one version because for now ephoto does not work with efl-1.20.x
, eflVersion ? "1.20.2"
}:
stdenv.mkDerivation rec {
name = "efl-${version}";
version = eflVersion;
version = "1.20.2";
src = fetchurl {
url = "http://download.enlightenment.org/rel/libs/efl/${name}.tar.xz";
sha256 = {
"1.19.1" = "0fndwraca9rg0bz3al4isdprvyw56szr88qiyvglb4j8ygsylscc";
"1.20.2" = "0zll6k4xbbdsxqg53g8jddgv889g5m1xh20i03iz5a52y2bcnh55";
}.${version};
sha256 = "0zll6k4xbbdsxqg53g8jddgv889g5m1xh20i03iz5a52y2bcnh55";
};
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ openssl zlib lz4 freetype fontconfig fribidi SDL2 SDL mesa
buildInputs = [ openssl zlib lz4 freetype fontconfig SDL mesa
giflib libpng libtiff glib gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
gst_all_1.gst-libav libpulseaudio libsndfile xorg.libXcursor xorg.printproto
xorg.libX11 udev utillinux systemd ];
xorg.libX11 udev systemd ];
propagatedBuildInputs = [ libxkbcommon python27Packages.dbus-python dbus libjpeg xorg.libXcomposite
xorg.libXdamage xorg.libXinerama xorg.libXp xorg.libXtst xorg.libXi xorg.libXext
bullet xorg.libXScrnSaver xorg.libXrender xorg.libXfixes xorg.libXrandr
xorg.libxkbfile xorg.libxcb xorg.xcbutilkeysyms openjpeg doxygen expat luajit
harfbuzz jbig2dec librsvg dbus_libs alsaLib poppler ghostscript libraw libspectre xineLib libwebp curl libdrm
libinput ];
libinput utillinux fribidi SDL2 ];
# ac_ct_CXX must be set to random value, because then it skips some magic which does alternative searching for g++
configureFlags = [

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, pkgconfig, efl, xcbutilkeysyms, libXrandr, libXdmcp,
libxcb, libffi, pam, alsaLib, luajit, bzip2, libpthreadstubs, gdbm, libcap,
mesa_glu, xkeyboard_config }:
mesa_glu, xkeyboard_config, pcre }:
stdenv.mkDerivation rec {
name = "enlightenment-${version}";
@ -11,22 +11,14 @@ stdenv.mkDerivation rec {
sha256 = "0w5f3707hyfc20i6xqh4jlr5p2yhy1z794061mjsz2rp4w00qmpb";
};
nativeBuildInputs = [ pkgconfig ];
nativeBuildInputs = [ (pkgconfig.override { vanilla = true; }) ];
buildInputs = [
efl libXdmcp libxcb xcbutilkeysyms libXrandr libffi pam alsaLib
luajit bzip2 libpthreadstubs gdbm
luajit bzip2 libpthreadstubs gdbm pcre
] ++
stdenv.lib.optionals stdenv.isLinux [ libcap ];
NIX_CFLAGS_COMPILE = [
"-I${efl}/include/ecore-imf-1"
"-I${efl}/include/emile-1"
"-I${efl}/include/eo-1"
"-I${efl}/include/ethumb-1"
"-I${efl}/include/ethumb-client-1"
];
preConfigure = ''
export USER_SESSION_DIR=$prefix/lib/systemd/user

View File

@ -1,29 +1,17 @@
{ stdenv, fetchurl, pkgconfig, efl, curl, makeWrapper }:
{ stdenv, fetchurl, pkgconfig, efl, pcre, curl, makeWrapper }:
stdenv.mkDerivation rec {
name = "ephoto-${version}";
version = "1.0";
version = "1.5";
src = fetchurl {
url = "http://www.smhouston.us/stuff/${name}.tar.gz";
sha256 = "0l6zrk22fap6pylmzxwp6nycy8l5wdc7jza890h4zrwmpfag8w31";
sha256 = "09kraa5zz45728h2dw1ssh23b87j01bkfzf977m48y1r507sy3vb";
};
nativeBuildInputs = [ pkgconfig makeWrapper ];
nativeBuildInputs = [ (pkgconfig.override { vanilla = true; }) makeWrapper ];
buildInputs = [ efl curl ];
NIX_CFLAGS_COMPILE = [
"-I${efl}/include/ecore-con-1"
"-I${efl}/include/ecore-evas-1"
"-I${efl}/include/ecore-imf-1"
"-I${efl}/include/ecore-input-1"
"-I${efl}/include/eet-1"
"-I${efl}/include/eldbus-1"
"-I${efl}/include/emile-1"
"-I${efl}/include/ethumb-1"
"-I${efl}/include/ethumb-client-1"
];
buildInputs = [ efl pcre curl ];
postInstall = ''
wrapProgram $out/bin/ephoto --prefix LD_LIBRARY_PATH : ${curl.out}/lib

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgconfig, efl, gst_all_1, curl, wrapGAppsHook }:
{ stdenv, fetchurl, pkgconfig, efl, gst_all_1, pcre, curl, wrapGAppsHook }:
stdenv.mkDerivation rec {
name = "rage-${version}";
@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [
pkgconfig
(pkgconfig.override { vanilla = true; })
wrapGAppsHook
];
@ -21,24 +21,10 @@ stdenv.mkDerivation rec {
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
gst_all_1.gst-libav
pcre
curl
];
NIX_CFLAGS_COMPILE = [
"-I${efl}/include/ecore-con-1"
"-I${efl}/include/ecore-evas-1"
"-I${efl}/include/ecore-file-1"
"-I${efl}/include/ecore-imf-1"
"-I${efl}/include/ecore-input-1"
"-I${efl}/include/eet-1"
"-I${efl}/include/efreet-1"
"-I${efl}/include/eldbus-1"
"-I${efl}/include/emile-1"
"-I${efl}/include/eo-1"
"-I${efl}/include/ethumb-1"
"-I${efl}/include/ethumb-client-1"
];
postInstall = ''
wrapProgram $out/bin/rage --prefix LD_LIBRARY_PATH : ${curl.out}/lib
'';

View File

@ -1,26 +1,17 @@
{ stdenv, fetchurl, pkgconfig, efl, curl, makeWrapper }:
{ stdenv, fetchurl, pkgconfig, efl, pcre, curl, makeWrapper }:
stdenv.mkDerivation rec {
name = "terminology-${version}";
version = "1.0.0";
version = "1.1.0";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/terminology/${name}.tar.xz";
sha256 = "1x4j2q4qqj10ckbka0zaq2r2zm66ff1x791kp8slv1ff7fw45vdz";
sha256 = "13rl1k22yf8qrpzdm5nh6ij641fibadr2ww1r7rnz7mbhzj3d4gb";
};
nativeBuildInputs = [ pkgconfig makeWrapper ];
nativeBuildInputs = [ (pkgconfig.override { vanilla = true; }) makeWrapper ];
buildInputs = [ efl curl ];
NIX_CFLAGS_COMPILE = [
"-I${efl}/include/ecore-con-1"
"-I${efl}/include/eldbus-1"
"-I${efl}/include/elocation-1"
"-I${efl}/include/emile-1"
"-I${efl}/include/eo-1"
"-I${efl}/include/ethumb-1"
];
buildInputs = [ efl pcre curl ];
postInstall = ''
for f in $out/bin/*; do

View File

@ -30,6 +30,8 @@ kde {
--replace /usr/share/X11 ${xkeyboard_config}/etc/X11
'';
NIX_CFLAGS_COMPILE = [ "-fpermissive" ]; # gcc-6
enableParallelBuilding = false; # frequent problems on Hydra
meta = {

View File

@ -34,7 +34,7 @@ in stdenv.mkDerivation {
nativeBuildInputs = [ makeWrapper ];
buildPhase = ''
while IFS= read -r -d $'\0' i; do
while IFS= read -r -d ''$'\0' i; do
substituteInPlace "$i" --replace /opt/MaXX $out/opt/MaXX
done < <(find "." -type f -exec grep -Iq /opt/MaXX {} \; -and -print0)
@ -57,7 +57,7 @@ in stdenv.mkDerivation {
--prefix GDK_PIXBUF_MODULE_FILE : "$(echo ${librsvg.out}/lib/gdk-pixbuf-2.0/*/loaders.cache)" \
--prefix PATH : ${stdenv.lib.makeBinPath runtime_deps}
while IFS= read -r -d $'\0' i; do
while IFS= read -r -d ''$'\0' i; do
if isELF "$i"; then
bin=`patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$i"; echo $?`
patchelf --set-rpath "${stdenv.lib.makeLibraryPath deps}" "$i"

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "abcl";
version = "1.4.0";
version = "1.5.0";
# or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
src = fetchurl {
url = "https://common-lisp.net/project/armedbear/releases/${version}/${pname}-src-${version}.tar.gz";
sha256 = "1y4nixm1459ch6226ikdilcsf91c2rg1d82cqqmcn24kfjl1m62i";
sha256 = "1hhvcg050nfpjbdmskc1cv2j38qi6qfl77a61b5cxx576kbff3lj";
};
configurePhase = ''
mkdir nix-tools

View File

@ -1,4 +1,4 @@
{ stdenv, fetchgit, libuuid, python2, iasl }:
{ stdenv, fetchFromGitHub, libuuid, python2, iasl }:
let
pythonEnv = python2.withPackages(ps: [ps.tkinter]);
@ -13,10 +13,11 @@ else
edk2 = stdenv.mkDerivation {
name = "edk2-2014-12-10";
src = fetchgit {
url = git://github.com/tianocore/edk2;
rev = "684a565a04";
sha256 = "0s9ywb8w7xzlnmm4kwzykxkrdaw53b7pky121cc9wjkllzqwyxrb";
src = fetchFromGitHub {
owner = "tianocore";
repo = "edk2";
rev = "vUDK2017";
sha256 = "0sswa028644yr8fbl8j6rhrdm717fj29h4dys3ygklmjhss90a2g";
};
buildInputs = [ libuuid pythonEnv];

View File

@ -1,19 +0,0 @@
diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h
--- a/rts/LinkerInternals.h
+++ b/rts/LinkerInternals.h
@@ -303,4 +303,14 @@
# define OBJFORMAT_MACHO
#endif
+/* In order to simplify control flow a bit, some references to mmap-related
+ definitions are blocked off by a C-level if statement rather than a CPP-level
+ #if statement. Since those are dead branches when !RTS_LINKER_USE_MMAP, we
+ just stub out the relevant symbols here
+*/
+#if !RTS_LINKER_USE_MMAP
+#define munmap(x,y) /* nothing */
+#define MAP_ANONYMOUS 0
+#endif
+
#endif /* LINKERINTERNALS_H */

View File

@ -1,22 +0,0 @@
diff --git a/rts/sm/Storage.c b/rts/sm/Storage.c
--- a/rts/sm/Storage.c
+++ b/rts/sm/Storage.c
@@ -1314,7 +1314,7 @@
------------------------------------------------------------------------- */
#if (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && defined(ios_HOST_OS)
-void sys_icache_invalidate(void *start, size_t len);
+#include <libkern/OSCacheControl.h>
#endif
/* On ARM and other platforms, we need to flush the cache after
@@ -1327,7 +1327,7 @@
(void)exec_addr;
#elif (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && defined(ios_HOST_OS)
/* On iOS we need to use the special 'sys_icache_invalidate' call. */
- sys_icache_invalidate(exec_addr, ((unsigned char*)exec_addr)+len);
+ sys_icache_invalidate(exec_addr, len);
#elif defined(__GNUC__)
/* For all other platforms, fall back to a libgcc builtin. */
unsigned char* begin = (unsigned char*)exec_addr;

View File

@ -1,158 +0,0 @@
diff --git a/includes/rts/OSThreads.h b/includes/rts/OSThreads.h
--- a/includes/rts/OSThreads.h
+++ b/includes/rts/OSThreads.h
@@ -15,7 +15,12 @@
#ifndef RTS_OSTHREADS_H
#define RTS_OSTHREADS_H
-#if defined(THREADED_RTS) /* to near the end */
+#if defined(HAVE_PTHREAD_H) && !defined(mingw32_HOST_OS)
+#define BUILD_OSTHREAD_POSIX
+#endif
+
+
+#if defined(THREADED_RTS) || defined(BUILD_OSTHREAD_POSIX) /* to near end */
#if defined(HAVE_PTHREAD_H) && !defined(mingw32_HOST_OS)
@@ -205,13 +210,25 @@
void releaseThreadNode (void);
#endif // !CMINUSMINUS
-#else
+#endif /* defined(THREADED_RTS) || defined(BUILD_OSTHREAD_POSIX) */
+
+#ifndef THREADED_RTS
+
+#ifdef ACQUIRE_LOCK
+// If we have pthreads, we pull in the threading primitives even when the RTS
+// isn't threaded, but we expect these macros to be noops on non-threaded RTS.
+
+#undef ACQUIRE_LOCK
+#undef RELEASE_LOCK
+#undef ASSERT_LOCK_HELD
+
+#endif
#define ACQUIRE_LOCK(l)
#define RELEASE_LOCK(l)
#define ASSERT_LOCK_HELD(l)
-#endif /* defined(THREADED_RTS) */
+#endif
#ifndef CMINUSMINUS
//
diff --git a/rts/posix/OSThreads.c b/rts/posix/OSThreads.c
--- a/rts/posix/OSThreads.c
+++ b/rts/posix/OSThreads.c
@@ -35,7 +35,7 @@
#endif
#endif
-#if defined(THREADED_RTS)
+#if defined(THREADED_RTS) || defined(BUILD_OSTHREAD_POSIX)
#include "RtsUtils.h"
#include "Task.h"
@@ -225,47 +225,6 @@
return NULL;
}
-int
-forkOS_createThread ( HsStablePtr entry )
-{
- pthread_t tid;
- int result = pthread_create(&tid, NULL,
- forkOS_createThreadWrapper, (void*)entry);
- if(!result)
- pthread_detach(tid);
- return result;
-}
-
-void freeThreadingResources (void) { /* nothing */ }
-
-uint32_t
-getNumberOfProcessors (void)
-{
- static uint32_t nproc = 0;
-
- if (nproc == 0) {
-#if defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_ONLN)
- nproc = sysconf(_SC_NPROCESSORS_ONLN);
-#elif defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_CONF)
- nproc = sysconf(_SC_NPROCESSORS_CONF);
-#elif defined(darwin_HOST_OS)
- size_t size = sizeof(uint32_t);
- if(sysctlbyname("hw.logicalcpu",&nproc,&size,NULL,0) != 0) {
- if(sysctlbyname("hw.ncpu",&nproc,&size,NULL,0) != 0)
- nproc = 1;
- }
-#elif defined(freebsd_HOST_OS)
- size_t size = sizeof(uint32_t);
- if(sysctlbyname("hw.ncpu",&nproc,&size,NULL,0) != 0)
- nproc = 1;
-#else
- nproc = 1;
-#endif
- }
-
- return nproc;
-}
-
#if defined(HAVE_SCHED_H) && defined(HAVE_SCHED_SETAFFINITY)
// Schedules the thread to run on CPU n of m. m may be less than the
// number of physical CPUs, in which case, the thread will be allowed
@@ -353,6 +312,51 @@
pthread_kill(id, SIGPIPE);
}
+#endif /* defined(THREADED_RTS) || defined(BUILD_OSTHREAD_POSIX) */
+
+#if defined(THREADED_RTS)
+
+int
+forkOS_createThread ( HsStablePtr entry )
+{
+ pthread_t tid;
+ int result = pthread_create(&tid, NULL,
+ forkOS_createThreadWrapper, (void*)entry);
+ if(!result)
+ pthread_detach(tid);
+ return result;
+}
+
+void freeThreadingResources (void) { /* nothing */ }
+
+uint32_t
+getNumberOfProcessors (void)
+{
+ static uint32_t nproc = 0;
+
+ if (nproc == 0) {
+#if defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_ONLN)
+ nproc = sysconf(_SC_NPROCESSORS_ONLN);
+#elif defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_CONF)
+ nproc = sysconf(_SC_NPROCESSORS_CONF);
+#elif defined(darwin_HOST_OS)
+ size_t size = sizeof(uint32_t);
+ if(sysctlbyname("hw.logicalcpu",&nproc,&size,NULL,0) != 0) {
+ if(sysctlbyname("hw.ncpu",&nproc,&size,NULL,0) != 0)
+ nproc = 1;
+ }
+#elif defined(freebsd_HOST_OS)
+ size_t size = sizeof(uint32_t);
+ if(sysctlbyname("hw.ncpu",&nproc,&size,NULL,0) != 0)
+ nproc = 1;
+#else
+ nproc = 1;
+#endif
+ }
+
+ return nproc;
+}
+
#else /* !defined(THREADED_RTS) */
int

View File

@ -1,17 +0,0 @@
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -437,7 +437,11 @@
else
CrossCompilePrefix=""
fi
-TargetPlatformFull="${TargetPlatform}"
+# Despite its similarity in name to TargetPlatform, TargetPlatformFull is used
+# in calls to subproject configure scripts and thus must be set to the autoconf
+# triple, not the normalized GHC triple that TargetPlatform is set to.
+# It may be better to just do away with the GHC triples all together.
+TargetPlatformFull="${target}"
AC_SUBST(CrossCompiling)
AC_SUBST(CrossCompilePrefix)
AC_SUBST(TargetPlatformFull)

View File

@ -1,28 +0,0 @@
{stdenv, lib, fetchurl, dmd}:
stdenv.mkDerivation {
name = "rdmd-2.067.0";
buildInputs = [ dmd ];
src = fetchurl {
url = "https://github.com/D-Programming-Language/tools/archive/v2.067.0.tar.gz";
sha256 = "2702ecda0427c675084d9b688449bc8c8392fd73e30257d79e2488640d5a9982";
};
buildPhase = ''
dmd rdmd.d
'';
installPhase = ''
mkdir -p $out/bin
cp rdmd $out/bin/
'';
meta = {
description = "Wrapper for D language compiler";
homepage = http://dlang.org/rdmd.html;
license = lib.licenses.boost;
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -37,7 +37,7 @@ core-packages:
- ghcjs-base-0
default-package-overrides:
# LTS Haskell 9.1
# LTS Haskell 9.2
- abstract-deque ==0.3
- abstract-deque-tests ==0.3
- abstract-par ==0.3.3
@ -364,7 +364,7 @@ default-package-overrides:
- check-email ==1.0.2
- checkers ==0.4.7
- chell ==0.4.0.1
- choice ==0.2.1
- choice ==0.2.2
- chunked-data ==0.3.0
- cipher-aes ==0.2.11
- cipher-aes128 ==0.7.0.3
@ -411,6 +411,8 @@ default-package-overrides:
- comonads-fd ==4.0
- compactmap ==0.1.4.2.1
- compensated ==0.7.2
- composable-associations ==0.1.0.0
- composable-associations-aeson ==0.1.0.0
- composition ==1.0.2.1
- composition-extra ==2.0.0
- concise ==0.1.0.0
@ -457,7 +459,7 @@ default-package-overrides:
- crypto-api-tests ==0.3
- crypto-cipher-tests ==0.0.11
- crypto-cipher-types ==0.0.9
- crypto-enigma ==0.0.2.8
- crypto-enigma ==0.0.2.9
- crypto-pubkey-types ==0.4.3
- crypto-random ==0.0.9
- crypto-random-api ==0.2.0
@ -523,7 +525,7 @@ default-package-overrides:
- Decimal ==0.4.2
- declarative ==0.5.1
- deepseq-generics ==0.2.0.0
- dejafu ==0.7.1.1
- dejafu ==0.7.1.2
- dependent-map ==0.2.4.0
- dependent-sum ==0.4
- derive ==2.6.3
@ -534,7 +536,7 @@ default-package-overrides:
- diagrams-cairo ==1.4
- diagrams-canvas ==1.4
- diagrams-contrib ==1.4.1
- diagrams-core ==1.4
- diagrams-core ==1.4.0.1
- diagrams-gtk ==1.4
- diagrams-html5 ==1.4
- diagrams-lib ==1.4.1.2
@ -559,7 +561,7 @@ default-package-overrides:
- disposable ==0.2.0.4
- distance ==0.1.0.0
- distributed-closure ==0.3.4.0
- distributed-static ==0.3.5.0
- distributed-static ==0.3.7
- distribution ==1.1.1.0
- distributive ==0.5.3
- diversity ==0.8.0.2
@ -666,7 +668,7 @@ default-package-overrides:
- exp-pairs ==0.1.5.2
- expiring-cache-map ==0.0.6.1
- explicit-exception ==0.1.9
- extensible ==0.4.3
- extensible ==0.4.4
- extensible-effects ==1.11.1.0
- extensible-exceptions ==0.1.1.4
- extra ==1.5.3
@ -764,7 +766,7 @@ default-package-overrides:
- ghc-syb-utils ==0.2.3.2
- ghc-tcplugins-extra ==0.2.1
- ghc-typelits-extra ==0.2.3
- ghc-typelits-knownnat ==0.3
- ghc-typelits-knownnat ==0.3.1
- ghc-typelits-natnormalise ==0.5.3
- ghcid ==0.6.6
- ghcjs-base-stub ==0.1.0.2
@ -776,7 +778,7 @@ default-package-overrides:
- gi-gdkpixbuf ==2.0.14
- gi-gio ==2.0.14
- gi-glib ==2.0.14
- gi-gobject ==2.0.14
- gi-gobject ==2.0.15
- gi-gtk ==3.0.17
- gi-javascriptcore ==3.0.14
- gi-pango ==1.0.15
@ -1008,11 +1010,12 @@ default-package-overrides:
- hbeanstalk ==0.2.4
- Hclip ==3.0.0.4
- HCodecs ==0.5
- hcwiid ==0.0.6.1
- hdaemonize ==0.5.4
- HDBC ==2.4.0.1
- HDBC ==2.4.0.2
- HDBC-mysql ==0.7.1.0
- HDBC-session ==0.1.1.1
- hdevtools ==0.1.5.0
- hdevtools ==0.1.6.0
- hdocs ==0.5.2.1
- heap ==1.0.3
- heaps ==0.3.5
@ -1122,6 +1125,7 @@ default-package-overrides:
- hstatistics ==0.3
- hstatsd ==0.1
- HStringTemplate ==0.8.6
- HSvm ==0.1.0.3.22
- hsx-jmacro ==7.3.8
- hsx2hs ==0.14.1.1
- hsyslog ==5.0.1
@ -1141,7 +1145,7 @@ default-package-overrides:
- http-date ==0.0.6.1
- http-link-header ==1.0.3
- http-media ==0.6.4
- http-reverse-proxy ==0.4.4
- http-reverse-proxy ==0.4.5
- http-streams ==0.8.5.3
- http-types ==0.9.1
- http2 ==1.6.3
@ -1155,12 +1159,12 @@ default-package-overrides:
- hw-bits ==0.5.0.3
- hw-diagnostics ==0.0.0.5
- hw-excess ==0.1.0.1
- hw-int ==0.0.0.1
- hw-parser ==0.0.0.2
- hw-prim ==0.4.0.3
- hw-int ==0.0.0.3
- hw-parser ==0.0.0.3
- hw-prim ==0.4.0.5
- hw-rankselect ==0.8.0.2
- hw-rankselect-base ==0.2.0.1
- hw-string-parse ==0.0.0.3
- hw-rankselect-base ==0.2.0.2
- hw-string-parse ==0.0.0.4
- hw-succinct ==0.1.0.1
- hweblib ==0.6.3
- hworker ==0.1.0.1
@ -1227,7 +1231,7 @@ default-package-overrides:
- ip6addr ==0.5.3
- iproute ==1.7.1
- IPv6Addr ==1.0.1
- IPv6DB ==0.2.1
- IPv6DB ==0.2.2
- irc ==0.6.1.0
- irc-client ==0.4.4.4
- irc-conduit ==0.2.2.3
@ -1258,7 +1262,7 @@ default-package-overrides:
- json-rpc-generic ==0.2.1.2
- json-schema ==0.7.4.1
- json-stream ==0.4.1.3
- JuicyPixels ==3.2.8.2
- JuicyPixels ==3.2.8.3
- JuicyPixels-extra ==0.2.1
- JuicyPixels-scale-dct ==0.1.1.2
- jvm ==0.2.2
@ -1298,7 +1302,7 @@ default-package-overrides:
- lattices ==1.5.0
- lazyio ==0.1.0.4
- lca ==0.3
- leancheck ==0.6.4
- leancheck ==0.6.5
- leapseconds-announced ==2017
- lens ==4.15.4
- lens-action ==0.2.2
@ -1416,7 +1420,7 @@ default-package-overrides:
- mime-mail ==0.4.14
- mime-mail-ses ==0.3.2.3
- mime-types ==0.1.0.7
- minio-hs ==0.3.0
- minio-hs ==0.3.1
- mintty ==0.1.1
- miso ==0.4.0.0
- missing-foreign ==0.1.1
@ -1463,7 +1467,7 @@ default-package-overrides:
- monoid-subclasses ==0.4.4
- monoid-transformer ==0.0.3
- monoidal-containers ==0.3.0.2
- morte ==1.6.9
- morte ==1.6.10
- mountpoints ==1.0.2
- mstate ==0.2.7
- mtl ==2.2.1
@ -1516,10 +1520,10 @@ default-package-overrides:
- network-transport-composed ==0.2.0.1
- network-transport-inmemory ==0.5.2
- network-transport-tcp ==0.5.1
- network-transport-tests ==0.2.3.0
- network-transport-tests ==0.2.4.1
- network-uri ==2.6.1.0
- newtype ==0.2
- newtype-generics ==0.5
- newtype-generics ==0.5.1
- next-ref ==0.1.0.2
- nfc ==0.1.0
- nicify-lib ==1.0.1
@ -1587,7 +1591,7 @@ default-package-overrides:
- pager ==0.1.1.0
- pagerduty ==0.0.8
- pagination ==0.2.1
- palette ==0.1.0.4
- palette ==0.1.0.5
- pandoc ==1.19.2.1
- pandoc-citeproc ==0.10.5.1
- pandoc-types ==1.17.0.5
@ -1783,7 +1787,7 @@ default-package-overrides:
- raw-strings-qq ==1.1
- rawfilepath ==0.2.4
- rawstring-qm ==0.2.3.0
- rdf ==0.1.0.1
- rdf ==0.1.0.2
- rdtsc ==1.3.0.1
- reactive-banana ==1.1.0.1
- read-editor ==0.1.0.2
@ -1861,7 +1865,7 @@ default-package-overrides:
- safe ==0.3.15
- safe-exceptions ==0.1.6.0
- safe-exceptions-checked ==0.1.0
- safecopy ==0.9.3.2
- safecopy ==0.9.3.3
- safeio ==0.0.3.0
- SafeSemaphore ==0.10.1
- sample-frame ==0.0.3
@ -1873,11 +1877,12 @@ default-package-overrides:
- scalpel ==0.5.1
- scalpel-core ==0.5.1
- scanner ==0.2
- schematic ==0.1.4.0
- schematic ==0.1.6.0
- scientific ==0.3.5.1
- scotty ==0.11.0
- scrape-changes ==0.1.0.5
- scrypt ==0.5.0
- SDL ==0.6.5.1
- sdl2 ==2.2.0
- sdl2-gfx ==0.2
- sdl2-image ==2.0.0
@ -1932,7 +1937,7 @@ default-package-overrides:
- SHA ==1.6.4.2
- shake ==0.15.11
- shake-language-c ==0.10.1
- shakespeare ==2.0.13
- shakespeare ==2.0.14
- shell-conduit ==4.6.1
- shelly ==1.6.8.3
- shikensu ==0.3.7
@ -2013,7 +2018,7 @@ default-package-overrides:
- stateref ==0.3
- statestack ==0.2.0.5
- StateVar ==1.1.0.4
- stateWriter ==0.2.8.2
- stateWriter ==0.2.9
- static-canvas ==0.2.0.3
- statistics ==0.13.3.0
- stemmer ==0.5.2
@ -2064,7 +2069,7 @@ default-package-overrides:
- superrecord ==0.3.0.0
- svg-builder ==0.1.0.2
- svg-tree ==0.6.2
- SVGFonts ==1.6.0.1
- SVGFonts ==1.6.0.2
- swagger ==0.3.0
- swagger2 ==2.1.4.1
- syb ==0.7
@ -2214,7 +2219,7 @@ default-package-overrides:
- tries ==0.0.4.2
- trifecta ==1.6.2.1
- triplesec ==0.1.2.0
- true-name ==0.1.0.2
- true-name ==0.1.0.3
- tsv2csv ==0.1.0.2
- ttrie ==0.1.2.1
- tttool ==1.7.0.3
@ -2223,7 +2228,7 @@ default-package-overrides:
- tuples-homogenous-h98 ==0.1.1.0
- turtle ==1.3.6
- turtle-options ==0.1.0.4
- twitter-conduit ==0.2.2.1
- twitter-conduit ==0.2.2.2
- twitter-feed ==0.2.0.11
- twitter-types ==0.7.2.2
- twitter-types-lens ==0.7.2
@ -2239,7 +2244,7 @@ default-package-overrides:
- type-operators ==0.1.0.4
- type-spec ==0.3.0.1
- TypeCompose ==0.9.12
- typed-process ==0.1.0.0
- typed-process ==0.1.0.1
- typelits-witnesses ==0.2.3.0
- typography-geometry ==1.0.0.1
- tz ==0.1.3.0
@ -2447,11 +2452,11 @@ default-package-overrides:
- yackage ==0.8.1
- yahoo-finance-api ==0.2.0.2
- yaml ==0.8.23.3
- Yampa ==0.10.6
- Yampa ==0.10.6.1
- YampaSynth ==0.2
- yes-precure5-command ==5.5.3
- yesod ==1.4.5
- yesod-auth ==1.4.17.2
- yesod-auth ==1.4.17.3
- yesod-auth-account ==1.4.3
- yesod-auth-basic ==0.1.0.2
- yesod-auth-fb ==1.8.1
@ -2461,7 +2466,7 @@ default-package-overrides:
- yesod-default ==1.2.0
- yesod-eventsource ==1.4.1
- yesod-fb ==0.4.0
- yesod-form ==1.4.13
- yesod-form ==1.4.15
- yesod-form-bootstrap4 ==0.1.0.1
- yesod-form-richtext ==0.1.0.2
- yesod-gitrepo ==0.2.1.0
@ -2657,6 +2662,8 @@ dont-distribute-packages:
ccelerate-cuda: [ i686-linux, x86_64-linux, x86_64-darwin ]
cublas: [ i686-linux, x86_64-linux, x86_64-darwin ]
cufft: [ i686-linux, x86_64-linux, x86_64-darwin ]
cusolver: [ i686-linux, x86_64-linux, x86_64-darwin ]
cusparse: [ i686-linux, x86_64-linux, x86_64-darwin ]
gloss-raster-accelerate: [ i686-linux, x86_64-linux, x86_64-darwin ]
libnvvm: [ i686-linux, x86_64-linux, x86_64-darwin ]
nvvm: [ i686-linux, x86_64-linux, x86_64-darwin ]

File diff suppressed because it is too large Load Diff

View File

@ -33,11 +33,11 @@ in
stdenv.mkDerivation rec {
name = "racket-${version}";
version = "6.9";
version = "6.10";
src = fetchurl {
url = "http://mirror.racket-lang.org/installers/${version}/${name}-src.tgz";
sha256 = "1cd218ee2ba1dc683de858a866c6666eb72a11adee8d1df6cdd59c5c5a47b714";
sha256 = "1mqnyj3bawad12dygsb11f2dbnkjp7q6d7ra714rqyw8mxix5ws0";
};
FONTCONFIG_FILE = fontsConf;
@ -47,13 +47,14 @@ stdenv.mkDerivation rec {
buildInputs = [ fontconfig libffi libtool makeWrapper sqlite ];
preConfigure = ''
unset AR
substituteInPlace src/configure --replace /usr/bin/uname ${coreutils}/bin/uname
mkdir src/build
cd src/build
'';
shared = if stdenv.isDarwin then "dylib" else "shared";
configureFlags = [ "--enable-${shared}" "--enable-lt=${libtool}/bin/libtool" ]
configureFlags = [ "--enable-${shared}" "--enable-lt=${libtool}/bin/libtool" ]
++ stdenv.lib.optional disableDocs [ "--disable-docs" ]
++ stdenv.lib.optional stdenv.isDarwin [ "--enable-xonx" ];

View File

@ -1,4 +1,6 @@
{ stdenv, lib, fetchurl, SDL2, libogg, libvorbis, smpeg, flac, enableNativeMidi ? false, fluidsynth ? null }:
{ stdenv, lib, fetchurl, autoreconfHook, pkgconfig, which
, SDL2, libogg, libvorbis, smpeg2, flac, libmodplug
, enableNativeMidi ? false, fluidsynth ? null }:
stdenv.mkDerivation rec {
name = "SDL2_mixer-${version}";
@ -9,9 +11,14 @@ stdenv.mkDerivation rec {
sha256 = "0pv9jzjpcjlbiaybvwrb4avmv46qk7iqxlnqrd2dfj82c4mgc92s";
};
propagatedBuildInputs = [ SDL2 libogg libvorbis fluidsynth smpeg flac ];
nativeBuildInputs = [ autoreconfHook pkgconfig which ];
configureFlags = [ "--disable-music-ogg-shared" ] ++ lib.optional enableNativeMidi "--enable-music-native-midi-gpl";
propagatedBuildInputs = [ SDL2 libogg libvorbis fluidsynth smpeg2 flac libmodplug ];
patches = [ ./libmodplug.patch ];
configureFlags = [ "--disable-music-ogg-shared" ]
++ lib.optional enableNativeMidi "--enable-music-native-midi-gpl";
meta = with stdenv.lib; {
description = "SDL multi-channel audio mixer library";

View File

@ -0,0 +1,13 @@
diff --git a/configure.in b/configure.in
index d511646..77dc3fe 100644
--- a/configure.in
+++ b/configure.in
@@ -258,7 +258,7 @@ if test x$enable_music_mod = xyes -a x$enable_music_mod_modplug = xyes; then
have_libmodplug_lib=yes
], [dnl
AC_CHECK_HEADER([libmodplug/modplug.h], [have_libmodplug_hdr=yes])
- AC_CHECK_LIB([modplug], [have_libmodplug_lib=yes])
+ AC_CHECK_LIB([modplug], [ModPlug_Load], [have_libmodplug_lib=yes])
])
if test x$have_libmodplug_hdr = xyes -a x$have_libmodplug_lib = xyes; then

View File

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, pkgconfig, alsaLib, portaudio, portmidi, libsndfile, cmake, libxml2, ninja }:
{ stdenv, fetchFromGitHub, pkgconfig, alsaLib, portaudio, portmidi, libsndfile, cmake, libxml2 }:
stdenv.mkDerivation rec {
version = "1.0-beta.1";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "1hb9b6qc18rsvzvixgllknn756m6zwcn22c79rdibbyz1bhrcnln";
};
buildInputs = [ pkgconfig alsaLib portaudio portmidi libsndfile cmake libxml2 ninja ];
buildInputs = [ pkgconfig alsaLib portaudio portmidi libsndfile cmake libxml2 ];
meta = {
description = "A C++ platform for building dynamic and reflexive systems with an emphasis on audio and media";

Some files were not shown because too many files have changed in this diff Show More