Merge branch 'master' into kdepim-17.08

This commit is contained in:
Thomas Tuegel 2017-08-27 10:42:04 -05:00 committed by GitHub
commit f7afa84c0c
305 changed files with 7819 additions and 4489 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

@ -33,6 +33,7 @@
algorith = "Dries Van Daele <dries_van_daele@telenet.be>";
alibabzo = "Alistair Bill <alistair.bill@gmail.com>";
all = "Nix Committers <nix-commits@lists.science.uu.nl>";
alunduil = "Alex Brandt <alunduil@alunduil.com>";
ambrop72 = "Ambroz Bizjak <ambrop7@gmail.com>";
amiddelk = "Arie Middelkoop <amiddelk@gmail.com>";
amiloradovsky = "Andrew Miloradovsky <miloradovsky@gmail.com>";
@ -214,6 +215,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>";
@ -577,6 +579,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>";
@ -619,6 +622,7 @@
vrthra = "Rahul Gopinath <rahul@gopinath.org>";
vyp = "vyp <elisp.vim@gmail.com>";
wedens = "wedens <kirill.wedens@gmail.com>";
willibutz = "Willi Butz <willibutz@posteo.de>";
willtim = "Tim Philip Williams <tim.williams.public@gmail.com>";
winden = "Antonio Vargas Gonzalez <windenntw@gmail.com>";
wizeman = "Ricardo M. Correia <rcorreia@wizy.org>";

View File

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

View File

@ -154,6 +154,14 @@ rmdir /var/lib/ipfs/.ipfs
variables as parameters.
</para>
</listitem>
<listitem>
<para>
<literal>services.firefox.syncserver</literal> now runs by default as a
non-root user. To accomodate this change, the default sqlite database
location has also been changed. Migration should work automatically.
Refer to the description of the options for more details.
</para>
</listitem>
</itemizedlist>
<para>Other notable improvements:</para>

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
@ -165,6 +166,7 @@
./services/continuous-integration/buildbot/master.nix
./services/continuous-integration/buildbot/worker.nix
./services/continuous-integration/buildkite-agent.nix
./services/continuous-integration/hail.nix
./services/continuous-integration/hydra/default.nix
./services/continuous-integration/gitlab-runner.nix
./services/continuous-integration/gocd-agent/default.nix
@ -268,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
@ -561,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

@ -27,6 +27,7 @@ in
type = types.int;
default = 70;
description = ''
Opacity percentage of Cairo rendered backgrounds.
'';
};
@ -34,6 +35,7 @@ in
type = types.str;
default = "black";
description = ''
Colour name or hex code (#ffffff) of the background color.
'';
};
@ -41,6 +43,9 @@ in
type = types.str;
default = "simplistic";
description = ''
Icon theme for the buttons, must be in the themes folder of
the package, or in
<filename>~/.themes/&lt;name&gt;/oblogout/</filename>.
'';
};
@ -48,6 +53,7 @@ in
type = types.str;
default = "cancel, logout, restart, shutdown, suspend, hibernate";
description = ''
List and order of buttons to show.
'';
};
@ -55,6 +61,7 @@ in
type = types.str;
default = "Escape";
description = ''
Cancel logout/shutdown shortcut.
'';
};
@ -62,6 +69,7 @@ in
type = types.str;
default = "S";
description = ''
Shutdown shortcut.
'';
};
@ -69,6 +77,7 @@ in
type = types.str;
default = "R";
description = ''
Restart shortcut.
'';
};
@ -76,6 +85,7 @@ in
type = types.str;
default = "U";
description = ''
Suspend shortcut.
'';
};
@ -83,6 +93,7 @@ in
type = types.str;
default = "L";
description = ''
Logout shortcut.
'';
};
@ -90,6 +101,7 @@ in
type = types.str;
default = "K";
description = ''
Lock session shortcut.
'';
};
@ -97,6 +109,7 @@ in
type = types.str;
default = "H";
description = ''
Hibernate shortcut.
'';
};
@ -104,6 +117,7 @@ in
type = types.str;
default = "openbox --exit";
description = ''
Command to logout.
'';
};
@ -111,6 +125,7 @@ in
type = types.str;
default = "";
description = ''
Command to lock screen.
'';
};
@ -118,6 +133,7 @@ in
type = types.str;
default = "";
description = ''
Command to switch user.
'';
};
};

View File

@ -158,6 +158,11 @@ in
HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help"
# Tell zsh how to find installed completions
for p in ''${(z)NIX_PROFILES}; do
fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions $p/share/zsh/vendor-completions)
done
${optionalString cfg.enableCompletion "autoload -U compinit && compinit"}
${optionalString (cfg.enableAutosuggestions)
@ -172,11 +177,6 @@ in
${cfg.promptInit}
# Tell zsh how to find installed completions
for p in ''${(z)NIX_PROFILES}; do
fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions $p/share/zsh/vendor-completions)
done
# Read system-wide modifications.
if test -f /etc/zshrc.local; then
. /etc/zshrc.local

View File

@ -17,14 +17,16 @@ with lib;
(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" ])
(mkRenamedOptionModule [ "services" "sslh" "host" ] [ "services" "sslh" "listenAddress" ])
(mkRenamedOptionModule [ "services" "statsd" "host" ] [ "services" "statsd" "listenAddress" ])
(mkRenamedOptionModule [ "services" "subsonic" "host" ] [ "services" "subsonic" "listenAddress" ])
(mkRenamedOptionModule [ "services" "tor" "relay" "portSpec" ] [ "services" "tor" "relay" "port" ])
(mkRenamedOptionModule [ "jobs" ] [ "systemd" "services" ])
(mkRenamedOptionModule [ "services" "gitlab" "stateDir" ] [ "services" "gitlab" "statePath" ])
@ -195,6 +197,8 @@ with lib;
(mkRemovedOptionModule [ "services" "openvpn" "enable" ] "")
(mkRemovedOptionModule [ "services" "printing" "cupsFilesConf" ] "")
(mkRemovedOptionModule [ "services" "printing" "cupsdConf" ] "")
(mkRemovedOptionModule [ "services" "tor" "relay" "isBridge" ] "Use services.tor.relay.role instead.")
(mkRemovedOptionModule [ "services" "tor" "relay" "isExit" ] "Use services.tor.relay.role instead.")
(mkRemovedOptionModule [ "services" "xserver" "startGnuPGAgent" ]
"See the 16.09 release notes for more information.")
(mkRemovedOptionModule [ "services" "phpfpm" "phpIni" ] "")

View File

@ -281,7 +281,7 @@ let
"auth optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
${optionalString cfg.enableKwallet
("auth optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.libsForQt5.kwallet}/bin/kwalletd5")}
" kwalletd=${pkgs.libsForQt5.kwallet.bin}/bin/kwalletd5")}
'') + ''
${optionalString cfg.unixAuth
"auth sufficient pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} likeauth try_first_pass"}
@ -350,7 +350,7 @@ let
"session optional ${pkgs.apparmor-pam}/lib/security/pam_apparmor.so order=user,group,default debug"}
${optionalString (cfg.enableKwallet)
("session optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.libsForQt5.kwallet}/bin/kwalletd5")}
" kwalletd=${pkgs.libsForQt5.kwallet.bin}/bin/kwalletd5")}
'');
};

View File

@ -0,0 +1,61 @@
{ config, lib, pkgs, ...}:
with lib;
let
cfg = config.services.hail;
in {
###### interface
options.services.hail = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enables the Hail Auto Update Service. Hail can automatically deploy artifacts
built by a Hydra Continous Integration server. A common use case is to provide
continous deployment for single services or a full NixOS configuration.'';
};
profile = mkOption {
type = types.str;
default = "hail-profile";
description = "The name of the Nix profile used by Hail.";
};
hydraJobUri = mkOption {
type = types.str;
description = "The URI of the Hydra Job.";
};
netrc = mkOption {
type = types.nullOr types.path;
description = "The netrc file to use when fetching data from Hydra.";
default = null;
};
package = mkOption {
type = types.package;
default = pkgs.haskellPackages.hail;
defaultText = "pkgs.haskellPackages.hail";
description = "Hail package to use.";
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services.hail = {
description = "Hail Auto Update Service";
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ nix ];
environment = {
HOME = "/var/lib/empty";
};
serviceConfig = {
ExecStart = "${cfg.package}/bin/hail --profile ${cfg.profile} --job-uri ${cfg.hydraJobUri}"
+ lib.optionalString (cfg.netrc != null) " --netrc-file ${cfg.netrc}";
};
};
};
}

View File

