mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-26 04:43:09 +03:00
Merge branch 'master' into kdepim-17.08
This commit is contained in:
commit
f7afa84c0c
@ -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`,
|
||||
|
@ -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>";
|
||||
|
@ -1,2 +1,2 @@
|
||||
# Expose the minimum required version for evaluating Nixpkgs
|
||||
"1.10"
|
||||
"1.11"
|
||||
|
@ -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>
|
||||
|
61
nixos/modules/hardware/raid/hpsa.nix
Normal file
61
nixos/modules/hardware/raid/hpsa.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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
|
||||
|
@ -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/<name>/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.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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" ] "")
|
||||
|
@ -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")}
|
||||
'');
|
||||
};
|
||||
|
||||
|
61
nixos/modules/services/continuous-integration/hail.nix
Normal file
61
nixos/modules/services/continuous-integration/hail.nix
Normal 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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -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;
|
||||
|
117
nixos/modules/services/misc/airsonic.nix
Normal file
117
nixos/modules/services/misc/airsonic.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
@ -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";
|
||||
});
|
||||
};
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -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";
|
||||
|
200
nixos/modules/services/security/usbguard.nix
Normal file
200
nixos/modules/services/security/usbguard.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -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";
|
||||
};
|
||||
|
||||
|
@ -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 = {
|
||||
|
25
nixos/modules/services/x11/desktop-managers/maxx.nix
Normal file
25
nixos/modules/services/x11/desktop-managers/maxx.nix
Normal 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 ];
|
||||
}
|
@ -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 \
|
||||
|
@ -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 {};
|
||||
|
@ -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) ''
|
||||
|
@ -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.
|
||||
|
@ -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>
|
||||
|
@ -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";
|
||||
};
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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 = ''
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
@ -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 = {
|
||||
|
@ -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 = {
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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 =
|
||||
|
12
pkgs/applications/misc/copyq/cmake-modules.patch
Normal file
12
pkgs/applications/misc/copyq/cmake-modules.patch
Normal 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)
|
@ -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;
|
||||
|
30
pkgs/applications/misc/et/default.nix
Normal file
30
pkgs/applications/misc/et/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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"
|
||||
'';
|
||||
|
@ -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; {
|
||||
|
@ -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
|
||||
|
@ -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 ];
|
||||
|
19
pkgs/applications/misc/sqlmap/default.nix
Normal file
19
pkgs/applications/misc/sqlmap/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
@ -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; {
|
||||
|
@ -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";
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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 {
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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 = {
|
||||
|
@ -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 = {
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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/
|
||||
'';
|
||||
|
@ -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 = [];
|
||||
};
|
||||
}
|
@ -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}";
|
||||
|
@ -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 = [
|
||||
|
@ -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 ];
|
||||
|
@ -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; {
|
||||
|
@ -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
|
||||
|
@ -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" ];
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
35
pkgs/applications/version-management/git-lfs/1.nix
Normal file
35
pkgs/applications/version-management/git-lfs/1.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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";
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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 = ''
|
||||
|
@ -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/
|
||||
];
|
||||
|
||||
|
@ -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 { };
|
||||
}
|
||||
|
@ -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 = [
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
'';
|
||||
|
@ -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
|
||||
|
@ -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 = {
|
||||
|
@ -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";
|
||||
})
|
||||
];
|
||||
|
||||
}
|
||||
|
96
pkgs/desktops/maxx/default.nix
Normal file
96
pkgs/desktops/maxx/default.nix
Normal 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.
|
||||
'';
|
||||
};
|
||||
}
|
@ -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' )
|
||||
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user