@ -57,6 +57,8 @@ in
powerManagement.scsiLinkPolicy = null;
powerManagement.cpuFreqGovernor = null;
systemd.sockets."systemd-rfkill".enable = false;
systemd.services = {
"systemd-rfkill@".enable = false;
"systemd-rfkill".enable = false;

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

@ -4,6 +4,10 @@ with lib;
let
cfg = config.services.firefox.syncserver;
defaultDbLocation = "/var/db/firefox-sync-server/firefox-sync-server.db";
defaultSqlUri = "sqlite:///${defaultDbLocation}";
syncServerIni = pkgs.writeText "syncserver.ini" ''
[DEFAULT]
overrides = ${cfg.privateConfig}
@ -25,6 +29,7 @@ let
backend = tokenserver.verifiers.LocalVerifier
audiences = ${removeSuffix "/" cfg.publicUrl}
'';
in
{
@ -65,6 +70,18 @@ in
'';
};
user = mkOption {
type = types.str;
default = "syncserver";
description = "User account under which syncserver runs.";
};
group = mkOption {
type = types.str;
default = "syncserver";
description = "Group account under which syncserver runs.";
};
publicUrl = mkOption {
type = types.str;
default = "http://localhost:5000/";
@ -85,7 +102,7 @@ in
sqlUri = mkOption {
type = types.str;
default = "sqlite:////var/db/firefox-sync-server.db";
default = defaultSqlUri;
example = "postgresql://scott:tiger@localhost/test";
description = ''
The location of the database. This URL is composed of
@ -126,16 +143,45 @@ in
description = "Firefox Sync Server";
wantedBy = [ "multi-user.target" ];
path = [ pkgs.coreutils syncServerEnv ];
serviceConfig = {
User = cfg.user;
Group = cfg.group;
PermissionsStartOnly = true;
};
preStart = ''
if ! test -e ${cfg.privateConfig}; then
umask u=rwx,g=x,o=x
mkdir -p $(dirname ${cfg.privateConfig})
mkdir -m 700 -p $(dirname ${cfg.privateConfig})
echo > ${cfg.privateConfig} '[syncserver]'
echo >> ${cfg.privateConfig} "secret = $(head -c 20 /dev/urandom | sha1sum | tr -d ' -')"
fi
chown ${cfg.user}:${cfg.group} ${cfg.privateConfig}
'' + optionalString (cfg.sqlUri == defaultSqlUri) ''
if ! test -e $(dirname ${defaultDbLocation}); then
mkdir -m 700 -p $(dirname ${defaultDbLocation})
chown ${cfg.user}:${cfg.group} $(dirname ${defaultDbLocation})
fi
# Move previous database file if it exists
oldDb="/var/db/firefox-sync-server.db"
if test -f $oldDb; then
mv $oldDb ${defaultDbLocation}
chown ${cfg.user}:${cfg.group} ${defaultDbLocation}
fi
'';
serviceConfig.ExecStart = "${syncServerEnv}/bin/paster serve ${syncServerIni}";
};
users.extraUsers = optionalAttrs (cfg.user == "syncserver")
(singleton {
name = "syncserver";
group = cfg.group;
isSystemUser = true;
});
users.extraGroups = optionalAttrs (cfg.group == "syncserver")
(singleton {
name = "syncserver";
});
};
}

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

@ -7,7 +7,7 @@ let
torDirectory = "/var/lib/tor";
opt = name: value: optionalString (value != null) "${name} ${value}";
optint = name: value: optionalString (value != 0) "${name} ${toString value}";
optint = name: value: optionalString (value != null && value != 0) "${name} ${toString value}";
torRc = ''
User tor
@ -17,7 +17,7 @@ let
GeoIPv6File ${pkgs.tor.geoip}/share/tor/geoip6
''}
${optint "ControlPort" cfg.controlPort}
${optint "ControlPort" (toString cfg.controlPort)}
''
# Client connection config
+ optionalString cfg.client.enable ''
@ -27,7 +27,8 @@ let
''
# Relay config
+ optionalString cfg.relay.enable ''
ORPort ${cfg.relay.portSpec}
ORPort ${toString cfg.relay.port}
${opt "Address" cfg.relay.address}
${opt "Nickname" cfg.relay.nickname}
${opt "ContactInfo" cfg.relay.contactInfo}
@ -36,31 +37,32 @@ let
${opt "AccountingMax" cfg.relay.accountingMax}
${opt "AccountingStart" cfg.relay.accountingStart}
${if cfg.relay.isExit then
${if (cfg.relay.role == "exit") then
opt "ExitPolicy" cfg.relay.exitPolicy
else
"ExitPolicy reject *:*"}
${optionalString cfg.relay.isBridge ''
${optionalString (elem cfg.relay.role ["bridge" "private-bridge"]) ''
BridgeRelay 1
ServerTransportPlugin obfs2,obfs3 exec ${pkgs.pythonPackages.obfsproxy}/bin/obfsproxy managed
ExtORPort auto
${optionalString (cfg.relay.role == "private-bridge") ''
ExtraInfoStatistics 0
PublishServerDescriptor 0
''}
''}
''
+ hiddenServices
# Hidden services
+ concatStrings (flip mapAttrsToList cfg.hiddenServices (n: v: ''
HiddenServiceDir ${torDirectory}/onion/${v.name}
${flip concatMapStrings v.map (p: ''
HiddenServicePort ${toString p.port} ${p.destination}
'')}
''))
+ cfg.extraConfig;
hiddenServices = concatStrings (mapAttrsToList (hiddenServiceDir: hs:
let
hsports = concatStringsSep "\n" (map mkHiddenServicePort hs.hiddenServicePorts);
in
"HiddenServiceDir ${hiddenServiceDir}\n${hsports}\n${hs.extraConfig}\n"
) cfg.hiddenServices);
mkHiddenServicePort = hsport: let
trgt = optionalString (hsport.target != null) (" " + hsport.target);
in "HiddenServicePort ${toString hsport.virtualPort}${trgt}";
torRcFile = pkgs.writeText "torrc" torRc;
in
{
options = {
@ -96,8 +98,8 @@ in
};
controlPort = mkOption {
type = types.int;
default = 0;
type = types.nullOr (types.either types.int types.str);
default = null;
example = 9051;
description = ''
If set, Tor will accept connections on the specified port
@ -133,9 +135,10 @@ in
example = "192.168.0.1:9101";
description = ''
Bind to this address to listen for connections from
Socks-speaking applications. Same as socksListenAddress
but uses weaker circuit isolation to provide performance
suitable for a web browser.
Socks-speaking applications. Same as
<option>socksListenAddress</option> but uses weaker
circuit isolation to provide performance suitable for a
web browser.
'';
};
@ -145,9 +148,9 @@ in
example = "accept 192.168.0.0/16, reject *";
description = ''
Entry policies to allow/deny SOCKS requests based on IP
address. First entry that matches wins. If no SocksPolicy
address. First entry that matches wins. If no SocksPolicy
is set, we accept all (and only) requests from
SocksListenAddress.
<option>socksListenAddress</option>.
'';
};
@ -176,45 +179,147 @@ in
description = ''
Whether to enable relaying TOR traffic for others.
See https://www.torproject.org/docs/tor-doc-relay for details.
See <link xlink:href="https://www.torproject.org/docs/tor-doc-relay" />
for details.
Setting this to true requires setting
<option>services.tor.relay.role</option>
and
<option>services.tor.relay.port</option>
options.
'';
};
isBridge = mkOption {
type = types.bool;
default = false;
role = mkOption {
type = types.enum [ "exit" "relay" "bridge" "private-bridge" ];
description = ''
Bridge relays (or "bridges") are Tor relays that aren't
listed in the main directory. Since there is no complete
public list of them, even if an ISP is filtering
connections to all the known Tor relays, they probably
won't be able to block all the bridges.
Your role in Tor network. There're several options:
A bridge relay can't be an exit relay.
<variablelist>
<varlistentry>
<term><literal>exit</literal></term>
<listitem>
<para>
An exit relay. This allows Tor users to access regular
Internet services through your public IP.
</para>
You need to set relay.enable to true for this option to
take effect.
<important><para>
Running an exit relay may expose you to abuse
complaints. See
<link xlink:href="https://www.torproject.org/faq.html.en#ExitPolicies" />
for more info.
</para></important>
The bridge is set up with an obfuscated transport proxy.
<para>
You can specify which services Tor users may access via
your exit relay using <option>exitPolicy</option> option.
</para>
</listitem>
</varlistentry>
See https://www.torproject.org/bridges.html.en for more info.
'';
};
<varlistentry>
<term><literal>relay</literal></term>
<listitem>
<para>
Regular relay. This allows Tor users to relay onion
traffic to other Tor nodes, but not to public
Internet.
</para>
isExit = mkOption {
type = types.bool;
default = false;
description = ''
An exit relay allows Tor users to access regular Internet
services.
<important><para>
Note that some misconfigured and/or disrespectful
towards privacy sites will block you even if your
relay is not an exit relay. That is, just being listed
in a public relay directory can have unwanted
consequences.
Unlike running a non-exit relay, running an exit relay may
expose you to abuse complaints. See
https://www.torproject.org/faq.html.en#ExitPolicies for
more info.
Which means you might not want to use
this role if you browse public Internet from the same
network as your relay, unless you want to write
e-mails to those sites (you should!).
</para></important>
You can specify which services Tor users may access via
your exit relay using exitPolicy option.
<para>
See
<link xlink:href="https://www.torproject.org/docs/tor-doc-relay.html.en" />
for more info.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>bridge</literal></term>
<listitem>
<para>
Regular bridge. Works like a regular relay, but
doesn't list you in the public relay directory and
hides your Tor node behind obfsproxy.
</para>
<para>
Using this option will make Tor advertise your bridge
to users through various mechanisms like
<link xlink:href="https://bridges.torproject.org/" />, though.
</para>
<important>
<para>
WARNING: THE FOLLOWING PARAGRAPH IS NOT LEGAL ADVISE.
Consult with your lawer when in doubt.
</para>
<para>
This role should be safe to use in most situations
(unless the act of forwarding traffic for others is
a punishable offence under your local laws, which
would be pretty insane as it would make ISP
illegal).
</para>
</important>
<para>
See <link xlink:href="https://www.torproject.org/docs/bridges.html.en" />
for more info.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>private-bridge</literal></term>
<listitem>
<para>
Private bridge. Works like regular bridge, but does
not advertise your node in any way.
</para>
<para>
Using this role means that you won't contribute to Tor
network in any way unless you advertise your node
yourself in some way.
</para>
<para>
Use this if you want to run a private bridge, for
example because you'll give out your bridge address
manually to your friends.
</para>
<para>
Switching to this role after measurable time in
"bridge" role is pretty useless as some Tor users
would have learned about your node already. In the
latter case you can still change
<option>port</option> option.
</para>
<para>
See <link xlink:href="https://www.torproject.org/docs/bridges.html.en" />
for more info.
</para>
</listitem>
</varlistentry>
</variablelist>
'';
};
@ -268,8 +373,8 @@ in
};
bandwidthRate = mkOption {
type = types.int;
default = 0;
type = types.nullOr types.int;
default = null;
example = 100;
description = ''
Specify this to limit the bandwidth usage of relayed (server)
@ -278,7 +383,7 @@ in
};
bandwidthBurst = mkOption {
type = types.int;
type = types.nullOr types.int;
default = cfg.relay.bandwidthRate;
example = 200;
description = ''
@ -288,9 +393,19 @@ in
'';
};
portSpec = mkOption {
type = types.str;
example = "143";
address = mkOption {
type = types.nullOr types.str;
default = null;
example = "noname.example.com";
description = ''
The IP address or full DNS name for advertised address of your relay.
Leave unset and Tor will guess.
'';
};
port = mkOption {
type = types.either types.int types.str;
example = 143;
description = ''
What port to advertise for Tor connections. This corresponds to the
<literal>ORPort</literal> section in the Tor manual; see
@ -313,13 +428,15 @@ in
considered first to last, and the first match wins. If you
want to _replace_ the default exit policy, end this with
either a reject *:* or an accept *:*. Otherwise, you're
_augmenting_ (prepending to) the default exit
policy. Leave commented to just use the default, which is
_augmenting_ (prepending to) the default exit policy.
Leave commented to just use the default, which is
available in the man page or at
https://www.torproject.org/documentation.html
<link xlink:href="https://www.torproject.org/documentation.html" />.
Look at https://www.torproject.org/faq-abuse.html#TypicalAbuses
for issues you might encounter if you use the default exit policy.
Look at
<link xlink:href="https://www.torproject.org/faq-abuse.html#TypicalAbuses" />
for issues you might encounter if you use the default
exit policy.
If certain IPs and ports are blocked externally, e.g. by
your firewall, you should update your exit policy to
@ -330,79 +447,122 @@ in
};
hiddenServices = mkOption {
type = types.attrsOf (types.submodule ({
description = ''
A set of static hidden services that terminate their Tor
circuits at this node.
Every element in this set declares a virtual onion host.
You can specify your onion address by putting corresponding
private key to an appropriate place in ${torDirectory}.
For services without private keys in ${torDirectory} Tor
daemon will generate random key pairs (which implies random
onion addresses) on restart. The latter could take a while,
please be patient.
<note><para>
Hidden services can be useful even if you don't intend to
actually <emphasis>hide</emphasis> them, since they can
also be seen as a kind of NAT traversal mechanism.
E.g. the example will make your sshd, whatever runs on
"8080" and your mail server available from anywhere where
the Tor network is available (which, with the help from
bridges, is pretty much everywhere), even if both client
and server machines are behind NAT you have no control
over.
</para></note>
'';
default = {};
example = literalExample ''
{ "my-hidden-service-example".map = [
{ port = 22; } # map ssh port to this machine's ssh
{ port = 80; toPort = 8080; } # map http port to whatever runs on 8080
{ port = "sip"; toHost = "mail.example.com"; toPort = "imap"; } # because we can
];
}
'';
type = types.loaOf (types.submodule ({name, config, ...}: {
options = {
hiddenServicePorts = mkOption {
type = types.listOf (types.submodule {
options = {
virtualPort = mkOption {
type = types.int;
example = 80;
description = "Virtual port.";
};
target = mkOption {
type = types.nullOr types.str;
default = null;
example = "127.0.0.1:8080";
description = ''
Target virtual Port shall be mapped to.
You may override the target port, address, or both by
specifying a target of addr, port, addr:port, or
unix:path. (You can specify an IPv6 target as
[addr]:port. Unix paths may be quoted, and may use
standard C escapes.)
'';
};
};
});
example = [ { virtualPort = 80; target = "127.0.0.1:8080"; } { virtualPort = 6667; } ];
description = ''
If target is <literal>null</literal> the virtual port is mapped
to the same port on 127.0.0.1 over TCP. You may use
<literal>target</literal> to overwrite this behaviour (see
description of target).
name = mkOption {
type = types.str;
description = ''
Name of this tor hidden service.
This corresponds to the <literal>HiddenServicePort VIRTPORT
[TARGET]</literal> option by looking at the tor manual
<citerefentry><refentrytitle>tor</refentrytitle>
<manvolnum>1</manvolnum></citerefentry> for more information.
'';
};
extraConfig = mkOption {
type = types.str;
default = "";
description = ''
Extra configuration. Contents will be added in the current
hidden service context.
'';
};
This is purely descriptive.
After restarting Tor daemon you should be able to
find your .onion address in
<literal>${torDirectory}/onion/$name/hostname</literal>.
'';
};
map = mkOption {
default = [];
description = "Port mapping for this hidden service.";
type = types.listOf (types.submodule ({config, ...}: {
options = {
port = mkOption {
type = types.either types.int types.str;
example = 80;
description = ''
Hidden service port to "bind to".
'';
};
destination = mkOption {
internal = true;
type = types.str;
description = "Forward these connections where?";
};
toHost = mkOption {
type = types.str;
default = "127.0.0.1";
description = "Mapping destination host.";
};
toPort = mkOption {
type = types.either types.int types.str;
example = 8080;
description = "Mapping destination port.";
};
};
config = {
toPort = mkDefault config.port;
destination = mkDefault "${config.toHost}:${toString config.toPort}";
};
}));
};
};
config = {
name = mkDefault name;
};
}));
default = {};
example = {
"/var/lib/tor/webserver" = {
hiddenServicePorts = [ { virtualPort = 80; } ];
};
};
description = ''
Configure hidden services.
Please consult the tor manual
<citerefentry><refentrytitle>tor</refentrytitle>
<manvolnum>1</manvolnum></citerefentry> for a more detailed
explanation. (search for 'HIDDEN').
'';
};
};
};
config = mkIf cfg.enable {
assertions = singleton
{ message = "Can't be both an exit and a bridge relay at the same time";
assertion =
cfg.relay.enable -> !(cfg.relay.isBridge && cfg.relay.isExit);
};
# Not sure if `cfg.relay.role == "private-bridge"` helps as tor
# sends a lot of stats
warnings = optional (cfg.relay.enable && cfg.hiddenServices != {})
''
Running Tor hidden services on a public relay makes the
presence of hidden services visible through simple statistical
analysis of publicly available data.
You can safely ignore this warning if you don't intend to
actually hide your hidden services. In either case, you can
always create a container/VM with a separate Tor daemon instance.
'';
users.extraGroups.tor.gid = config.ids.gids.tor;
users.extraUsers.tor =
@ -422,9 +582,13 @@ in
restartTriggers = [ torRcFile ];
# Translated from the upstream contrib/dist/tor.service.in
preStart = ''
install -o tor -g tor -d ${torDirectory}/onion
${pkgs.tor}/bin/tor -f ${torRcFile} --verify-config
'';
serviceConfig =
{ Type = "simple";
ExecStartPre = "${pkgs.tor}/bin/tor -f ${torRcFile} --verify-config";
ExecStart = "${pkgs.tor}/bin/tor -f ${torRcFile} --RunAsDaemon 0";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
KillSignal = "SIGINT";

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

@ -5,12 +5,22 @@ with lib;
let
cfg = config.services.caddy;
configFile = pkgs.writeText "Caddyfile" cfg.config;
in
{
in {
options.services.caddy = {
enable = mkEnableOption "Caddy web server";
config = mkOption {
default = "";
example = ''
example.com {
gzip
minify
log syslog
root /srv/http
}
'';
type = types.lines;
description = "Verbatim Caddyfile to use";
};

View File

@ -19,7 +19,7 @@ in
# E.g., if Plasma 5 is enabled, it supersedes xterm.
imports = [
./none.nix ./xterm.nix ./xfce.nix ./plasma5.nix ./lumina.nix
./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix
./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix ./maxx.nix
];
options = {

View File

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
with lib;
let
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.maxx;
in {
options.services.xserver.desktopManager.maxx = {
enable = mkEnableOption "MaXX desktop environment";
};
config = mkIf (xcfg.enable && cfg.enable) {
environment.systemPackages = [ pkgs.maxx ];
services.xserver.desktopManager.session = [
{ name = "MaXX";
start = ''
exec ${pkgs.maxx}/opt/MaXX/etc/skel/Xsession.dt
'';
}];
};
meta.maintainers = [ maintainers.gnidorah ];
}

View File

@ -120,7 +120,6 @@ let
# Run systemd-nspawn without startup notification (we'll
# wait for the container systemd to signal readiness).
EXIT_ON_REBOOT=1 \
exec ${config.systemd.package}/bin/systemd-nspawn \
--keep-unit \
-M "$INSTANCE" -D "$root" $extraFlags \

View File

@ -239,6 +239,7 @@ in rec {
tests.etcd = hydraJob (import tests/etcd.nix { system = "x86_64-linux"; });
tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops;
tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config;
tests.elk = callTest tests/elk.nix {};
tests.ferm = callTest tests/ferm.nix {};
tests.firefox = callTest tests/firefox.nix {};
tests.firewall = callTest tests/firewall.nix {};

View File

@ -18,6 +18,9 @@ let
<nixpkgs/nixos/modules/testing/test-instrumentation.nix>
];
# To ensure that we can rebuild the grub configuration on the nixos-rebuild
system.extraDependencies = with pkgs; [ stdenvNoCC ];
${optionalString (bootLoader == "grub") ''
boot.loader.grub.version = ${toString grubVersion};
${optionalString (grubVersion == 1) ''

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,7 +1,8 @@
diff -ru monkeys-audio-3.99-u4-b5/src/MACLib/APELink.cpp monkeys-audio-3.99-u4-b5.patched/src/MACLib/APELink.cpp
--- monkeys-audio-3.99-u4-b5/src/MACLib/APELink.cpp 2006-06-01 11:00:57.000000000 +0200
+++ monkeys-audio-3.99-u4-b5.patched/src/MACLib/APELink.cpp 2012-01-05 14:51:47.000000000 +0100
@@ -63,10 +63,10 @@
diff --git a/src/MACLib/APELink.cpp b/src/MACLib/APELink.cpp
index d349f4b..b00ec83 100644
--- a/src/MACLib/APELink.cpp
+++ b/src/MACLib/APELink.cpp
@@ -63,10 +63,10 @@ void CAPELink::ParseData(const char * pData, const str_utf16 * pFilename)
if (pData != NULL)
{
// parse out the information
@ -16,7 +17,7 @@ diff -ru monkeys-audio-3.99-u4-b5/src/MACLib/APELink.cpp monkeys-audio-3.99-u4-b
if (pHeader && pImageFile && pStartBlock && pFinishBlock)
{
@@ -81,7 +81,7 @@
@@ -81,7 +81,7 @@ void CAPELink::ParseData(const char * pData, const str_utf16 * pFilename)
// get the path
char cImageFile[MAX_PATH + 1]; int nIndex = 0;
@ -25,3 +26,24 @@ diff -ru monkeys-audio-3.99-u4-b5/src/MACLib/APELink.cpp monkeys-audio-3.99-u4-b
while ((*pImageCharacter != 0) && (*pImageCharacter != '\r') && (*pImageCharacter != '\n'))
cImageFile[nIndex++] = *pImageCharacter++;
cImageFile[nIndex] = 0;
diff --git a/src/Shared/All.h b/src/Shared/All.h
index 328addc..7730e89 100644
--- a/src/Shared/All.h
+++ b/src/Shared/All.h
@@ -21,6 +21,8 @@ Global includes
#include <windows.h>
#endif
+#include <stdlib.h>
+
#ifdef _WIN32
#include <mmsystem.h>
#include <tchar.h>
@@ -34,7 +36,6 @@ Global includes
#include "NoWindows.h"
#endif
-#include <stdlib.h>
#include <memory.h>
#include <stdio.h>
#include <math.h>

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

@ -216,12 +216,12 @@ in
clion = buildClion rec {
name = "clion-${version}";
version = "2017.2"; /* updated by script */
version = "2017.2.1"; /* updated by script */
description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
sha256 = "de7f47ec959be9653aa4d2028fb27f8327800d8370daa0ab2d1093f3469f4b49"; /* updated by script */
sha256 = "acd3d09a37a3fa922a85a48635d1b230d559ea68917e2e7895caf16460d50c13"; /* updated by script */
};
wmClass = "jetbrains-clion";
update-channel = "CLion_Release"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
@ -242,12 +242,12 @@ in
gogland = buildGogland rec {
name = "gogland-${version}";
version = "171.4694.61"; /* updated by script */
version = "172.3757.46"; /* updated by script */
description = "Up and Coming Go IDE";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/go/${name}.tar.gz";
sha256 = "8e9462fc7c5cc7dc110ea2257b920a55d7d52ea874a53567e5d19381a1fcb269"; /* updated by script */
sha256 = "0d6b710edc434ed5d5ea5c4734b9026e2caeba7e74a027c1eb6fd837c5d4f4fd"; /* updated by script */
};
wmClass = "jetbrains-gogland";
update-channel = "gogland_1.0_EAP";
@ -268,12 +268,12 @@ in
idea-community = buildIdea rec {
name = "idea-community-${version}";
version = "2017.2.1";
version = "2017.2.2"; /* updated by script */
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
sha256 = "1z8gp209jpjzvllnrpxzmbhgaxkklxw8nkm3g2drb7nal2hhs113";
sha256 = "c719af3d538bef23d061ef62d4acbf503198ff62322a3c0c5b3c38ab7ac36c4f"; /* updated by script */
};
wmClass = "jetbrains-idea-ce";
update-channel = "IDEA_Release";
@ -307,12 +307,12 @@ in
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
version = "2017.2.1";
version = "2017.2.2"; /* updated by script */
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jdk.tar.gz";
sha256 = "0y3r82i229d7lywixyifv4kkrwivixl75flagaqbkzw3j9wklg3k";
sha256 = "b8eb9d612800cc896eb6b6fbefbf9f49d92d2350ae1c3c4598e5e12bf93be401"; /* updated by script */
};
wmClass = "jetbrains-idea";
update-channel = "IDEA_Release";
@ -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 {
@ -346,12 +346,12 @@ in
pycharm-community = buildPycharm rec {
name = "pycharm-community-${version}";
version = "2017.1.5"; /* updated by script */
version = "2017.2.2"; /* updated by script */
description = "PyCharm Community Edition";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "1a0bbf0d881527e08aad7a5adaa3ad44e8754c3eb2c3a8ed5ab113491549679b"; /* updated by script */
sha256 = "4eacc9bf512406bebf71546ccb4b6c14ea8e06748fd76be6ca409ea1955e1f53"; /* updated by script */
};
wmClass = "jetbrains-pycharm-ce";
update-channel = "PyCharm_Release";
@ -359,12 +359,12 @@ in
pycharm-professional = buildPycharm rec {
name = "pycharm-professional-${version}";
version = "2017.1.5"; /* updated by script */
version = "2017.2.2"; /* updated by script */
description = "PyCharm Professional Edition";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "52519dfd0e913b5ccb8767155cd4d1fd413967d5010e8474cdc9a1fa688016ce"; /* updated by script */
sha256 = "21aedfd189115fcfee0e8c8df88eccbd8f19b998667af3c55ce5d56d4eaa37a9"; /* updated by script */
};
wmClass = "jetbrains-pycharm";
update-channel = "PyCharm_Release";
@ -424,12 +424,12 @@ in
webstorm = buildWebStorm rec {
name = "webstorm-${version}";
version = "2017.1.4";
version = "2017.2.2"; /* updated by script */
description = "Professional IDE for Web and JavaScript development";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "0aw2728wknss5vn2fkgz8rkm5vwk031305f32dirfrh51bvmq2zm";
sha256 = "d6b7b103f8543e25d2602657f12d029856529895af6354e1a0875ed40bd05180"; /* updated by script */
};
wmClass = "jetbrains-webstorm";
update-channel = "WS_Release";

View File

@ -2,7 +2,7 @@
, qtquickcontrols, qtwebkit, qttools, kde-cli-tools
, kconfig, kdeclarative, kdoctools, kiconthemes, ki18n, kitemmodels, kitemviews
, kjobwidgets, kcmutils, kio, knewstuff, knotifyconfig, kparts, ktexteditor
, threadweaver, kxmlgui, kwindowsystem, grantlee
, threadweaver, kxmlgui, kwindowsystem, grantlee, kcrash, karchive, kguiaddons
, plasma-framework, krunner, kdevplatform, kdevelop-pg-qt, shared_mime_info
, libksysguard, konsole, llvmPackages, makeWrapper
}:
@ -34,7 +34,7 @@ mkDerivation rec {
kconfig kdeclarative kdoctools kiconthemes ki18n kitemmodels kitemviews
kjobwidgets kcmutils kio knewstuff knotifyconfig kparts ktexteditor
threadweaver kxmlgui kwindowsystem grantlee plasma-framework krunner
kdevplatform shared_mime_info libksysguard konsole
kdevplatform shared_mime_info libksysguard konsole kcrash karchive kguiaddons
];
postInstall = ''

View File

@ -11,7 +11,6 @@ stdenv.mkDerivation rec {
name = "RStudio-${version}";
buildInputs = [ cmake boost163 zlib openssl R qt5.full qt5.qtwebkit libuuid unzip ant jdk makeWrapper pandoc ];
nativeBuildInputs = [ qt5.qmake ];
src = fetchurl {
url = "https://github.com/rstudio/rstudio/archive/v${version}.tar.gz";
@ -91,7 +90,7 @@ stdenv.mkDerivation rec {
cp ${pandoc}/bin/pandoc dependencies/common/pandoc/
'';
cmakeFlags = [ "-DRSTUDIO_TARGET=Desktop" "-DQT_QMAKE_EXECUTABLE=${qt5.qmake}/bin/qmake" ];
cmakeFlags = [ "-DRSTUDIO_TARGET=Desktop" "-DQT_QMAKE_EXECUTABLE=$NIX_QT5_TMP/bin/qmake" ];
desktopItem = makeDesktopItem {
name = name;

View File

@ -2,7 +2,7 @@
, vscodeExtensions ? [] }:
/*
`vsixExtensions`
`vscodeExtensions`
: A set of vscode extensions to be installed alongside the editor. Here's a an
example:
@ -10,12 +10,12 @@
vscode-with-extensions.override {
# When the extension is already available in the default extensions set.
vscodeExtensions = with vscodeExtensions; [
nix
vscodeExtensions = with vscode-extensions; [
bbenoist.Nix
]
# Concise version from the vscode market place when not available in the default set.
++ vscodeUtils.extensionsFromVscodeMarketplace [
++ vscode-utils.extensionsFromVscodeMarketplace [
{
name = "code-runner";
publisher = "formulahendry";

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

@ -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

@ -6,11 +6,11 @@ with stdenv.lib;
stdenv.mkDerivation rec {
name = "feh-${version}";
version = "2.19.1";
version = "2.19.3";
src = fetchurl {
url = "http://feh.finalrewind.org/${name}.tar.bz2";
sha256 = "1d4ycmai3dpajl0bdr9i56646g4h5j1lb95jjn0nckwcddcj927c";
sha256 = "1l3yvv0l0ggwlfyhk84p2g9mrqvzqrg1fgalf88kzppvb9jppjay";
};
outputs = [ "out" "man" "doc" ];
@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
description = "A light-weight image viewer";
homepage = https://derf.homelinux.org/projects/feh/;
license = licenses.mit;
maintainers = [ maintainers.viric ];
maintainers = [ maintainers.viric maintainers.willibutz ];
platforms = platforms.unix;
};
}

View File

@ -5,7 +5,7 @@
, flac, lame, libmad, libmpcdec, libvorbis
, libsamplerate, libsndfile, taglib
, cdparanoia, cdrdao, cdrtools, dvdplusrwtools, libburn, libdvdcss, libdvdread, vcdimager
, ffmpeg, libmusicbrainz2, normalize, sox, transcode, kinit
, ffmpeg, libmusicbrainz3, normalize, sox, transcode, kinit
}:
mkDerivation {
@ -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

@ -0,0 +1,12 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d910299e..69888477 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -99,6 +99,7 @@ endif()
# Qt modules
if (WITH_QT5)
+ find_package(Qt5 REQUIRED COMPONENTS Network Svg Xml Script)
qt5_use_modules(copyq Widgets Network Svg Xml Script ${copyq_Qt5_Modules})
else()
set(QT_USE_QTNETWORK TRUE)

View File

@ -1,19 +1,27 @@
{ stdenv, fetchFromGitHub, cmake, qt4, libXfixes, libXtst}:
{ stdenv, fetchFromGitHub, cmake, qt5, libXfixes, libXtst, git
, webkitSupport ? true
}:
stdenv.mkDerivation rec {
name = "CopyQ-${version}";
version = "2.9.0";
version = "3.0.3";
src = fetchFromGitHub {
owner = "hluk";
repo = "CopyQ";
rev = "v${version}";
sha256 = "1gnqsfh50w3qcnbghkpjr5qs42fgl6643lmg4mg4wam8a852s64f";
sha256 = "0wpxqrg4mn8xjsrwsmlhh731s2kr6afnzpqif1way0gi7fqr73jl";
};
patches = [
./cmake-modules.patch
];
nativeBuildInputs = [ cmake ];
buildInputs = [ qt4 libXfixes libXtst ];
buildInputs = [
git qt5.full libXfixes libXtst
] ++ stdenv.lib.optional webkitSupport qt5.qtwebkit;
meta = with stdenv.lib; {
homepage = https://hluk.github.io/CopyQ;

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

@ -0,0 +1,19 @@
{ stdenv, pythonPackages, pkgs }:
pythonPackages.buildPythonPackage {
name = "sqlmap-1.1";
disabled = pythonPackages.isPy3k;
src = pkgs.fetchurl {
url = "mirror://pypi/s/sqlmap/sqlmap-1.1.tar.gz";
sha256 = "0px72p52w76cylr68i69kz0kagmbrslgx2221yi77322fih0mngi";
};
meta = with pkgs.stdenv.lib; {
homepage = "http://sqlmap.org";
license = licenses.gpl2;
description = "Automatic SQL injection and database takeover tool";
maintainers = with stdenv.lib.maintainers; [ bennofs ];
};
}

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

@ -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,7 +1,7 @@
{stdenv, fetchurl, tcl, tk, xlibsWrapper, makeWrapper}:
let version = "3.0"; in
stdenv.mkDerivation {
stdenv.mkDerivation rec {
version = "3.0";
name = "wordnet-${version}";
src = fetchurl {
url = "http://wordnetcode.princeton.edu/${version}/WordNet-${version}.tar.bz2";

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

@ -55,15 +55,8 @@ in {
doCheck = false;
};
terraform_0_10_0 = generic {
version = "0.10.0";
sha256 = "1z6pmyfh4z5w8k2j46ancc0m9lsiq6d0m56nxj1kawb3n5q9dgds";
# remove debugging and the -dev postfix in the version
preBuild = ''
buildFlagsArray=(
-ldflags
"-X github.com/hashicorp/terraform/terraform.VersionPrerelease= -s -w"
)
'';
terraform_0_10_2 = generic {
version = "0.10.2";
sha256 = "1q7za7jcfqv914a3ynfl7hrqbgwcahgm418kivjrac6p1q26w502";
};
}

View File

@ -2,7 +2,7 @@
buildGoPackage rec {
name = "terragrunt-${version}";
version = "0.12.25";
version = "0.13.0";
goPackagePath = "github.com/gruntwork-io/terragrunt";
@ -10,7 +10,7 @@ buildGoPackage rec {
rev = "v${version}";
owner = "gruntwork-io";
repo = "terragrunt";
sha256 = "0j85abmkspbwdijf9dzm37x3ibqd3bhn01qs165433k74f9m500q";
sha256 = "18jbz3vchdp5f3f4grl968k706fdcvj71syf7qmriwdyw4ns83wv";
};
goDeps = ./deps.nix;

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

@ -24,10 +24,10 @@
let
# NOTE: When updating, please also update in current stable,
# as older versions stop working
version = "32.4.23";
version = "33.4.23";
sha256 = {
"x86_64-linux" = "11jh3cyax652crhvjshi8gnvb8mpp7hfbgwqjx5n1q3j1rswm3d1";
"i686-linux" = "0xf0in3ywgd53v19h0v2sg69b6y2lbvr5y6jz10x3cighzr31qfp";
"x86_64-linux" = "0z8sd71v0xfbq4x8gw0rjhg7kbd7r0465b1cqk1ls2fivb25qqxz";
"i686-linux" = "07sj1ixpml56bx83jawslak6scb12wxwn53nnabvgnivhb9vzq97";
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
arch = {

View File

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, python34Packages, readline, ncurses, canto-daemon }:
python34Packages.buildPythonApplication rec {
version = "0.9.7";
version = "0.9.9";
name = "canto-curses-${version}";
src = fetchFromGitHub {
owner = "themoken";
repo = "canto-curses";
rev = "v${version}";
sha256 = "0ap1b4m5gbzi0l7vj6pwvvg77i2aarbynbdc147z2b1lzvr985zq";
sha256 = "1vzb9n1j4gxigzll6654ln79lzbrrm6yy0lyazd9kldyl349b8sr";
};
buildInputs = [ readline ncurses canto-daemon ];

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, python34Packages, }:
python34Packages.buildPythonApplication rec {
version = "0.9.6";
version = "0.9.7";
name = "canto-daemon-${version}";
namePrefix = "";
@ -9,7 +9,7 @@ python34Packages.buildPythonApplication rec {
owner = "themoken";
repo = "canto-next";
rev = "v${version}";
sha256 = "0ibakwmsbpk10bvxsr5vvka0pks89arric428y5cmfgcpr72sqzw";
sha256 = "1si53r8cd4avfc56r315zyrghkppnjd6n125z1agfv59i7hdmk3n";
};
propagatedBuildInputs = with python34Packages; [ feedparser ];

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

@ -4,7 +4,7 @@
let
version = "2.6.2";
version = "2.7.1";
rpath = stdenv.lib.makeLibraryPath [
alsaLib
@ -46,7 +46,7 @@ let
if stdenv.system == "x86_64-linux" then
fetchurl {
url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
sha256 = "01zdzzpnv8qpmcpy6h9x7izrnwm0y015j5p5rnjwx8ki712wnmm8";
sha256 = "1na163lr0lfii9z1v4q9a3scqlaxg0s561a9nhadbqj03k74dw6s";
}
else
throw "Slack is not supported on ${stdenv.system}";

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

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "quiterss-${version}";
version = "0.18.6";
version = "0.18.8";
src = fetchFromGitHub {
owner = "QuiteRSS";
repo = "quiterss";
rev = "${version}";
sha256 = "0qklgdv6b3zg4xil9yglja33vaa25d4i7vipv5aafhlavjz16mh6";
sha256 = "09mdxpv04zycrip1p5w6947348xfraicijddvxsr7d498r59b7ff";
};
nativeBuildInputs = [ pkgconfig qmake ];

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

@ -1,4 +1,4 @@
{ stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, python2
{ stdenv, fetchurl, fetchpatch, autoconf, automake, libtool, pkgconfig, python2
, boost, db, openssl, geoip, libiconv, miniupnpc
, srcOnly, fetchgit
}:
@ -15,12 +15,12 @@ let
in stdenv.mkDerivation rec {
name = "twister-${version}";
version = "0.9.30";
version = "0.9.34";
src = fetchurl {
url = "https://github.com/miguelfreitas/twister-core/"
+ "archive/v${version}.tar.gz";
sha256 = "1i39iqq6z25rh869vi5k76g84rmyh30p05xid7z9sqjrqdfpyyzk";
sha256 = "1bi8libivd9y2bn9fc7vbc5q0jnal0pykpzgri6anqaww22y58jq";
};
configureFlags = [
@ -37,6 +37,12 @@ in stdenv.mkDerivation rec {
boost db openssl geoip miniupnpc libiconv
];
patches = stdenv.lib.singleton (fetchpatch {
url = "https://github.com/miguelfreitas/twister-core/commit/"
+ "dd4f5a176958ea6ed855dc3fcef79680c1c0c92c.patch";
sha256 = "06fgmqnjyl83civ3ixiq673k8zjgm8n2w4w46nsh810nprqim8s6";
});
postPatch = ''
sed -i -e '/-htmldir/s|(default: [^)]*)|(default: ${twisterHTML})|' \
src/init.cpp

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

@ -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

@ -0,0 +1,35 @@
{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "git-lfs-${version}";
version = "1.5.6";
rev = "0d02fb7d9a1c599bbf8c55e146e2845a908e04e0";
goPackagePath = "github.com/git-lfs/git-lfs";
src = fetchFromGitHub {
inherit rev;
owner = "git-lfs";
repo = "git-lfs";
sha256 = "0wddry1lqjccf4522fvhx6grx8h57xsz17lkaf5aybnrgw677w3d";
};
# Tests fail with 'lfstest-gitserver.go:46: main redeclared in this block'
excludedPackages = [ "test" ];
preBuild = ''
pushd go/src/github.com/git-lfs/git-lfs
go generate ./commands
popd
'';
postInstall = ''
rm -v $bin/bin/{man,script}
'';
meta = with stdenv.lib; {
description = "Git extension for versioning large files";
homepage = https://git-lfs.github.com/;
license = [ licenses.mit ];
maintainers = [ maintainers.twey ];
};
}

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

@ -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

@ -159,8 +159,9 @@ rec {
cpan = [
http://ftp.gwdg.de/pub/languages/perl/CPAN/
ftp://download.xs4all.nl/pub/mirror/CPAN/
ftp://ftp.nl.uu.net/pub/CPAN/
http://ftp.tuwien.ac.at/pub/CPAN/
http://ftp.funet.fi/pub/CPAN/
https://cpan.metacpan.org/
http://cpan.perl.org/
http://backpan.perl.org/ # for old releases
];
@ -266,15 +267,14 @@ rec {
# Apache mirrors (see http://www.apache.org/mirrors/).
apache = [
http://www.eu.apache.org/dist/
ftp://ftp.inria.fr/pub/Apache/
http://apache.cict.fr/
http://wwwftp.ciril.fr/pub/apache/
ftp://ftp.fu-berlin.de/unix/www/apache/
ftp://crysys.hit.bme.hu/pub/apache/dist/
http://ftp.tudelft.nl/apache/
http://mirror.cc.columbia.edu/pub/software/apache/
http://www.apache.org/dist/
http://archive.apache.org/dist/ # fallback for old releases
ftp://ftp.funet.fi/pub/mirrors/apache.org/
http://apache.cs.uu.nl/dist/
http://apache.cs.uu.nl/
http://apache.cs.utah.edu/
];

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

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, standardPatch, qtbase, qtx11extras, qttools, qtsvg, kwindowsystem, libkscreen, liblxqt, libqtxdg, libpthreadstubs, xorg }:
{ stdenv, fetchFromGitHub, fetchpatch, cmake, pkgconfig, lxqt-build-tools, standardPatch, qtbase, qtx11extras, qttools, qtsvg, kwindowsystem, libkscreen, liblxqt, libqtxdg, libpthreadstubs, xorg }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
@ -45,4 +45,13 @@ stdenv.mkDerivation rec {
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
patches = [
# Fixes a FTBFS with CMake v3.8
(fetchpatch {
url = https://github.com/lxde/lxqt-config/commit/bca652a75f8a497a69b1fbc1c7eaa353f6b4eef8.patch;
sha256 = "17k26xj97ks9gvcjhiwc5y39fciria4xyxrzcz67zj0flqm3cmrf";
})
];
}

View File

@ -0,0 +1,96 @@
{ stdenv, fetchurl, makeWrapper, libredirect, gcc-unwrapped, bash, gtk-engine-murrine, gtk_engines, librsvg
, libX11, libXext, libXi, libXau, libXrender, libXft, libXmu, libSM, libXcomposite, libXfixes, libXpm
, libXinerama, libXdamage, libICE, libXtst, libXaw, fontconfig, pango, cairo, glib, libxml2, atk, gtk2
, gdk_pixbuf, mesa_noglu, ncurses
, xclock, xsettingsd }:
let
version = "Indy-1.1.0";
deps = [
stdenv.cc.cc libX11 libXext libXi libXau libXrender libXft libXmu libSM libXcomposite libXfixes libXpm
libXinerama libXdamage libICE libXtst libXaw fontconfig pango cairo glib libxml2 atk gtk2
gdk_pixbuf mesa_noglu ncurses
];
runtime_deps = [
xclock xsettingsd
];
in stdenv.mkDerivation {
name = "MaXX-${version}";
srcs = [
(fetchurl {
url = "http://maxxinteractive.com/downloads/${version}/FEDORA/MaXX-${version}-NO-ARCH.tar.gz";
sha256 = "1d23j08wwrrn5cp7csv70pcz9jppcn0xb1894wkp0caaliy7g31y";
})
(fetchurl {
url = "http://maxxinteractive.com/downloads/${version}/FEDORA/MaXX-${version}-x86_64.tar.gz";
sha256 = "156p2lra184wyvibrihisd7cr1ivqaygsf0zfm26a12gx23b7708";
})
];
nativeBuildInputs = [ makeWrapper ];
buildPhase = ''
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)
substituteInPlace bin/adminterm \
--replace /bin/bash ${bash}/bin/bash
substituteInPlace share/misc/HOME/initMaXX-Desktop-Home.sh \
--replace "cp " "cp --no-preserve=mode "
'';
installPhase = ''
maxx=$out/opt/MaXX
mkdir -p "$maxx" $out/share
mv -- ./* "$maxx"
ln -s $maxx/share/icons $out/share
wrapProgram $maxx/etc/skel/Xsession.dt \
--prefix GTK_PATH : "${gtk-engine-murrine}/lib/gtk-2.0:${gtk_engines}/lib/gtk-2.0" \
--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
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"
if [ "$bin" -eq 0 ]; then
wrapProgram "$i" \
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS /opt/MaXX=$maxx
fi
fi
done < <(find "$maxx" -type f -print0)
cp ${gcc-unwrapped}/bin/cpp ${gcc-unwrapped}/libexec/gcc/*/*/cc1 $maxx/bin
for i in $maxx/bin/cpp $maxx/bin/cc1
do
wrapProgram "$i" \
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS /opt/MaXX=$maxx
done
'';
meta = with stdenv.lib; {
description = "A replica of IRIX Interactive Desktop";
homepage = http://www.maxxinteractive.com;
license = {
url = http://www.maxxinteractive.com/site/?page_id=97;
free = true;
};
maintainers = [ maintainers.gnidorah ];
platforms = ["x86_64-linux"];
hydraPlatforms = [];
longDescription = ''
A clone of IRIX Interactive Desktop made in agreement with SGI.
Provides simple and fast retro desktop environment.
'';
};
}

View File

@ -1 +1 @@
WGET_ARGS=( https://download.kde.org/stable/plasma/5.10.4/ -A '*.tar.xz' )
WGET_ARGS=( https://download.kde.org/stable/plasma/5.10.5/ -A '*.tar.xz' )

View File

@ -3,339 +3,339 @@
{
bluedevil = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/bluedevil-5.10.4.tar.xz";
sha256 = "1q1mhblrcsz55fjjgw9xd49w2whxcbvwvr7w5rb99jbgixiijmxi";
name = "bluedevil-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/bluedevil-5.10.5.tar.xz";
sha256 = "01nhfggikkygfzyjbm7zqszhq2x1fhc619wskwjb7hm9p35laj9r";
name = "bluedevil-5.10.5.tar.xz";
};
};
breeze = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/breeze-5.10.4.tar.xz";
sha256 = "075iq5nr112la2zfmpkz0x7v1720zkil5b074g5p6yl058nfbg1d";
name = "breeze-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/breeze-5.10.5.tar.xz";
sha256 = "0rmc3nn9b63jyij814hqx1zg38iphvd03pg7qybkp61zw40ng90v";
name = "breeze-5.10.5.tar.xz";
};
};
breeze-grub = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/breeze-grub-5.10.4.tar.xz";
sha256 = "110d8jkgn6b28w4piwgl0lvkz7kkhx10948i8sb7dahyxilz57l2";
name = "breeze-grub-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/breeze-grub-5.10.5.tar.xz";
sha256 = "0am1hldqyrsryda907q2qwfc09xcsxrv7bq9v23ig0xmylcsq3if";
name = "breeze-grub-5.10.5.tar.xz";
};
};
breeze-gtk = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/breeze-gtk-5.10.4.tar.xz";
sha256 = "0r0q5i24vqqaf9lyi7ac9i650ha6b3pv0js3r2vj0kivj1kh9wz5";
name = "breeze-gtk-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/breeze-gtk-5.10.5.tar.xz";
sha256 = "0i5ddrq9h1www5362qyfwpqpspn3brr43mbsv7ax7gk30san6w0a";
name = "breeze-gtk-5.10.5.tar.xz";
};
};
breeze-plymouth = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/breeze-plymouth-5.10.4.tar.xz";
sha256 = "16nvp2078py6gqwhi23rz0li6d1zv5i669q6whrpwd1xvb489xlg";
name = "breeze-plymouth-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/breeze-plymouth-5.10.5.tar.xz";
sha256 = "197g84mvh8s3f163zx24y1mmzk26fg3ni19pw21njdj2j813hd35";
name = "breeze-plymouth-5.10.5.tar.xz";
};
};
discover = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/discover-5.10.4.tar.xz";
sha256 = "08bxk03jknbdyk1lsw59ml4d6p66shn6kijcsw44pkfiwxv4k7a8";
name = "discover-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/discover-5.10.5.tar.xz";
sha256 = "085lq0y9a6r12jbx2ik7zqp4r9bjw332ykfh2gbzzz4s7l7rj4xf";
name = "discover-5.10.5.tar.xz";
};
};
kactivitymanagerd = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kactivitymanagerd-5.10.4.tar.xz";
sha256 = "0z33r8iysd69a76fwid46rywpvqa63pc5p7bgi2vy6aw7py5x2r2";
name = "kactivitymanagerd-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kactivitymanagerd-5.10.5.tar.xz";
sha256 = "19c297iyaq54vxc6xmvqsa1qlj5vr8071ydmkkfx3fa3lijp34v7";
name = "kactivitymanagerd-5.10.5.tar.xz";
};
};
kde-cli-tools = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kde-cli-tools-5.10.4.tar.xz";
sha256 = "1d9bp2yi4i5g4lk4y51yhmixkhjfjz9g0nlg6l22p37rnwr416h6";
name = "kde-cli-tools-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kde-cli-tools-5.10.5.tar.xz";
sha256 = "1i2frbxvzlqlv210w50ccxn8ksqxranc93v0wfjvnhd7f8p9c7vk";
name = "kde-cli-tools-5.10.5.tar.xz";
};
};
kdecoration = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kdecoration-5.10.4.tar.xz";
sha256 = "15m62a0wwvssrr2k065kqmxj00fc4pvfmnxx6aakvnf11jwzs0r5";
name = "kdecoration-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kdecoration-5.10.5.tar.xz";
sha256 = "0g24gisbnp92niff36bcnjk5pp84qc8cwmx283b887fzcn8v4mf3";
name = "kdecoration-5.10.5.tar.xz";
};
};
kde-gtk-config = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kde-gtk-config-5.10.4.tar.xz";
sha256 = "0r5kkvxf29mi45h0snsvjw9xkc02k9b2gai687sci7n8iwkjdc9j";
name = "kde-gtk-config-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kde-gtk-config-5.10.5.tar.xz";
sha256 = "1a5q8skykhvr5mixi59db2w1qsh8nj2dqncw4nmsh5nlh2ldmgm5";
name = "kde-gtk-config-5.10.5.tar.xz";
};
};
kdeplasma-addons = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kdeplasma-addons-5.10.4.tar.xz";
sha256 = "19rd7lsxbjw9sr96jfis8hfdrpmm1djwi8cr2yw683zv5kjqzigf";
name = "kdeplasma-addons-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kdeplasma-addons-5.10.5.tar.xz";
sha256 = "1xdsa38i60x24p6xiv4x1cqd7f2xijs15c19qsjv594lnmbizbr5";
name = "kdeplasma-addons-5.10.5.tar.xz";
};
};
kgamma5 = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kgamma5-5.10.4.tar.xz";
sha256 = "04kfigplrhcc01dap9a7l43dh2ig3ihyc01vwsrik73l026vm2im";
name = "kgamma5-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kgamma5-5.10.5.tar.xz";
sha256 = "0rci4v5amhfiwawf2sj5f6cmcyq3lrx68mn8id279bpq35mr23v1";
name = "kgamma5-5.10.5.tar.xz";
};
};
khotkeys = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/khotkeys-5.10.4.tar.xz";
sha256 = "16apzdf2g42sr349jdjjal0lv2bpginb72f1c5p8cs14nvg0cnys";
name = "khotkeys-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/khotkeys-5.10.5.tar.xz";
sha256 = "1ixxb18nz3f4i2qqr1lvss7b662sgj78kzqjs0gd9mf5ylhqj5is";
name = "khotkeys-5.10.5.tar.xz";
};
};
kinfocenter = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kinfocenter-5.10.4.tar.xz";
sha256 = "1r0a4z6wzzkb30y76xx4x1gfbka7h3qn1j0fxyf2h97vd362g8zr";
name = "kinfocenter-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kinfocenter-5.10.5.tar.xz";
sha256 = "0flfjypp6v2k99h11srigyc0ahy23869wz3ljbqbm3b0pgqs69sm";
name = "kinfocenter-5.10.5.tar.xz";
};
};
kmenuedit = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kmenuedit-5.10.4.tar.xz";
sha256 = "1kvspljbzrbglyq1l69r7gdlqww674hxdbvrhq1v95sh33i3l29w";
name = "kmenuedit-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kmenuedit-5.10.5.tar.xz";
sha256 = "0b786l5gm093dq1hvxcn97yg9fr0jmjhfl7sfd0cdn4pkg6almam";
name = "kmenuedit-5.10.5.tar.xz";
};
};
kscreen = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kscreen-5.10.4.tar.xz";
sha256 = "0rahpg14raqngk8a63qh2bnqgga43dyzqfzd9ys94iqkxkmlsasw";
name = "kscreen-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kscreen-5.10.5.tar.xz";
sha256 = "1a8bqa4wqnjav2w0s39dh7hmb3mqxjnhqwsw6mycgaxicl0h37vf";
name = "kscreen-5.10.5.tar.xz";
};
};
kscreenlocker = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kscreenlocker-5.10.4.tar.xz";
sha256 = "17sykdkd43z2x9ccvninbhgypysqr1p052cp1aj2wbvl54hhiznp";
name = "kscreenlocker-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kscreenlocker-5.10.5.tar.xz";
sha256 = "07c8x4pj9adwwm5036wbrrw2sj8xi9d8b6d7qya6bam9xrq0mxkb";
name = "kscreenlocker-5.10.5.tar.xz";
};
};
ksshaskpass = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/ksshaskpass-5.10.4.tar.xz";
sha256 = "1nz6pw10k9r7y4h9wl4b5jxbk10jkdj8fymkzx94dcvgasia52jf";
name = "ksshaskpass-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/ksshaskpass-5.10.5.tar.xz";
sha256 = "194ca18kclwmg7j9kcl02hm01cidy0hh2r68j6gxkafnlmn1cjjw";
name = "ksshaskpass-5.10.5.tar.xz";
};
};
ksysguard = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/ksysguard-5.10.4.tar.xz";
sha256 = "02p6c9lvgpcaszl5zigyjhcarjmp12hhhhfbkd448nmaklrw4qnl";
name = "ksysguard-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/ksysguard-5.10.5.tar.xz";
sha256 = "0ywz0ax29y0gm7c3lxwdkn5xvzpkd82a313wb3cz4iphqqga3jqn";
name = "ksysguard-5.10.5.tar.xz";
};
};
kwallet-pam = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kwallet-pam-5.10.4.tar.xz";
sha256 = "1si9fyg4n7kxn2kff15r8ph6m5hipyb3fwif9hc0x5v8iwf7a9q2";
name = "kwallet-pam-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kwallet-pam-5.10.5.tar.xz";
sha256 = "0ws0835a0j3wqia85hcdsgfn48d71v96dmmvc2y5pp45ki648bn4";
name = "kwallet-pam-5.10.5.tar.xz";
};
};
kwayland-integration = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kwayland-integration-5.10.4.tar.xz";
sha256 = "02d4sy3fzh45r2j13m8fr3p3xkd98j40mnzwf54ljb9irvm3fplc";
name = "kwayland-integration-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kwayland-integration-5.10.5.tar.xz";
sha256 = "0s1yhrvjgn455ayi368fkmdpmpyxl97c2pxy8rchfnk3g1ffhmdy";
name = "kwayland-integration-5.10.5.tar.xz";
};
};
kwin = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kwin-5.10.4.tar.xz";
sha256 = "0p7yv3a1qsv87ymr7kz8ayp3zspak1qw8lp051qrnaabpz951r39";
name = "kwin-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kwin-5.10.5.tar.xz";
sha256 = "1nxyn31a00r9kh0aw5fmvxklw21b2l07y267m0q0n9w6bmn6nzyc";
name = "kwin-5.10.5.tar.xz";
};
};
kwrited = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/kwrited-5.10.4.tar.xz";
sha256 = "1di7xlgszw8iy4w7722x9g9998q8y48j1s8qd6mryqryr9ryq9b3";
name = "kwrited-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/kwrited-5.10.5.tar.xz";
sha256 = "0wphhb4l6qb7lbklgxh2sc6wgqij4n3iwnhaarv2d17864r7ykc9";
name = "kwrited-5.10.5.tar.xz";
};
};
libkscreen = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/libkscreen-5.10.4.tar.xz";
sha256 = "0zpybykj6s547j53a7x4flj45qhpk3z0d3sfp6wgi88gybnffj8g";
name = "libkscreen-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/libkscreen-5.10.5.tar.xz";
sha256 = "0a2lrrp8wp7ndgdvnh48781isin868ndsqw0xr21rn78n90580n6";
name = "libkscreen-5.10.5.tar.xz";
};
};
libksysguard = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/libksysguard-5.10.4.tar.xz";
sha256 = "01w0laywva0p0ar2lvr1k5000bhjikjfxsb4f6p30qswrchrmrh3";
name = "libksysguard-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/libksysguard-5.10.5.tar.xz";
sha256 = "0ldcpjxy10cnwwc82ihy8xqjkavycrmv6wlbn0rwhnfs04n2rryn";
name = "libksysguard-5.10.5.tar.xz";
};
};
milou = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/milou-5.10.4.tar.xz";
sha256 = "105fyrh5n90ih93b9lq21y6s2ckdgb7lf9624y13gii674yv9xhb";
name = "milou-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/milou-5.10.5.tar.xz";
sha256 = "06kq9s9lij66vy5024aps03pzpcz1ixf0b79a7ii1px2h1s7z4gz";
name = "milou-5.10.5.tar.xz";
};
};
oxygen = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/oxygen-5.10.4.tar.xz";
sha256 = "0hip9vkp33dg51xr1v46i0w7fs6cqwx3lssw82qyzf042zipyikd";
name = "oxygen-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/oxygen-5.10.5.tar.xz";
sha256 = "0p1isrb8v0dkd27jnz6nbq44py7y3zzsjljn9xbv3d02vg802ym9";
name = "oxygen-5.10.5.tar.xz";
};
};
plasma-desktop = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-desktop-5.10.4.tar.xz";
sha256 = "0g1cynvm58fg99n9ir0lwbsg3c4jh1fr330n12bx6ccgw66i1mgf";
name = "plasma-desktop-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-desktop-5.10.5.tar.xz";
sha256 = "1sxy2k2p15ag5pcy36lpn83nz8d1jb1iyq2nihf4yrc9jlxx9gqm";
name = "plasma-desktop-5.10.5.tar.xz";
};
};
plasma-integration = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-integration-5.10.4.tar.xz";
sha256 = "0rf50yr97if7i8ghjsladw9krkcjn45qnpq86siph2hnn784x2q6";
name = "plasma-integration-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-integration-5.10.5.tar.xz";
sha256 = "15cxwsdp78kx55py0wkwqpv4w8cf130hadmdvdw64lwr4gssvhjn";
name = "plasma-integration-5.10.5.tar.xz";
};
};
plasma-nm = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-nm-5.10.4.tar.xz";
sha256 = "0lxg2x73n353p69l4qgxm759f6vxl2z2rff60864yj80ija6i58c";
name = "plasma-nm-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-nm-5.10.5.tar.xz";
sha256 = "004nmkfy74qaba6hslv2cyb52l7q6ihpavi5j5ax8k66n5zx00bi";
name = "plasma-nm-5.10.5.tar.xz";
};
};
plasma-pa = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-pa-5.10.4.tar.xz";
sha256 = "0nxn1vhylpy91kz4xihhrxagjlwdm5xi10blgkfkq98npg7g1had";
name = "plasma-pa-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-pa-5.10.5.tar.xz";
sha256 = "0300x3w7mhyb5wpsj47qsfm73fc90iw1vxrgzl9014pxc3h14np1";
name = "plasma-pa-5.10.5.tar.xz";
};
};
plasma-sdk = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-sdk-5.10.4.tar.xz";
sha256 = "0m1q39gxrjk5fmz5dkwxz0wjngv9xib6xiw3k8rscjbby5q2x4g0";
name = "plasma-sdk-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-sdk-5.10.5.tar.xz";
sha256 = "0mjndw132rn46sqjw5jdin8hn6lbrx5955h05jawk95sncr3d0yb";
name = "plasma-sdk-5.10.5.tar.xz";
};
};
plasma-tests = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-tests-5.10.4.tar.xz";
sha256 = "0l8f0p3z1xfc5ki4696yr4ckdpcfswg53f9bbwfzgwg54h109zs9";
name = "plasma-tests-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-tests-5.10.5.tar.xz";
sha256 = "0mfh35zdc4n52q01jbagxgr51hsvjlyfmnj6x4l2zpif0fpqpxh8";
name = "plasma-tests-5.10.5.tar.xz";
};
};
plasma-workspace = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-workspace-5.10.4.tar.xz";
sha256 = "08d18swivlysh535fkkfc256rkl1p6b93y934w21bdyihs0mf18w";
name = "plasma-workspace-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-workspace-5.10.5.tar.xz";
sha256 = "1n12vzjnrhndkzki7dh9kzrwrvll5xqq0y02srb9bg3gyjbp54jl";
name = "plasma-workspace-5.10.5.tar.xz";
};
};
plasma-workspace-wallpapers = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plasma-workspace-wallpapers-5.10.4.tar.xz";
sha256 = "04jp14y8k5bchs80hj3r2h3qi17q3i4fbq6g09457qv7i195xgr2";
name = "plasma-workspace-wallpapers-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plasma-workspace-wallpapers-5.10.5.tar.xz";
sha256 = "1z7mqk9nxh232dxl5jg20zbc5nkq5srks4f8b02va6wzfjhwhc88";
name = "plasma-workspace-wallpapers-5.10.5.tar.xz";
};
};
plymouth-kcm = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/plymouth-kcm-5.10.4.tar.xz";
sha256 = "0l0b2jpgz22f50i7zwmq5mij3p9ym6d059qvy35j96cyn69947nx";
name = "plymouth-kcm-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/plymouth-kcm-5.10.5.tar.xz";
sha256 = "11vfaaqd3mxbnq16rv7xsmfcj33i2cmdljdxib1sg5minybd072y";
name = "plymouth-kcm-5.10.5.tar.xz";
};
};
polkit-kde-agent = {
version = "1-5.10.4";
version = "1-5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/polkit-kde-agent-1-5.10.4.tar.xz";
sha256 = "1kk1g40pgzdwbpxymyf5f0m474g273nq7knkzz41jp7yqi7dh9jw";
name = "polkit-kde-agent-1-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/polkit-kde-agent-1-5.10.5.tar.xz";
sha256 = "158lkf76fz65nr0lx14skkcsk2p3xw98nh43z00wvm2c5qqzmnp2";
name = "polkit-kde-agent-1-5.10.5.tar.xz";
};
};
powerdevil = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/powerdevil-5.10.4.tar.xz";
sha256 = "1qlxdn7w6grwpqlwfwwsh0ag5bshi8m9mz2s1zvrfgk09wvl6mr2";
name = "powerdevil-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/powerdevil-5.10.5.tar.xz";
sha256 = "0dghlgva8fybvhc09y1avzhgak246n4ad2njjvfnxpazpi2laxv7";
name = "powerdevil-5.10.5.tar.xz";
};
};
sddm-kcm = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/sddm-kcm-5.10.4.tar.xz";
sha256 = "1sljbd57nn1n26jdrbyj8dgrjdz3rfq8vacvx96a2nj3csnf0qlk";
name = "sddm-kcm-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/sddm-kcm-5.10.5.tar.xz";
sha256 = "13hld5bndxhs6j3lja08zrc6czvpl4k385i8lb3g9zvn9vrk29sw";
name = "sddm-kcm-5.10.5.tar.xz";
};
};
systemsettings = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/systemsettings-5.10.4.tar.xz";
sha256 = "05rchi657px3qizqq82z4k0wsjc4cm2w5wb1mb9ayg287cdrsnjy";
name = "systemsettings-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/systemsettings-5.10.5.tar.xz";
sha256 = "0b3wpmfjj2zmi7ickppz32i63dpn4jja3nnjrxn912yw47z4bri2";
name = "systemsettings-5.10.5.tar.xz";
};
};
user-manager = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/user-manager-5.10.4.tar.xz";
sha256 = "16swrdmf0b26zy5qipb89smh3cps1fvcxkz12sxd8i92m6cxa903";
name = "user-manager-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/user-manager-5.10.5.tar.xz";
sha256 = "1fiih72jafshxgwfq4q9csv1i62mgj35qr87lh6lyady6aghajnq";
name = "user-manager-5.10.5.tar.xz";
};
};
xdg-desktop-portal-kde = {
version = "5.10.4";
version = "5.10.5";
src = fetchurl {
url = "${mirror}/stable/plasma/5.10.4/xdg-desktop-portal-kde-5.10.4.tar.xz";
sha256 = "01snfdj73r0hby9h32k7258r65ip62wk4p78qxibvffxm4ixw04l";
name = "xdg-desktop-portal-kde-5.10.4.tar.xz";
url = "${mirror}/stable/plasma/5.10.5/xdg-desktop-portal-kde-5.10.5.tar.xz";
sha256 = "0rgv4nqkrwjzvhg8cmkin348n0i6sd4v444bk6j83y4m0lxdi1ba";
name = "xdg-desktop-portal-kde-5.10.5.tar.xz";
};
};
}

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

@ -138,8 +138,9 @@ stdenv.mkDerivation ({
hardeningDisable = [ "format" ] ++ optional (name != "gnat") "all";
outputs = if (hostPlatform.is64bit && langAda) then [ "out" "doc" ]
else [ "out" "lib" "doc" ];
outputs = [ "out" "man" "info" ]
++ optional (!(hostPlatform.is64bit && langAda)) "lib";
setOutputFlags = false;
NIX_NO_SELF_RPATH = true;

View File

@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
description = "The Glasgow Haskell Compiler";
platforms = ["x86_64-linux" "i686-linux"]; # Darwin is unsupported.
inherit (ghc.meta) license;
broken = true; # https://nix-cache.s3.amazonaws.com/log/6ys7lzckf2c0532kzhmss73mmz504can-ghc-6.10.4.drv
};
}

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

@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
platforms = ["x86_64-linux"]; # other platforms don't have Xen
maintainers = with stdenv.lib.maintainers; [ dmjio ];
inherit (bootPkgs.ghc.meta) license;
broken = true; # https://nix-cache.s3.amazonaws.com/log/6i98mhbq9nzzhwr4svlivm4gz91l2w0f-HaLVM-2.4.0.drv
};
}

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

@ -697,6 +697,11 @@ self: super: {
# test suite cannot find its own "idris" binary
idris = doJailbreak (dontCheck super.idris);
idris_1_1_1 = overrideCabal (doJailbreak (dontCheck super.idris_1_1_1)) (drv: {
# The standard libraries are compiled separately
configureFlags = (drv.configureFlags or []) ++ [ "-fexeconly" ];
});
# https://github.com/bos/math-functions/issues/25
math-functions = dontCheck super.math-functions;

View File

@ -64,21 +64,16 @@ self: super: {
doctest = dontHaddock super.doctest;
hsdns = dontHaddock super.hsdns;
# Needs hashable on pre 7.10.x compilers.
nats_1 = addBuildDepend super.nats_1 self.hashable;
nats = addBuildDepend super.nats self.hashable;
# Newer versions require bytestring >=0.10.
tar = super.tar_0_4_1_0;
# Needs void on pre 7.10.x compilers.
# These builds need additional dependencies on old compilers.
nats_1 = addBuildDepend super.nats_1 self.hashable;
nats = addBuildDepend super.nats self.hashable;
conduit = addBuildDepend super.conduit self.void;
# Needs tagged on pre 7.6.x compilers.
reflection = addBuildDepend super.reflection self.tagged;
# Needs nats on pre 7.6.x compilers.
semigroups = addBuildDepend super.semigroups self.nats;
text = addBuildDepend super.text self.bytestring-builder;
# Newer versions don't compile any longer.
network_2_6_3_1 = dontCheck super.network_2_6_3_1;

View File

@ -183,7 +183,7 @@ self: super: {
# GHC versions prior to 8.x require additional build inputs.
dependent-map = addBuildDepend super.dependent-map self.semigroups;
distributive = addBuildDepend super.distributive self.semigroups;
distributive = addBuildDepend (dontCheck super.distributive) self.semigroups;
mono-traversable = addBuildDepend super.mono-traversable self.semigroups;
attoparsec = addBuildDepends super.attoparsec (with self; [semigroups fail]);
Glob = addBuildDepends super.Glob (with self; [semigroups]);
@ -196,7 +196,7 @@ self: super: {
lens = addBuildDepend super.lens self.generic-deriving;
optparse-applicative = addBuildDepend super.optparse-applicative self.semigroups;
QuickCheck = addBuildDepend super.QuickCheck self.semigroups;
semigroups = addBuildDepends super.semigroups (with self; [hashable tagged text unordered-containers]);
semigroups = addBuildDepends (dontCheck super.semigroups) (with self; [hashable tagged text unordered-containers]);
texmath = addBuildDepend super.texmath self.network-uri;
yesod-auth-oauth2 = overrideCabal super.yesod-auth-oauth2 (drv: { testDepends = (drv.testDepends or []) ++ [ self.load-env self.yesod ]; });
# cereal must have `fail` in pre-ghc-8.0.x versions
@ -206,4 +206,8 @@ self: super: {
# Moved out from common as no longer the case for GHC8
ghc-mod = super.ghc-mod.override { cabal-helper = self.cabal-helper_0_6_3_1; };
# The test suite requires Cabal 1.24.x or later to compile.
comonad = dontCheck super.comonad;
semigroupoids = dontCheck super.semigroupoids;
}

View File

@ -77,6 +77,7 @@ self: super: {
reflection = addBuildDepend super.reflection self.tagged;
semigroups = addBuildDepend super.semigroups self.nats;
optparse-applicative = addBuildDepend super.optparse-applicative self.semigroups;
text = addBuildDepend super.text self.bytestring-builder;
# Newer versions don't compile any longer.
network_2_6_3_1 = dontCheck super.network_2_6_3_1;

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