Merge master into staging-next

This commit is contained in:
Frederik Rietdijk 2020-05-05 19:51:09 +02:00
commit 9875bbae75
372 changed files with 3551 additions and 1619 deletions

View File

@ -15,7 +15,7 @@ Reviewing guidelines: https://hydra.nixos.org/job/nixpkgs/trunk/manual/latest/do
<!-- Please check what applies. Note that these are not hard requirements but merely serve as information for reviewers. --> <!-- Please check what applies. Note that these are not hard requirements but merely serve as information for reviewers. -->
- [ ] Tested using sandboxing ([nix.useSandbox](http://nixos.org/nixos/manual/options.html#opt-nix.useSandbox) on NixOS, or option `sandbox` in [`nix.conf`](http://nixos.org/nix/manual/#sec-conf-file) on non-NixOS linux) - [ ] Tested using sandboxing ([nix.useSandbox](https://nixos.org/nixos/manual/options.html#opt-nix.useSandbox) on NixOS, or option `sandbox` in [`nix.conf`](https://nixos.org/nix/manual/#sec-conf-file) on non-NixOS linux)
- Built on platform(s) - Built on platform(s)
- [ ] NixOS - [ ] NixOS
- [ ] macOS - [ ] macOS

View File

@ -111,7 +111,7 @@
</para> </para>
<para> <para>
The exact syntax and semantics of the Nix expression language, including the built-in function, are described in the Nix manual in the <link The exact syntax and semantics of the Nix expression language, including the built-in function, are described in the Nix manual in the <link
xlink:href="http://hydra.nixos.org/job/nix/trunk/tarball/latest/download-by-type/doc/manual/#chap-writing-nix-expressions">chapter on writing Nix expressions</link>. xlink:href="https://hydra.nixos.org/job/nix/trunk/tarball/latest/download-by-type/doc/manual/#chap-writing-nix-expressions">chapter on writing Nix expressions</link>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -167,7 +167,7 @@ parameters that the SDK composition function (the function shown in the
previous section) supports. previous section) supports.
This build function is particularly useful when it is desired to use This build function is particularly useful when it is desired to use
[Hydra](http://nixos.org/hydra): the Nix-based continuous integration solution [Hydra](https://nixos.org/hydra): the Nix-based continuous integration solution
to build Android apps. An Android APK gets exposed as a build product and can be to build Android apps. An Android APK gets exposed as a build product and can be
installed on any Android device with a web browser by navigating to the build installed on any Android device with a web browser by navigating to the build
result page. result page.

View File

@ -21,6 +21,7 @@
<xi:include href="node.section.xml" /> <xi:include href="node.section.xml" />
<xi:include href="ocaml.xml" /> <xi:include href="ocaml.xml" />
<xi:include href="perl.xml" /> <xi:include href="perl.xml" />
<xi:include href="php.section.xml" />
<xi:include href="python.section.xml" /> <xi:include href="python.section.xml" />
<xi:include href="qt.xml" /> <xi:include href="qt.xml" />
<xi:include href="r.section.xml" /> <xi:include href="r.section.xml" />

View File

@ -18,7 +18,7 @@ The primary objective of this project is to use the Nix expression language to
specify how iOS apps can be built from source code, and to automatically spawn specify how iOS apps can be built from source code, and to automatically spawn
iOS simulator instances for testing. iOS simulator instances for testing.
This component also makes it possible to use [Hydra](http://nixos.org/hydra), This component also makes it possible to use [Hydra](https://nixos.org/hydra),
the Nix-based continuous integration server to regularly build iOS apps and to the Nix-based continuous integration server to regularly build iOS apps and to
do wireless ad-hoc installations of enterprise IPAs on iOS devices through do wireless ad-hoc installations of enterprise IPAs on iOS devices through
Hydra. Hydra.

View File

@ -1,10 +1,8 @@
# PHP # PHP {#sec-php}
## User Guide ## User Guide {#ssec-php-user-guide}
### Using PHP ### Overview {#ssec-php-user-guide-overview}
#### Overview
Several versions of PHP are available on Nix, each of which having a Several versions of PHP are available on Nix, each of which having a
wide variety of extensions and libraries available. wide variety of extensions and libraries available.
@ -36,7 +34,7 @@ opcache extension shipped with PHP is available at
`php.extensions.opcache` and the third-party ImageMagick extension at `php.extensions.opcache` and the third-party ImageMagick extension at
`php.extensions.imagick`. `php.extensions.imagick`.
#### Installing PHP with extensions ### Installing PHP with extensions {#ssec-php-user-guide-installing-with-extensions}
A PHP package with specific extensions enabled can be built using A PHP package with specific extensions enabled can be built using
`php.withExtensions`. This is a function which accepts an anonymous `php.withExtensions`. This is a function which accepts an anonymous
@ -64,7 +62,7 @@ To build your list of extensions from the ground up, you can simply
ignore `enabled`: ignore `enabled`:
```nix ```nix
php.withExtensions ({ all, ... }: with all; [ opcache imagick ]) php.withExtensions ({ all, ... }: with all; [ imagick opcache ])
``` ```
`php.withExtensions` provides extensions by wrapping a minimal php `php.withExtensions` provides extensions by wrapping a minimal php
@ -89,14 +87,14 @@ php.buildEnv {
} }
``` ```
##### Example setup for `phpfpm` #### Example setup for `phpfpm` {#ssec-php-user-guide-installing-with-extensions-phpfpm}
You can use the previous examples in a `phpfpm` pool called `foo` as You can use the previous examples in a `phpfpm` pool called `foo` as
follows: follows:
```nix ```nix
let let
myPhp = php.withExtensions ({ all, ... }: with all; [ opcache imagick ]); myPhp = php.withExtensions ({ all, ... }: with all; [ imagick opcache ]);
in { in {
services.phpfpm.pools."foo".phpPackage = myPhp; services.phpfpm.pools."foo".phpPackage = myPhp;
}; };
@ -113,7 +111,7 @@ in {
}; };
``` ```
##### Example usage with `nix-shell` #### Example usage with `nix-shell` {#ssec-php-user-guide-installing-with-extensions-nix-shell}
This brings up a temporary environment that contains a PHP interpreter This brings up a temporary environment that contains a PHP interpreter
with the extensions `imagick` and `opcache` enabled: with the extensions `imagick` and `opcache` enabled:
@ -121,3 +119,19 @@ with the extensions `imagick` and `opcache` enabled:
```sh ```sh
nix-shell -p 'php.withExtensions ({ all, ... }: with all; [ imagick opcache ])' nix-shell -p 'php.withExtensions ({ all, ... }: with all; [ imagick opcache ])'
``` ```
### Installing PHP packages with extensions {#ssec-php-user-guide-installing-packages-with-extensions}
All interactive tools use the PHP package you get them from, so all
packages at `php.packages.*` use the `php` package with its default
extensions. Sometimes this default set of extensions isn't enough and
you may want to extend it. A common case of this is the `composer`
package: a project may depend on certain extensions and `composer`
won't work with that project unless those extensions are loaded.
Example of building `composer` with additional extensions:
```nix
(php.withExtensions ({ all, enabled }:
enabled ++ (with all; [ imagick redis ]))
).packages.composer
```

View File

@ -42,7 +42,7 @@ distributed as soon as all tests for that channel pass, e.g.
[this table](https://hydra.nixos.org/job/nixpkgs/trunk/unstable#tabs-constituents) [this table](https://hydra.nixos.org/job/nixpkgs/trunk/unstable#tabs-constituents)
shows the status of tests for the `nixpkgs` channel. shows the status of tests for the `nixpkgs` channel.
The tests are conducted by a cluster called [Hydra](http://nixos.org/hydra/), The tests are conducted by a cluster called [Hydra](https://nixos.org/hydra/),
which also builds binary packages from the Nix expressions in Nixpkgs for which also builds binary packages from the Nix expressions in Nixpkgs for
`x86_64-linux`, `i686-linux` and `x86_64-darwin`. `x86_64-linux`, `i686-linux` and `x86_64-darwin`.
The binaries are made available via a [binary cache](https://cache.nixos.org). The binaries are made available via a [binary cache](https://cache.nixos.org).

View File

@ -286,7 +286,7 @@ export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</prog
<note> <note>
<para> <para>
This release of Nixpkgs requires <link This release of Nixpkgs requires <link
xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix 0.10</link> or higher. xlink:href='https://nixos.org/releases/nix/nix-0.10/'>Nix 0.10</link> or higher.
</para> </para>
</note> </note>
@ -436,7 +436,7 @@ stdenv.mkDerivation {
<listitem> <listitem>
<para> <para>
Distribution files have been moved to <link Distribution files have been moved to <link
xlink:href="http://nixos.org/" />. xlink:href="https://nixos.org/" />.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -758,7 +758,7 @@
name = "Jonathan Glines"; name = "Jonathan Glines";
}; };
avaq = { avaq = {
email = "avaq+nixos@xs4all.nl"; email = "nixpkgs@account.avaq.it";
github = "avaq"; github = "avaq";
githubId = 1217745; githubId = 1217745;
name = "Aldwin Vlasblom"; name = "Aldwin Vlasblom";
@ -4084,6 +4084,12 @@
githubId = 6346418; githubId = 6346418;
name = "Kolby Crouch"; name = "Kolby Crouch";
}; };
kolloch = {
email = "info@eigenvalue.net";
github = "kolloch";
githubId = 339354;
name = "Peter Kolloch";
};
konimex = { konimex = {
email = "herdiansyah@netc.eu"; email = "herdiansyah@netc.eu";
github = "konimex"; github = "konimex";
@ -4423,6 +4429,16 @@
fingerprint = "74F5 E5CC 19D3 B5CB 608F 6124 68FF 81E6 A785 0F49"; fingerprint = "74F5 E5CC 19D3 B5CB 608F 6124 68FF 81E6 A785 0F49";
}]; }];
}; };
lourkeur = {
name = "Louis Bettens";
email = "louis@bettens.info";
github = "lourkeur";
githubId = 15657735;
keys = [{
longkeyid = "ed25519/0xDFE1D4A017337E2A";
fingerprint = "5B93 9CFA E8FC 4D8F E07A 3AEA DFE1 D4A0 1733 7E2A";
}];
};
luis = { luis = {
email = "luis.nixos@gmail.com"; email = "luis.nixos@gmail.com";
github = "Luis-Hebendanz"; github = "Luis-Hebendanz";
@ -7130,6 +7146,12 @@
githubId = 602439; githubId = 602439;
name = "Serguei Narojnyi"; name = "Serguei Narojnyi";
}; };
snicket2100 = {
email = "57048005+snicket2100@users.noreply.github.com";
github = "snicket2100";
githubId = 57048005;
name = "snicket2100";
};
snyh = { snyh = {
email = "snyh@snyh.org"; email = "snyh@snyh.org";
github = "snyh"; github = "snyh";

View File

@ -79,7 +79,7 @@ def cli(jobset):
and print a summary of failed builds and print a summary of failed builds
""" """
url = "http://hydra.nixos.org/jobset/{}".format(jobset) url = "https://hydra.nixos.org/jobset/{}".format(jobset)
# get the last evaluation # get the last evaluation
click.echo(click.style( click.echo(click.style(

View File

@ -2,4 +2,4 @@
NixOS is a Linux distribution based on the purely functional package NixOS is a Linux distribution based on the purely functional package
management system Nix. More information can be found at management system Nix. More information can be found at
http://nixos.org/nixos and in the manual in doc/manual. https://nixos.org/nixos and in the manual in doc/manual.

View File

@ -11,7 +11,7 @@
the package to your clone, and (optionally) submit a patch or pull request to the package to your clone, and (optionally) submit a patch or pull request to
have it accepted into the main Nixpkgs repository. This is described in have it accepted into the main Nixpkgs repository. This is described in
detail in the <link detail in the <link
xlink:href="http://nixos.org/nixpkgs/manual">Nixpkgs xlink:href="https://nixos.org/nixpkgs/manual">Nixpkgs
manual</link>. In short, you clone Nixpkgs: manual</link>. In short, you clone Nixpkgs:
<screen> <screen>
<prompt>$ </prompt>git clone https://github.com/NixOS/nixpkgs <prompt>$ </prompt>git clone https://github.com/NixOS/nixpkgs

View File

@ -14,7 +14,7 @@
when managing complex systems. The syntax and semantics of the Nix language when managing complex systems. The syntax and semantics of the Nix language
are fully described in the are fully described in the
<link <link
xlink:href="http://nixos.org/nix/manual/#chap-writing-nix-expressions">Nix xlink:href="https://nixos.org/nix/manual/#chap-writing-nix-expressions">Nix
manual</link>, but here we give a short overview of the most important manual</link>, but here we give a short overview of the most important
constructs useful in NixOS configuration files. constructs useful in NixOS configuration files.
</para> </para>

View File

@ -10,7 +10,7 @@
expression language. Its not complete. In particular, there are many other expression language. Its not complete. In particular, there are many other
built-in functions. See the built-in functions. See the
<link <link
xlink:href="http://nixos.org/nix/manual/#chap-writing-nix-expressions">Nix xlink:href="https://nixos.org/nix/manual/#chap-writing-nix-expressions">Nix
manual</link> for the rest. manual</link> for the rest.
</para> </para>

View File

@ -57,7 +57,7 @@
<listitem> <listitem>
<para> <para>
<link xlink:href="https://github.com/NixOS/nixos-org-configurations/pull/18"> <link xlink:href="https://github.com/NixOS/nixos-org-configurations/pull/18">
Make sure a channel is created at http://nixos.org/channels/. </link> Make sure a channel is created at https://nixos.org/channels/. </link>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -37,7 +37,7 @@
imports = imports =
[ # Use postgresql service from nixos-unstable channel. [ # Use postgresql service from nixos-unstable channel.
# sudo nix-channel --add http://nixos.org/channels/nixos-unstable nixos-unstable # sudo nix-channel --add https://nixos.org/channels/nixos-unstable nixos-unstable
&lt;nixos-unstable/nixos/modules/services/databases/postgresql.nix&gt; &lt;nixos-unstable/nixos/modules/services/databases/postgresql.nix&gt;
]; ];

View File

@ -7,7 +7,7 @@
<para> <para>
NixOS ISO images can be downloaded from the NixOS ISO images can be downloaded from the
<link <link
xlink:href="http://nixos.org/nixos/download.html">NixOS download xlink:href="https://nixos.org/nixos/download.html">NixOS download
page</link>. There are a number of installation options. If you happen to page</link>. There are a number of installation options. If you happen to
have an optical drive and a spare CD, burning the image to CD and booting have an optical drive and a spare CD, burning the image to CD and booting
from that is probably the easiest option. Most people will need to prepare a from that is probably the easiest option. Most people will need to prepare a
@ -26,7 +26,7 @@ xlink:href="https://nixos.wiki/wiki/NixOS_Installation_Guide#Making_the_installa
<para> <para>
Using virtual appliances in Open Virtualization Format (OVF) that can be Using virtual appliances in Open Virtualization Format (OVF) that can be
imported into VirtualBox. These are available from the imported into VirtualBox. These are available from the
<link xlink:href="http://nixos.org/nixos/download.html">NixOS download <link xlink:href="https://nixos.org/nixos/download.html">NixOS download
page</link>. page</link>.
</para> </para>
</listitem> </listitem>

View File

@ -49,7 +49,7 @@
<para> <para>
Nix has been updated to 1.7 Nix has been updated to 1.7
(<link (<link
xlink:href="http://nixos.org/nix/manual/#ssec-relnotes-1.7">details</link>). xlink:href="https://nixos.org/nix/manual/#ssec-relnotes-1.7">details</link>).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -22,7 +22,7 @@
in excess of 8,000 Haskell packages. Detailed instructions on how to use in excess of 8,000 Haskell packages. Detailed instructions on how to use
that infrastructure can be found in the that infrastructure can be found in the
<link <link
xlink:href="http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's xlink:href="https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's
Guide to the Haskell Infrastructure</link>. Users migrating from an earlier Guide to the Haskell Infrastructure</link>. Users migrating from an earlier
release may find helpful information below, in the list of release may find helpful information below, in the list of
backwards-incompatible changes. Furthermore, we distribute 51(!) additional backwards-incompatible changes. Furthermore, we distribute 51(!) additional
@ -555,7 +555,7 @@ nix-env -f &quot;&lt;nixpkgs&gt;&quot; -iA haskellPackages.pandoc
the compiler now is the <literal>haskellPackages.ghcWithPackages</literal> the compiler now is the <literal>haskellPackages.ghcWithPackages</literal>
function. The function. The
<link <link
xlink:href="http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's xlink:href="https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's
Guide to the Haskell Infrastructure</link> provides more information about Guide to the Haskell Infrastructure</link> provides more information about
this subject. this subject.
</para> </para>

View File

@ -54,7 +54,7 @@
xlink:href="https://reproducible-builds.org/specs/source-date-epoch/">SOURCE_DATE_EPOCH</envar> xlink:href="https://reproducible-builds.org/specs/source-date-epoch/">SOURCE_DATE_EPOCH</envar>
to a deterministic value, and Nix has to a deterministic value, and Nix has
<link <link
xlink:href="http://nixos.org/nix/manual/#ssec-relnotes-1.11">gained xlink:href="https://nixos.org/nix/manual/#ssec-relnotes-1.11">gained
an option</link> to repeat a build a number of times to test determinism. an option</link> to repeat a build a number of times to test determinism.
An ongoing project, the goal of exact reproducibility is to allow binaries An ongoing project, the goal of exact reproducibility is to allow binaries
to be verified independently (e.g., a user might only trust binaries that to be verified independently (e.g., a user might only trust binaries that

View File

@ -55,6 +55,12 @@
The new <varname>virtualisation.containers</varname> module manages configuration shared by the CRI-O and Podman modules. The new <varname>virtualisation.containers</varname> module manages configuration shared by the CRI-O and Podman modules.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Declarative Docker containers are renamed from <varname>docker-containers</varname> to <varname>virtualisation.oci-containers.containers</varname>.
This is to make it possible to use <literal>podman</literal> instead of <literal>docker</literal>.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>

View File

@ -984,9 +984,9 @@
./virtualisation/container-config.nix ./virtualisation/container-config.nix
./virtualisation/containers.nix ./virtualisation/containers.nix
./virtualisation/nixos-containers.nix ./virtualisation/nixos-containers.nix
./virtualisation/oci-containers.nix
./virtualisation/cri-o.nix ./virtualisation/cri-o.nix
./virtualisation/docker.nix ./virtualisation/docker.nix
./virtualisation/docker-containers.nix
./virtualisation/ecs-agent.nix ./virtualisation/ecs-agent.nix
./virtualisation/libvirtd.nix ./virtualisation/libvirtd.nix
./virtualisation/lxc.nix ./virtualisation/lxc.nix

View File

@ -75,7 +75,7 @@ in
}; };
link = mkOption { link = mkOption {
default = "http://planet.nixos.org"; default = "https://planet.nixos.org";
type = types.str; type = types.str;
description = '' description = ''
Link to the main page. Link to the main page.

View File

@ -87,19 +87,19 @@ let
default = {}; default = {};
example = literalExample '' example = literalExample ''
{ {
"example.org" = "/srv/http/nginx"; "example.org" = null;
"mydomain.org" = null; "mydomain.org" = null;
} }
''; '';
description = '' description = ''
A list of extra domain names, which are included in the one certificate to be issued, with their A list of extra domain names, which are included in the one certificate to be issued.
own server roots if needed. Setting a distinct server root is deprecated and not functional in 20.03+
''; '';
}; };
keyType = mkOption { keyType = mkOption {
type = types.str; type = types.str;
default = "ec384"; default = "ec256";
description = '' description = ''
Key type to use for private keys. Key type to use for private keys.
For an up to date list of supported values check the --key-type option For an up to date list of supported values check the --key-type option
@ -250,7 +250,7 @@ in
"example.com" = { "example.com" = {
webroot = "/var/www/challenges/"; webroot = "/var/www/challenges/";
email = "foo@example.com"; email = "foo@example.com";
extraDomains = { "www.example.com" = null; "foo.example.com" = "/var/www/foo/"; }; extraDomains = { "www.example.com" = null; "foo.example.com" = null; };
}; };
"bar.example.com" = { "bar.example.com" = {
webroot = "/var/www/challenges/"; webroot = "/var/www/challenges/";

View File

@ -6,65 +6,49 @@
<title>SSL/TLS Certificates with ACME</title> <title>SSL/TLS Certificates with ACME</title>
<para> <para>
NixOS supports automatic domain validation &amp; certificate retrieval and NixOS supports automatic domain validation &amp; certificate retrieval and
renewal using the ACME protocol. This is currently only implemented by and renewal using the ACME protocol. Any provider can be used, but by default
for Let's Encrypt. The alternative ACME client <literal>lego</literal> is NixOS uses Let's Encrypt. The alternative ACME client <literal>lego</literal>
used under the hood. is used under the hood.
</para>
<para>
Automatic cert validation and configuration for Apache and Nginx virtual
hosts is included in NixOS, however if you would like to generate a wildcard
cert or you are not using a web server you will have to configure DNS
based validation.
</para> </para>
<section xml:id="module-security-acme-prerequisites"> <section xml:id="module-security-acme-prerequisites">
<title>Prerequisites</title> <title>Prerequisites</title>
<para> <para>
You need to have a running HTTP server for verification. The server must To use the ACME module, you must accept the provider's terms of service
have a webroot defined that can serve by setting <literal><xref linkend="opt-security.acme.acceptTerms" /></literal>
to <literal>true</literal>. The Let's Encrypt ToS can be found
<link xlink:href="https://letsencrypt.org/repository/">here</link>.
</para>
<para>
You must also set an email address to be used when creating accounts with
Let's Encrypt. You can set this for all certs with
<literal><xref linkend="opt-security.acme.email" /></literal>
and/or on a per-cert basis with
<literal><xref linkend="opt-security.acme.certs._name_.email" /></literal>.
This address is only used for registration and renewal reminders,
and cannot be used to administer the certificates in any way.
</para>
<para>
Alternatively, you can use a different ACME server by changing the
<literal><xref linkend="opt-security.acme.server" /></literal> option
to a provider of your choosing, or just change the server for one cert with
<literal><xref linkend="opt-security.acme.certs._name_.server" /></literal>.
</para>
<para>
You will need an HTTP server or DNS server for verification. For HTTP,
the server must have a webroot defined that can serve
<filename>.well-known/acme-challenge</filename>. This directory must be <filename>.well-known/acme-challenge</filename>. This directory must be
writeable by the user that will run the ACME client. writeable by the user that will run the ACME client. For DNS, you must
</para> set up credentials with your provider/server for use with lego.
<para>
For instance, this generic snippet could be used for Nginx:
<programlisting>
http {
server {
server_name _;
listen 80;
listen [::]:80;
location /.well-known/acme-challenge {
root /var/www/challenges;
}
location / {
return 301 https://$host$request_uri;
}
}
}
</programlisting>
</para>
</section>
<section xml:id="module-security-acme-configuring">
<title>Configuring</title>
<para>
To enable ACME certificate retrieval &amp; renewal for a certificate for
<literal>foo.example.com</literal>, add the following in your
<filename>configuration.nix</filename>:
<programlisting>
<xref linkend="opt-security.acme.certs"/>."foo.example.com" = {
<link linkend="opt-security.acme.certs._name_.webroot">webroot</link> = "/var/www/challenges";
<link linkend="opt-security.acme.certs._name_.email">email</link> = "foo@example.com";
};
</programlisting>
</para>
<para>
The private key <filename>key.pem</filename> and certificate
<filename>fullchain.pem</filename> will be put into
<filename>/var/lib/acme/foo.example.com</filename>.
</para>
<para>
Refer to <xref linkend="ch-options" /> for all available configuration
options for the <link linkend="opt-security.acme.certs">security.acme</link>
module.
</para> </para>
</section> </section>
<section xml:id="module-security-acme-nginx"> <section xml:id="module-security-acme-nginx">
@ -80,12 +64,27 @@ http {
</para> </para>
<programlisting> <programlisting>
<xref linkend="opt-security.acme.acceptTerms" /> = true;
<xref linkend="opt-security.acme.email" /> = "admin+acme@example.com";
services.nginx = { services.nginx = {
<link linkend="opt-services.nginx.enable">enable = true;</link> <link linkend="opt-services.nginx.enable">enable</link> = true;
<link linkend="opt-services.nginx.virtualHosts">virtualHosts</link> = { <link linkend="opt-services.nginx.virtualHosts">virtualHosts</link> = {
"foo.example.com" = { "foo.example.com" = {
<link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true; <link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true;
<link linkend="opt-services.nginx.virtualHosts._name_.enableACME">enableACME</link> = true; <link linkend="opt-services.nginx.virtualHosts._name_.enableACME">enableACME</link> = true;
# All serverAliases will be added as <link linkend="opt-security.acme.certs._name_.extraDomains">extra domains</link> on the certificate.
<link linkend="opt-services.nginx.virtualHosts._name_.serverAliases">serverAliases</link> = [ "bar.example.com" ];
locations."/" = {
<link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.root">root</link> = "/var/www";
};
};
# We can also add a different vhost and reuse the same certificate
# but we have to append extraDomains manually.
<link linkend="opt-security.acme.certs._name_.extraDomains">security.acme.certs."foo.example.com".extraDomains."baz.example.com"</link> = null;
"baz.example.com" = {
<link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true;
<link linkend="opt-services.nginx.virtualHosts._name_.useACMEHost">useACMEHost</link> = "foo.example.com";
locations."/" = { locations."/" = {
<link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.root">root</link> = "/var/www"; <link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.root">root</link> = "/var/www";
}; };
@ -94,4 +93,162 @@ services.nginx = {
} }
</programlisting> </programlisting>
</section> </section>
<section xml:id="module-security-acme-httpd">
<title>Using ACME certificates in Apache/httpd</title>
<para>
Using ACME certificates with Apache virtual hosts is identical
to using them with Nginx. The attribute names are all the same, just replace
"nginx" with "httpd" where appropriate.
</para>
</section>
<section xml:id="module-security-acme-configuring">
<title>Manual configuration of HTTP-01 validation</title>
<para>
First off you will need to set up a virtual host to serve the challenges.
This example uses a vhost called <literal>certs.example.com</literal>, with
the intent that you will generate certs for all your vhosts and redirect
everyone to HTTPS.
</para>
<programlisting>
<xref linkend="opt-security.acme.acceptTerms" /> = true;
<xref linkend="opt-security.acme.email" /> = "admin+acme@example.com";
services.nginx = {
<link linkend="opt-services.nginx.enable">enable</link> = true;
<link linkend="opt-services.nginx.virtualHosts">virtualHosts</link> = {
"acmechallenge.example.com" = {
# Catchall vhost, will redirect users to HTTPS for all vhosts
<link linkend="opt-services.nginx.virtualHosts._name_.serverAliases">serverAliases</link> = [ "*.example.com" ];
# /var/lib/acme/.challenges must be writable by the ACME user
# and readable by the Nginx user.
# By default, this is the case.
locations."/.well-known/acme-challenge" = {
<link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.root">root</link> = "/var/lib/acme/.challenges";
};
locations."/" = {
<link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.return">return</link> = "301 https://$host$request_uri";
};
};
};
}
# Alternative config for Apache
services.httpd = {
<link linkend="opt-services.httpd.enable">enable = true;</link>
<link linkend="opt-services.httpd.virtualHosts">virtualHosts</link> = {
"acmechallenge.example.com" = {
# Catchall vhost, will redirect users to HTTPS for all vhosts
<link linkend="opt-services.httpd.virtualHosts._name_.serverAliases">serverAliases</link> = [ "*.example.com" ];
# /var/lib/acme/.challenges must be writable by the ACME user and readable by the Apache user.
# By default, this is the case.
<link linkend="opt-services.httpd.virtualHosts._name_.documentRoot">documentRoot</link> = "/var/lib/acme/.challenges";
<link linkend="opt-services.httpd.virtualHosts._name_.extraConfig">extraConfig</link> = ''
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
'';
};
};
}
</programlisting>
<para>
Now you need to configure ACME to generate a certificate.
</para>
<programlisting>
<xref linkend="opt-security.acme.certs"/>."foo.example.com" = {
<link linkend="opt-security.acme.certs._name_.webroot">webroot</link> = "/var/lib/acme/.challenges";
<link linkend="opt-security.acme.certs._name_.email">email</link> = "foo@example.com";
# Since we have a wildcard vhost to handle port 80,
# we can generate certs for anything!
# Just make sure your DNS resolves them.
<link linkend="opt-security.acme.certs._name_.extraDomains">extraDomains</link> = [ "mail.example.com" ];
};
</programlisting>
<para>
The private key <filename>key.pem</filename> and certificate
<filename>fullchain.pem</filename> will be put into
<filename>/var/lib/acme/foo.example.com</filename>.
</para>
<para>
Refer to <xref linkend="ch-options" /> for all available configuration
options for the <link linkend="opt-security.acme.certs">security.acme</link>
module.
</para>
</section>
<section xml:id="module-security-acme-config-dns">
<title>Configuring ACME for DNS validation</title>
<para>
This is useful if you want to generate a wildcard certificate, since
ACME servers will only hand out wildcard certs over DNS validation.
There a number of supported DNS providers and servers you can utilise,
see the <link xlink:href="https://go-acme.github.io/lego/dns/">lego docs</link>
for provider/server specific configuration values. For the sake of these
docs, we will provide a fully self-hosted example using bind.
</para>
<programlisting>
services.bind = {
<link linkend="opt-services.bind.enable">enable</link> = true;
<link linkend="opt-services.bind.extraConfig">extraConfig</link> = ''
include "/var/lib/secrets/dnskeys.conf";
'';
<link linkend="opt-services.bind.zones">zones</link> = [
rec {
name = "example.com";
file = "/var/db/bind/${name}";
master = true;
extraConfig = "allow-update { key rfc2136key.example.com.; };";
}
];
}
# Now we can configure ACME
<xref linkend="opt-security.acme.acceptTerms" /> = true;
<xref linkend="opt-security.acme.email" /> = "admin+acme@example.com";
<xref linkend="opt-security.acme.certs" />."example.com" = {
<link linkend="opt-security.acme.certs._name_.domain">domain</link> = "*.example.com";
<link linkend="opt-security.acme.certs._name_.dnsProvider">dnsProvider</link> = "rfc2136";
<link linkend="opt-security.acme.certs._name_.credentialsFile">credentialsFile</link> = "/var/lib/secrets/certs.secret";
# We don't need to wait for propagation since this is a local DNS server
<link linkend="opt-security.acme.certs._name_.dnsPropagationCheck">dnsPropagationCheck</link> = false;
};
</programlisting>
<para>
The <filename>dnskeys.conf</filename> and <filename>certs.secret</filename>
must be kept secure and thus you should not keep their contents in your
Nix config. Instead, generate them one time with these commands:
</para>
<programlisting>
mkdir -p /var/lib/secrets
tsig-keygen rfc2136key.example.com &gt; /var/lib/secrets/dnskeys.conf
chown named:root /var/lib/secrets/dnskeys.conf
chmod 400 /var/lib/secrets/dnskeys.conf
# Copy the secret value from the dnskeys.conf, and put it in
# RFC2136_TSIG_SECRET below
cat &gt; /var/lib/secrets/certs.secret &lt;&lt; EOF
RFC2136_NAMESERVER='127.0.0.1:53'
RFC2136_TSIG_ALGORITHM='hmac-sha256.'
RFC2136_TSIG_KEY='rfc2136key.example.com'
RFC2136_TSIG_SECRET='your secret key'
EOF
chmod 400 /var/lib/secrets/certs.secret
</programlisting>
<para>
Now you're all set to generate certs! You should monitor the first invokation
by running <literal>systemctl start acme-example.com.service &amp;
journalctl -fu acme-example.com.service</literal> and watching its log output.
</para>
</section>
</chapter> </chapter>

View File

@ -372,6 +372,41 @@ in
and <citerefentry><refentrytitle>zfs</refentrytitle><manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>zfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
for more info. for more info.
''; '';
features.sendRaw = mkEnableOption ''
sendRaw feature which adds the options <literal>-w</literal> to the
<command>zfs send</command> command. For encrypted source datasets this
instructs zfs not to decrypt before sending which results in a remote
backup that can't be read without the encryption key/passphrase, useful
when the remote isn't fully trusted or not physically secure. This
option must be used consistently, raw incrementals cannot be based on
non-raw snapshots and vice versa.
'';
features.skipIntermediates = mkEnableOption ''
Enable the skipIntermediates feature to send a single increment
between latest common snapshot and the newly made one. It may skip
several source snaps if the destination was offline for some time, and
it should skip snapshots not managed by znapzend. Normally for online
destinations, the new snapshot is sent as soon as it is created on the
source, so there are no automatic increments to skip.
'';
features.lowmemRecurse = mkEnableOption ''
use lowmemRecurse on systems where you have too many datasets, so a
recursive listing of attributes to find backup plans exhausts the
memory available to <command>znapzend</command>: instead, go the slower
way to first list all impacted dataset names, and then query their
configs one by one.
'';
features.zfsGetType = mkEnableOption ''
use zfsGetType if your <command>zfs get</command> supports a
<literal>-t</literal> argument for filtering by dataset type at all AND
lists properties for snapshots by default when recursing, so that there
is too much data to process while searching for backup plans.
If these two conditions apply to your system, the time needed for a
<literal>--recursive</literal> search for backup plans can literally
differ by hundreds of times (depending on the amount of snapshots in
that dataset tree... and a decent backup plan will ensure you have a lot
of those), so you would benefit from requesting this feature.
'';
}; };
}; };

View File

@ -294,7 +294,7 @@ https://nixos.org/nixpkgs/manual/#sec-modify-via-packageOverrides
If you are not on NixOS or want to install this particular Emacs only for If you are not on NixOS or want to install this particular Emacs only for
yourself, you can do so by adding it to your yourself, you can do so by adding it to your
<filename>~/.config/nixpkgs/config.nix</filename> (see <filename>~/.config/nixpkgs/config.nix</filename> (see
<link xlink:href="http://nixos.org/nixpkgs/manual/#sec-modify-via-packageOverrides">Nixpkgs <link xlink:href="https://nixos.org/nixpkgs/manual/#sec-modify-via-packageOverrides">Nixpkgs
manual</link>): manual</link>):
<example xml:id="module-services-emacs-config-nix"> <example xml:id="module-services-emacs-config-nix">
<title>Custom Emacs in <filename>~/.config/nixpkgs/config.nix</filename></title> <title>Custom Emacs in <filename>~/.config/nixpkgs/config.nix</filename></title>

View File

@ -14,53 +14,9 @@ let
RUN_USER = ${cfg.user} RUN_USER = ${cfg.user}
RUN_MODE = prod RUN_MODE = prod
[database] ${generators.toINI {} cfg.settings}
DB_TYPE = ${cfg.database.type}
${optionalString (usePostgresql || useMysql) ''
HOST = ${if cfg.database.socket != null then cfg.database.socket else cfg.database.host + ":" + toString cfg.database.port}
NAME = ${cfg.database.name}
USER = ${cfg.database.user}
PASSWD = #dbpass#
''}
${optionalString useSqlite ''
PATH = ${cfg.database.path}
''}
${optionalString usePostgresql ''
SSL_MODE = disable
''}
[repository] ${optionalString (cfg.extraConfig != null) cfg.extraConfig}
ROOT = ${cfg.repositoryRoot}
[server]
DOMAIN = ${cfg.domain}
HTTP_ADDR = ${cfg.httpAddress}
HTTP_PORT = ${toString cfg.httpPort}
ROOT_URL = ${cfg.rootUrl}
STATIC_ROOT_PATH = ${cfg.staticRootPath}
LFS_JWT_SECRET = #jwtsecret#
[session]
COOKIE_NAME = session
COOKIE_SECURE = ${boolToString cfg.cookieSecure}
[security]
SECRET_KEY = #secretkey#
INSTALL_LOCK = true
[log]
ROOT_PATH = ${cfg.log.rootPath}
LEVEL = ${cfg.log.level}
[service]
DISABLE_REGISTRATION = ${boolToString cfg.disableRegistration}
${optionalString (cfg.mailerPasswordFile != null) ''
[mailer]
PASSWD = #mailerpass#
''}
${cfg.extraConfig}
''; '';
in in
@ -279,9 +235,36 @@ in
''; '';
}; };
settings = mkOption {
type = with types; attrsOf (attrsOf (oneOf [ bool int str ]));
default = {};
description = ''
Gitea configuration. Refer to <link xlink:href="https://docs.gitea.io/en-us/config-cheat-sheet/"/>
for details on supported values.
'';
example = literalExample ''
{
"cron.sync_external_users" = {
RUN_AT_START = true;
SCHEDULE = "@every 24h";
UPDATE_EXISTING = true;
};
mailer = {
ENABLED = true;
MAILER_TYPE = "sendmail";
FROM = "do-not-reply@example.org";
SENDMAIL_PATH = "${pkgs.system-sendmail}/bin/sendmail";
};
other = {
SHOW_FOOTER_VERSION = false;
};
}
'';
};
extraConfig = mkOption { extraConfig = mkOption {
type = types.str; type = with types; nullOr str;
default = ""; default = null;
description = "Configuration lines appended to the generated gitea configuration file."; description = "Configuration lines appended to the generated gitea configuration file.";
}; };
}; };
@ -294,6 +277,62 @@ in
} }
]; ];
services.gitea.settings = {
database = mkMerge [
{
DB_TYPE = cfg.database.type;
}
(mkIf (useMysql || usePostgresql) {
HOST = if cfg.database.socket != null then cfg.database.socket else cfg.database.host + ":" + toString cfg.database.port;
NAME = cfg.database.name;
USER = cfg.database.user;
PASSWD = "#dbpass#";
})
(mkIf useSqlite {
PATH = cfg.database.path;
})
(mkIf usePostgresql {
SSL_MODE = "disable";
})
];
repository = {
ROOT = cfg.repositoryRoot;
};
server = {
DOMAIN = cfg.domain;
HTTP_ADDR = cfg.httpAddress;
HTTP_PORT = cfg.httpPort;
ROOT_URL = cfg.rootUrl;
STATIC_ROOT_PATH = cfg.staticRootPath;
LFS_JWT_SECRET = "#jwtsecret#";
};
session = {
COOKIE_NAME = "session";
COOKIE_SECURE = cfg.cookieSecure;
};
security = {
SECRET_KEY = "#secretkey#";
INSTALL_LOCK = true;
};
log = {
ROOT_PATH = cfg.log.rootPath;
LEVEL = cfg.log.level;
};
service = {
DISABLE_REGISTRATION = cfg.disableRegistration;
};
mailer = mkIf (cfg.mailerPasswordFile != null) {
PASSWD = "#mailerpass#";
};
};
services.postgresql = optionalAttrs (usePostgresql && cfg.database.createDatabase) { services.postgresql = optionalAttrs (usePostgresql && cfg.database.createDatabase) {
enable = mkDefault true; enable = mkDefault true;
@ -435,9 +474,12 @@ in
users.groups.gitea = {}; users.groups.gitea = {};
warnings = optional (cfg.database.password != "") warnings =
''config.services.gitea.database.password will be stored as plaintext optional (cfg.database.password != "") ''
in the Nix store. Use database.passwordFile instead.''; config.services.gitea.database.password will be stored as plaintext in the Nix store. Use database.passwordFile instead.'' ++
optional (cfg.extraConfig != null) ''
services.gitea.`extraConfig` is deprecated, please use services.gitea.`settings`.
'';
# Create database passwordFile default when password is configured. # Create database passwordFile default when password is configured.
services.gitea.database.passwordFile = services.gitea.database.passwordFile =

View File

@ -283,7 +283,7 @@ in
trustedBinaryCaches = mkOption { trustedBinaryCaches = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ]; default = [ ];
example = [ "http://hydra.nixos.org/" ]; example = [ "https://hydra.nixos.org/" ];
description = '' description = ''
List of binary cache URLs that non-root users can use (in List of binary cache URLs that non-root users can use (in
addition to those specified using addition to those specified using

View File

@ -17,9 +17,9 @@ let
cfgUpdate = pkgs.writeText "octoprint-config.yaml" (builtins.toJSON fullConfig); cfgUpdate = pkgs.writeText "octoprint-config.yaml" (builtins.toJSON fullConfig);
pluginsEnv = pkgs.python.buildEnv.override { pluginsEnv = package.python.withPackages (ps: [ps.octoprint] ++ (cfg.plugins ps));
extraLibs = cfg.plugins pkgs.octoprint-plugins;
}; package = pkgs.octoprint;
in in
{ {
@ -106,7 +106,6 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
path = [ pluginsEnv ]; path = [ pluginsEnv ];
environment.PYTHONPATH = makeSearchPathOutput "lib" pkgs.python.sitePackages [ pluginsEnv ];
preStart = '' preStart = ''
if [ -e "${cfg.stateDir}/config.yaml" ]; then if [ -e "${cfg.stateDir}/config.yaml" ]; then
@ -119,7 +118,7 @@ in
''; '';
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.octoprint}/bin/octoprint serve -b ${cfg.stateDir}"; ExecStart = "${pluginsEnv}/bin/octoprint serve -b ${cfg.stateDir}";
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
}; };

View File

@ -382,6 +382,11 @@ let
default = "en"; default = "en";
description = "Default room language."; description = "Default room language.";
}; };
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Additional MUC specific configuration";
};
}; };
}; };
@ -792,6 +797,8 @@ in
https_ports = ${toLua cfg.httpsPorts} https_ports = ${toLua cfg.httpsPorts}
${ cfg.extraConfig }
${lib.concatMapStrings (muc: '' ${lib.concatMapStrings (muc: ''
Component ${toLua muc.domain} "muc" Component ${toLua muc.domain} "muc"
modules_enabled = { "muc_mam"; ${optionalString muc.vcard_muc ''"vcard_muc";'' } } modules_enabled = { "muc_mam"; ${optionalString muc.vcard_muc ''"vcard_muc";'' } }
@ -809,8 +816,8 @@ in
muc_room_default_change_subject = ${toLua muc.roomDefaultChangeSubject} muc_room_default_change_subject = ${toLua muc.roomDefaultChangeSubject}
muc_room_default_history_length = ${toLua muc.roomDefaultHistoryLength} muc_room_default_history_length = ${toLua muc.roomDefaultHistoryLength}
muc_room_default_language = ${toLua muc.roomDefaultLanguage} muc_room_default_language = ${toLua muc.roomDefaultLanguage}
${ muc.extraConfig }
'') cfg.muc} '') cfg.muc}
${ lib.optionalString (cfg.uploadHttp != null) '' ${ lib.optionalString (cfg.uploadHttp != null) ''
Component ${toLua cfg.uploadHttp.domain} "http_upload" Component ${toLua cfg.uploadHttp.domain} "http_upload"
@ -820,8 +827,6 @@ in
http_upload_path = ${toLua cfg.uploadHttp.httpUploadPath} http_upload_path = ${toLua cfg.uploadHttp.httpUploadPath}
''} ''}
${ cfg.extraConfig }
${ lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: '' ${ lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: ''
VirtualHost "${v.domain}" VirtualHost "${v.domain}"
enabled = ${boolToString v.enabled}; enabled = ${boolToString v.enabled};

View File

@ -142,7 +142,7 @@ in {
description = '' description = ''
Extra packages available at runtime to enable Deluge's plugins. For example, Extra packages available at runtime to enable Deluge's plugins. For example,
extraction utilities are required for the built-in "Extractor" plugin. extraction utilities are required for the built-in "Extractor" plugin.
This always contains unzip, gnutar, xz, p7zip and bzip2. This always contains unzip, gnutar, xz and bzip2.
''; '';
}; };
@ -187,7 +187,7 @@ in {
); );
# Provide a default set of `extraPackages`. # Provide a default set of `extraPackages`.
services.deluge.extraPackages = with pkgs; [ unzip gnutar xz p7zip bzip2 ]; services.deluge.extraPackages = with pkgs; [ unzip gnutar xz bzip2 ];
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d '${cfg.dataDir}' 0770 ${cfg.user} ${cfg.group}" "d '${cfg.dataDir}' 0770 ${cfg.user} ${cfg.group}"

View File

@ -83,6 +83,12 @@ in
Authorized keys for the root user on initrd. Authorized keys for the root user on initrd.
''; '';
}; };
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Verbatim contents of <filename>sshd_config</filename>.";
};
}; };
imports = imports =
@ -126,6 +132,8 @@ in
'' else '' '' else ''
UseDNS no UseDNS no
''} ''}
${cfg.extraConfig}
''; '';
in mkIf (config.boot.initrd.network.enable && cfg.enable) { in mkIf (config.boot.initrd.network.enable && cfg.enable) {
assertions = [ assertions = [

View File

@ -4,6 +4,11 @@ with lib;
let let
cfg = config.virtualisation.cri-o; cfg = config.virtualisation.cri-o;
# Copy configuration files to avoid having the entire sources in the system closure
copyFile = filePath: pkgs.runCommandNoCC (builtins.unsafeDiscardStringContext (builtins.baseNameOf filePath)) {} ''
cp ${filePath} $out
'';
in in
{ {
imports = [ imports = [
@ -45,9 +50,9 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = with pkgs; environment.systemPackages = with pkgs;
[ cri-o cri-tools conmon iptables runc utillinux ]; [ cri-o cri-tools conmon iptables runc utillinux ];
environment.etc."crictl.yaml".text = ''
runtime-endpoint: unix:///var/run/crio/crio.sock environment.etc."crictl.yaml".source = copyFile "${pkgs.cri-o.src}/crictl.yaml";
'';
environment.etc."crio/crio.conf".text = '' environment.etc."crio/crio.conf".text = ''
[crio] [crio]
storage_driver = "${cfg.storageDriver}" storage_driver = "${cfg.storageDriver}"
@ -66,23 +71,7 @@ in
manage_network_ns_lifecycle = true manage_network_ns_lifecycle = true
''; '';
environment.etc."cni/net.d/20-cri-o-bridge.conf".text = '' environment.etc."cni/net.d/10-crio-bridge.conf".source = copyFile "${pkgs.cri-o.src}/contrib/cni/10-crio-bridge.conf";
{
"cniVersion": "0.3.1",
"name": "crio-bridge",
"type": "bridge",
"bridge": "cni0",
"isGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local",
"subnet": "10.88.0.0/16",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
}
'';
# Enable common /etc/containers configuration # Enable common /etc/containers configuration
virtualisation.containers.enable = true; virtualisation.containers.enable = true;

View File

@ -1,17 +1,20 @@
{ config, lib, pkgs, ... }: { config, options, lib, pkgs, ... }:
with lib; with lib;
let let
cfg = config.docker-containers; cfg = config.virtualisation.oci-containers;
proxy_env = config.networking.proxy.envVars;
dockerContainer = defaultBackend = options.virtualisation.oci-containers.backend.default;
containerOptions =
{ ... }: { { ... }: {
options = { options = {
image = mkOption { image = mkOption {
type = with types; str; type = with types; str;
description = "Docker image to run."; description = "OCI image to run.";
example = "library/hello-world"; example = "library/hello-world";
}; };
@ -58,18 +61,19 @@ let
log-driver = mkOption { log-driver = mkOption {
type = types.str; type = types.str;
default = "none"; default = "journald";
description = '' description = ''
Logging driver for the container. The default of Logging driver for the container. The default of
<literal>"none"</literal> means that the container's logs will be <literal>"journald"</literal> means that the container's logs will be
handled as part of the systemd unit. Setting this to handled as part of the systemd unit.
<literal>"journald"</literal> will result in duplicate logging, but
the container's logs will be visible to the <command>docker
logs</command> command.
For more details and a full list of logging drivers, refer to the For more details and a full list of logging drivers, refer to respective backends documentation.
<link xlink:href="https://docs.docker.com/engine/reference/run/#logging-drivers---log-driver">
Docker engine documentation</link> For Docker:
<link xlink:href="https://docs.docker.com/engine/reference/run/#logging-drivers---log-driver">Docker engine documentation</link>
For Podman:
Refer to the docker-run(1) man page.
''; '';
}; };
@ -172,10 +176,10 @@ let
description = '' description = ''
Define which other containers this one depends on. They will be added to both After and Requires for the unit. Define which other containers this one depends on. They will be added to both After and Requires for the unit.
Use the same name as the attribute under <literal>services.docker-containers</literal>. Use the same name as the attribute under <literal>virtualisation.oci-containers</literal>.
''; '';
example = literalExample '' example = literalExample ''
services.docker-containers = { virtualisation.oci-containers = {
node1 = {}; node1 = {};
node2 = { node2 = {
dependsOn = [ "node1" ]; dependsOn = [ "node1" ];
@ -184,10 +188,10 @@ let
''; '';
}; };
extraDockerOptions = mkOption { extraOptions = mkOption {
type = with types; listOf str; type = with types; listOf str;
default = []; default = [];
description = "Extra options for <command>docker run</command>."; description = "Extra options for <command>${defaultBackend} run</command>.";
example = literalExample '' example = literalExample ''
["--network=host"] ["--network=host"]
''; '';
@ -205,24 +209,31 @@ let
}; };
mkService = name: container: let mkService = name: container: let
mkAfter = map (x: "docker-${x}.service") container.dependsOn; dependsOn = map (x: "${cfg.backend}-${x}.service") container.dependsOn;
in rec { in {
wantedBy = [] ++ optional (container.autoStart) "multi-user.target"; wantedBy = [] ++ optional (container.autoStart) "multi-user.target";
after = [ "docker.service" "docker.socket" ] ++ mkAfter; after = lib.optionals (cfg.backend == "docker") [ "docker.service" "docker.socket" ] ++ dependsOn;
requires = after; requires = dependsOn;
path = [ pkgs.docker ]; environment = proxy_env;
path =
if cfg.backend == "docker" then [ pkgs.docker ]
else if cfg.backend == "podman" then [ config.virtualisation.podman.package ]
else throw "Unhandled backend: ${cfg.backend}";
preStart = '' preStart = ''
docker rm -f ${name} || true ${cfg.backend} rm -f ${name} || true
${optionalString (container.imageFile != null) '' ${optionalString (container.imageFile != null) ''
docker load -i ${container.imageFile} ${cfg.backend} load -i ${container.imageFile}
''} ''}
''; '';
postStop = "docker rm -f ${name} || true"; postStop = "${cfg.backend} rm -f ${name} || true";
serviceConfig = { serviceConfig = {
StandardOutput = "null";
StandardError = "null";
ExecStart = concatStringsSep " \\\n " ([ ExecStart = concatStringsSep " \\\n " ([
"${pkgs.docker}/bin/docker run" "${config.system.path}/bin/${cfg.backend} run"
"--rm" "--rm"
"--name=${name}" "--name=${name}"
"--log-driver=${container.log-driver}" "--log-driver=${container.log-driver}"
@ -233,12 +244,12 @@ let
++ optional (container.user != null) "-u ${escapeShellArg container.user}" ++ optional (container.user != null) "-u ${escapeShellArg container.user}"
++ map (v: "-v ${escapeShellArg v}") container.volumes ++ map (v: "-v ${escapeShellArg v}") container.volumes
++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}" ++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}"
++ map escapeShellArg container.extraDockerOptions ++ map escapeShellArg container.extraOptions
++ [container.image] ++ [container.image]
++ map escapeShellArg container.cmd ++ map escapeShellArg container.cmd
); );
ExecStop = ''${pkgs.bash}/bin/sh -c "[ $SERVICE_RESULT = success ] || docker stop ${name}"''; ExecStop = ''${pkgs.bash}/bin/sh -c "[ $SERVICE_RESULT = success ] || ${cfg.backend} stop ${name}"'';
### There is no generalized way of supporting `reload` for docker ### There is no generalized way of supporting `reload` for docker
### containers. Some containers may respond well to SIGHUP sent to their ### containers. Some containers may respond well to SIGHUP sent to their
@ -263,19 +274,50 @@ let
}; };
in { in {
imports = [
(
lib.mkChangedOptionModule
[ "docker-containers" ]
[ "virtualisation" "oci-containers" ]
(oldcfg: {
backend = "docker";
containers = lib.mapAttrs (n: v: builtins.removeAttrs (v // {
extraOptions = v.extraDockerOptions or [];
}) [ "extraDockerOptions" ]) oldcfg.docker-containers;
})
)
];
options.docker-containers = mkOption { options.virtualisation.oci-containers = {
default = {};
type = types.attrsOf (types.submodule dockerContainer);
description = "Docker containers to run as systemd services.";
};
config = mkIf (cfg != {}) { backend = mkOption {
type = types.enum [ "podman" "docker" ];
default =
# TODO: Once https://github.com/NixOS/nixpkgs/issues/77925 is resolved default to podman
# if versionAtLeast config.system.stateVersion "20.09" then "podman"
# else "docker";
"docker";
description = "The underlying Docker implementation to use.";
};
systemd.services = mapAttrs' (n: v: nameValuePair "docker-${n}" (mkService n v)) cfg; containers = mkOption {
default = {};
virtualisation.docker.enable = true; type = types.attrsOf (types.submodule containerOptions);
description = "OCI (Docker) containers to run as systemd services.";
};
}; };
config = lib.mkIf (cfg.containers != {}) (lib.mkMerge [
{
systemd.services = mapAttrs' (n: v: nameValuePair "${cfg.backend}-${n}" (mkService n v)) cfg.containers;
}
(lib.mkIf (cfg.backend == "podman") {
virtualisation.podman.enable = true;
})
(lib.mkIf (cfg.backend == "docker") {
virtualisation.docker.enable = true;
})
]);
} }

View File

@ -86,11 +86,21 @@ in
}; };
}; };
package = lib.mkOption {
type = types.package;
default = podmanPackage;
internal = true;
description = ''
The final Podman package (including extra packages).
'';
};
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = [ podmanPackage ] environment.systemPackages = [ cfg.package ]
++ lib.optional cfg.dockerCompat dockerCompat; ++ lib.optional cfg.dockerCompat dockerCompat;
environment.etc."containers/libpod.conf".text = '' environment.etc."containers/libpod.conf".text = ''

View File

@ -70,7 +70,7 @@ in
dhparams = handleTest ./dhparams.nix {}; dhparams = handleTest ./dhparams.nix {};
dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {}; dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {};
docker = handleTestOn ["x86_64-linux"] ./docker.nix {}; docker = handleTestOn ["x86_64-linux"] ./docker.nix {};
docker-containers = handleTestOn ["x86_64-linux"] ./docker-containers.nix {}; oci-containers = handleTestOn ["x86_64-linux"] ./oci-containers.nix {};
docker-edge = handleTestOn ["x86_64-linux"] ./docker-edge.nix {}; docker-edge = handleTestOn ["x86_64-linux"] ./docker-edge.nix {};
docker-preloader = handleTestOn ["x86_64-linux"] ./docker-preloader.nix {}; docker-preloader = handleTestOn ["x86_64-linux"] ./docker-preloader.nix {};
docker-registry = handleTest ./docker-registry.nix {}; docker-registry = handleTest ./docker-registry.nix {};

View File

@ -37,7 +37,7 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
</head> </head>
<body onload="javascript:document.title='startup done'"> <body onload="javascript:document.title='startup done'">
<img src="file://${pkgs.fetchurl { <img src="file://${pkgs.fetchurl {
url = "http://nixos.org/logo/nixos-hex.svg"; url = "https://nixos.org/logo/nixos-hex.svg";
sha256 = "07ymq6nw8kc22m7kzxjxldhiq8gzmc7f45kq2bvhbdm0w5s112s4"; sha256 = "07ymq6nw8kc22m7kzxjxldhiq8gzmc7f45kq2bvhbdm0w5s112s4";
}}" /> }}" />
</body> </body>

View File

@ -1,27 +0,0 @@
# Test Docker containers as systemd units
import ./make-test-python.nix ({ pkgs, lib, ... }: {
name = "docker-containers";
meta = {
maintainers = with lib.maintainers; [ benley mkaito ];
};
nodes = {
docker = { pkgs, ... }: {
virtualisation.docker.enable = true;
docker-containers.nginx = {
image = "nginx-container";
imageFile = pkgs.dockerTools.examples.nginx;
ports = ["8181:80"];
};
};
};
testScript = ''
start_all()
docker.wait_for_unit("docker-nginx.service")
docker.wait_for_open_port(8181)
docker.wait_until_succeeds("curl http://localhost:8181 | grep Hello")
'';
})

View File

@ -108,7 +108,7 @@ in {
inherit image; inherit image;
sshPublicKey = snakeOilPublicKey; sshPublicKey = snakeOilPublicKey;
# ### http://nixos.org/channels/nixos-unstable nixos # ### https://nixos.org/channels/nixos-unstable nixos
userData = '' userData = ''
{ pkgs, ... }: { pkgs, ... }:

View File

@ -44,7 +44,7 @@ in {
# Create a test bucket on the server # Create a test bucket on the server
machine.succeed( machine.succeed(
"mc config host add minio http://localhost:9000 ${accessKey} ${secretKey} S3v4" "mc config host add minio http://localhost:9000 ${accessKey} ${secretKey} --api s3v4"
) )
machine.succeed("mc mb minio/test-bucket") machine.succeed("mc mb minio/test-bucket")
machine.succeed("${minioPythonScript}") machine.succeed("${minioPythonScript}")

View File

@ -0,0 +1,43 @@
{ system ? builtins.currentSystem
, config ? {}
, pkgs ? import ../.. { inherit system config; }
, lib ? pkgs.lib
}:
let
inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
mkOCITest = backend: makeTest {
name = "oci-containers-${backend}";
meta = {
maintainers = with lib.maintainers; [ adisbladis benley mkaito ];
};
nodes = {
${backend} = { pkgs, ... }: {
virtualisation.oci-containers = {
inherit backend;
containers.nginx = {
image = "nginx-container";
imageFile = pkgs.dockerTools.examples.nginx;
ports = ["8181:80"];
};
};
};
};
testScript = ''
start_all()
${backend}.wait_for_unit("${backend}-nginx.service")
${backend}.wait_for_open_port(8181)
${backend}.wait_until_succeeds("curl http://localhost:8181 | grep Hello")
'';
};
in
lib.foldl' (attrs: backend: attrs // { ${backend} = mkOCITest backend; }) {} [
"docker"
"podman"
]

View File

@ -3,7 +3,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
let let
stick = pkgs.fetchurl { stick = pkgs.fetchurl {
url = "http://nixos.org/~eelco/nix/udisks-test.img.xz"; url = "https://nixos.org/~eelco/nix/udisks-test.img.xz";
sha256 = "0was1xgjkjad91nipzclaz5biv3m4b2nk029ga6nk7iklwi19l8b"; sha256 = "0was1xgjkjad91nipzclaz5biv3m4b2nk029ga6nk7iklwi19l8b";
}; };

View File

@ -6,6 +6,11 @@ import ../make-test-python.nix {
environment.systemPackages = [ environment.systemPackages = [
(pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; }) (pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; })
]; ];
networking.extraHosts = ''
${nodes.server.config.networking.primaryIPAddress} example.com
${nodes.server.config.networking.primaryIPAddress} conference.example.com
${nodes.server.config.networking.primaryIPAddress} uploads.example.com
'';
}; };
server = { config, pkgs, ... }: { server = { config, pkgs, ... }: {
nixpkgs.overlays = [ nixpkgs.overlays = [
@ -18,6 +23,8 @@ import ../make-test-python.nix {
]; ];
networking.extraHosts = '' networking.extraHosts = ''
${config.networking.primaryIPAddress} example.com ${config.networking.primaryIPAddress} example.com
${config.networking.primaryIPAddress} conference.example.com
${config.networking.primaryIPAddress} uploads.example.com
''; '';
networking.firewall.enable = false; networking.firewall.enable = false;
services.prosody = { services.prosody = {
@ -39,6 +46,14 @@ import ../make-test-python.nix {
domain = "example.com"; domain = "example.com";
enabled = true; enabled = true;
}; };
muc = [
{
domain = "conference.example.com";
}
];
uploadHttp = {
domain = "uploads.example.com";
};
}; };
}; };
mysql = { config, pkgs, ... }: { mysql = { config, pkgs, ... }: {

View File

@ -3,12 +3,12 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.4.0.0"; version = "1.4.0.1";
pname = "chuck"; pname = "chuck";
src = fetchurl { src = fetchurl {
url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz"; url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz";
sha256 = "1b17rsf7bv45gfhyhfmpz9d4rkxn24c0m2hgmpfjz3nlp0rf7bic"; sha256 = "1m0fhndbqaf0lii1asyc50c66bv55ib6mbnm8fzk5qc5ncs0r8hi";
}; };
nativeBuildInputs = [ flex bison which ]; nativeBuildInputs = [ flex bison which ];

View File

@ -7,13 +7,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ft2-clone"; pname = "ft2-clone";
version = "1.15"; version = "1.23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "8bitbubsy"; owner = "8bitbubsy";
repo = "ft2-clone"; repo = "ft2-clone";
rev = "v${version}"; rev = "v${version}";
sha256 = "19xgdaij71gpvq216zjlp60zmfdl2a8kf8sc3bpk8a4d4xh4n151"; sha256 = "03prdifc2nz7smmzdy19flp33m927vb7j5bhdc46gak753pikw7d";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -5,14 +5,14 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "gpodder"; pname = "gpodder";
version = "3.10.13"; version = "3.10.15";
format = "other"; format = "other";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "1h542syaxsx1hslfzlk3fx1nbp190zjw35kigw7a1kx1jwvfwapg"; sha256 = "0ghbanj142n0hgydzfjmnkdgri2kswsjal3mn10c723kih4ir4yr";
}; };
patches = [ patches = [

View File

@ -0,0 +1,31 @@
{ stdenv, fetchFromGitHub, ncurses, portmidi }:
stdenv.mkDerivation {
pname = "orca-c";
version = "git-2020-05-01";
src = fetchFromGitHub {
owner = "hundredrabbits";
repo = "Orca-c";
rev = "d7a3b169c5ed0b06a9ad0fdb3057704da9a0b6ce";
sha256 = "101y617a295hzwr98ykvza1sycxlk29kzxn2ybjwc718r0alkbzz";
};
buildInputs = [ ncurses portmidi ];
patchPhase = ''
patchShebangs tool
'';
installPhase = ''
mkdir -p $out/bin
install build/orca $out/bin/orca
'';
meta = with stdenv.lib; {
description = "An esoteric programming language designed to quickly create procedural sequencers.";
homepage = "https://github.com/hundredrabbits/Orca-c";
license = licenses.mit;
platforms = platforms.all;
};
}

View File

@ -7,13 +7,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pt2-clone"; pname = "pt2-clone";
version = "1.07"; version = "1.12";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "8bitbubsy"; owner = "8bitbubsy";
repo = "pt2-clone"; repo = "pt2-clone";
rev = "v${version}"; rev = "v${version}";
sha256 = "0g2bp9n05ng2fvqw86pb941zamcqnfz1l066wvh5j3av1w22khi8"; sha256 = "1y7kv889rm3nvaigcda4bglvwm799f3gp0zrivkvrg1lrlygs89f";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "rofi-mpd"; pname = "rofi-mpd";
version = "2.2.0"; version = "2.2.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "JakeStanger"; owner = "JakeStanger";
repo = "Rofi_MPD"; repo = "Rofi_MPD";
rev = "v${version}"; rev = "v${version}";
sha256 = "1b0y8706mmrxhiyz8g6znisllc35j8g7sz8gfjll9svysjmvb6lc"; sha256 = "0jabyn6gqh8ychn2a06xws3avz0lqdnx3qvqkavfd2xr6sp2q7lg";
}; };
propagatedBuildInputs = with python3Packages; [ mutagen mpd2 toml appdirs ]; propagatedBuildInputs = with python3Packages; [ mutagen mpd2 toml appdirs ];

View File

@ -1,30 +1,29 @@
{ stdenv, fetchurl, alsaLib, python, SDL }: { stdenv, fetchFromGitHub
, autoreconfHook
, alsaLib, python, SDL }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20120105";
pname = "schismtracker"; pname = "schismtracker";
version = "20190805";
src = fetchurl { src = fetchFromGitHub {
url = "http://schismtracker.org/dl/${pname}-${version}.tar.bz2"; owner = pname;
sha256 = "1ny7wv2wxm1av299wvpskall6438wjjpadphmqc7c0h6d0zg5kii"; repo = pname;
rev = version;
sha256 = "0qqps20vvn3rgpg8174bjrrm38gqcci2z5z4c1r1vhbccclahgsd";
}; };
preConfigure = ''
# Build fails on Linux with windres.
export ac_cv_prog_ac_ct_WINDRES=
'';
configureFlags = [ "--enable-dependency-tracking" ]; configureFlags = [ "--enable-dependency-tracking" ];
buildInputs = [ alsaLib python SDL ]; nativeBuildInputs = [ autoreconfHook python ];
enableParallelBuilding = true; buildInputs = [ alsaLib SDL ];
meta = { meta = with stdenv.lib; {
description = "Music tracker application, free reimplementation of Impulse Tracker"; description = "Music tracker application, free reimplementation of Impulse Tracker";
homepage = "http://schismtracker.org/"; homepage = "http://schismtracker.org/";
license = stdenv.lib.licenses.gpl2; license = licenses.gpl2;
platforms = [ "x86_64-linux" "i686-linux" ]; platforms = [ "x86_64-linux" "i686-linux" ];
maintainers = [ stdenv.lib.maintainers.ftrvxmtrx ]; maintainers = with maintainers; [ ftrvxmtrx ];
}; };
} }

View File

@ -2,20 +2,20 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "spotify-tui"; pname = "spotify-tui";
version = "0.18.0"; version = "0.19.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Rigellute"; owner = "Rigellute";
repo = "spotify-tui"; repo = "spotify-tui";
rev = "v${version}"; rev = "v${version}";
sha256 = "15icg332iyacdn4ydr4nivblayg4xkcnjh4f0sjnhj4q173v8fq2"; sha256 = "1bdcfkfbvvn262p4j0nb4kvjzzgrvn3kxlif48yipqkkykzsgz6g";
}; };
cargoSha256 = "0rw8pj74k88rvcr18837g356lwsn2vdq384yma9df462xd2cw823"; cargoSha256 = "13v2ilmfs9468kavlx6wrsp0dscppxbxgygwpdd35p5hq3vnhl7k";
nativeBuildInputs = [ pkgconfig ] ++ stdenv.lib.optionals stdenv.isLinux [ python3 ]; nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ pkgconfig python3 ];
buildInputs = [ openssl ] buildInputs = [ ]
++ stdenv.lib.optional stdenv.isLinux libxcb ++ stdenv.lib.optionals stdenv.isLinux [ openssl libxcb ]
++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Security ]; ++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Security ];
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -35,13 +35,13 @@
mkDerivation rec { mkDerivation rec {
pname = "strawberry"; pname = "strawberry";
version = "0.6.9"; version = "0.6.10";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jonaski"; owner = "jonaski";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0ssyqa14j54sja2dzhzrznbf1bbl0nc62p4jh2pd6fhinpw8y6dk"; sha256 = "0qf510hlxbndqzwq62mdzfclqxr3caf1a34kd770k84x8vrb4pld";
}; };
buildInputs = [ buildInputs = [

View File

@ -7,13 +7,13 @@ with stdenv.lib;
mkDerivation rec { mkDerivation rec {
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version; name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
version = "0.21.3"; version = "0.21.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bitcoin-ABC"; owner = "bitcoin-ABC";
repo = "bitcoin-abc"; repo = "bitcoin-abc";
rev = "v${version}"; rev = "v${version}";
sha256 = "1pzdgghbsss2qjfgl42lvkbs5yc5q6jnzqnp24lljmrh341g2zn4"; sha256 = "1jx33n8dhn16iaxvmc56cxw0i5qk0ga5nf7qf9frwwq6zkglknga";
}; };
patches = [ ./fix-bitcoin-qt-build.patch ]; patches = [ ./fix-bitcoin-qt-build.patch ];

View File

@ -4,11 +4,11 @@
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "clightning"; pname = "clightning";
version = "0.8.1"; version = "0.8.2";
src = fetchurl { src = fetchurl {
url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip"; url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
sha256 = "079d3yx7yr7qrilqgaayvn18lxl8h6a1gwwbsgm5xsyxj4vdlz7r"; sha256 = "1w5l3r3pnhnwz3x7mjgd69cw9a18fpyjwj7kmfka7cf9hdgcwp9x";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "lnd"; pname = "lnd";
version = "0.9.2-beta"; version = "0.10.0-beta";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lightningnetwork"; owner = "lightningnetwork";
repo = "lnd"; repo = "lnd";
rev = "v${version}"; rev = "v${version}";
sha256 = "0gm33z89fiqv231ks2mkpsblskcsijipq8fcmip6m6jy8g06b1gb"; sha256 = "1amciz924s2h6qhy7w34jpv1jc25p5ayfxzvjph6hhx0bccrm88w";
}; };
modSha256 = "1khxplvyaqgaddrx1nna1fw0nb1xz9bmqpxpfifif4f5nmx90gbr"; modSha256 = "15i4h3pkvyav9qsbfinzifram0knkylg24j6j0mxs4bnj80j4ycm";
subPackages = ["cmd/lncli" "cmd/lnd"]; subPackages = ["cmd/lncli" "cmd/lnd"];

View File

@ -3,11 +3,11 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "bluefish-2.2.10"; name = "bluefish-2.2.11";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/bluefish/${name}.tar.bz2"; url = "mirror://sourceforge/bluefish/${name}.tar.bz2";
sha256 = "1ciygj79q6i3ga5x1j8aivc05nh6rhhnm7hrq8q8xd9vd4ms3v5g"; sha256 = "1zy2ppdg3nq9iy3zgfhnw93bq5zbbhyampf7bk3grpfvq5zqfk25";
}; };
nativeBuildInputs = [ intltool pkgconfig wrapGAppsHook ]; nativeBuildInputs = [ intltool pkgconfig wrapGAppsHook ];

View File

@ -2,11 +2,11 @@
mkDerivation rec { mkDerivation rec {
pname = "focuswriter"; pname = "focuswriter";
version = "1.7.5"; version = "1.7.6";
src = fetchurl { src = fetchurl {
url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2"; url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2";
sha256 = "19fqxyas941xcqjj68qpj42ayq0vw5rbd4ms5kvx8jyspp7wysqc"; sha256 = "0h85f6cs9zbxv118mjfxqfv41j19zkx2xq36mpnlmrlzkjj7dx9l";
}; };
nativeBuildInputs = [ pkgconfig qmake qttools ]; nativeBuildInputs = [ pkgconfig qmake qttools ];

View File

@ -1,4 +1,4 @@
{ stdenv, lib, makeDesktopItem, makeWrapper, patchelf, p7zip { stdenv, lib, makeDesktopItem, makeWrapper, patchelf
, coreutils, gnugrep, which, git, unzip, libsecret, libnotify , coreutils, gnugrep, which, git, unzip, libsecret, libnotify
}: }:
@ -26,7 +26,7 @@ with stdenv; lib.makeOverridable mkDerivation rec {
''; '';
}; };
nativeBuildInputs = [ makeWrapper patchelf p7zip unzip ]; nativeBuildInputs = [ makeWrapper patchelf unzip ];
patchPhase = lib.optionalString (!stdenv.isDarwin) '' patchPhase = lib.optionalString (!stdenv.isDarwin) ''
get_file_size() { get_file_size() {

View File

@ -27,13 +27,13 @@ in
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "macvim"; pname = "macvim";
version = "8.2.319"; version = "8.2.539";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "macvim-dev"; owner = "macvim-dev";
repo = "macvim"; repo = "macvim";
rev = "snapshot-162"; rev = "snapshot-163";
sha256 = "1mg55jlrz533wlqrx028fyv86rfhdzvm5kdi8xlf67flc5hh9vrp"; sha256 = "0ibc6h7zmk81dygkxd8a2rcq72zbqmr9kh64xhsm9h0p70505cdk";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;
@ -66,7 +66,6 @@ stdenv.mkDerivation {
"--with-tlib=ncurses" "--with-tlib=ncurses"
"--with-compiledby=Nix" "--with-compiledby=Nix"
"--disable-sparkle" "--disable-sparkle"
"LDFLAGS=-headerpad_max_install_names"
]; ];
makeFlags = ''PREFIX=$(out) CPPFLAGS="-Wno-error"''; makeFlags = ''PREFIX=$(out) CPPFLAGS="-Wno-error"'';
@ -81,11 +80,6 @@ stdenv.mkDerivation {
# This is unfortunate, but we need to use the same compiler as Xcode, # This is unfortunate, but we need to use the same compiler as Xcode,
# but Xcode doesn't provide a way to configure the compiler. # but Xcode doesn't provide a way to configure the compiler.
#
# If you're willing to modify the system files, you can do this:
# http://hamelot.co.uk/programming/add-gcc-compiler-to-xcode-6/
#
# But we don't have that option.
preConfigure = '' preConfigure = ''
CC=/usr/bin/clang CC=/usr/bin/clang
@ -101,8 +95,34 @@ stdenv.mkDerivation {
'' ''
; ;
# Because we're building with system clang, this means we're building against Xcode's SDK and
# linking against system libraries. The configure script is picking up Nix Libsystem (via ruby)
# so we need to patch that out or we'll get linker issues. The MacVim binary built by Xcode links
# against the system anyway so it doesn't really matter that the Vim binary will too. If we
# decide that matters, we can always patch it back to the Nix libsystem post-build.
# It also picks up libiconv, libunwind, and objc4 from Nix. These seem relatively harmless but
# let's strip them out too.
#
# Note: If we do add a post-build install_name_tool patch, we need to add the
# "LDFLAGS=-headerpad_max_install_names" flag to configureFlags and either patch it into the
# Xcode project or pass it as a flag to xcodebuild as well.
postConfigure = '' postConfigure = ''
substituteInPlace src/auto/config.mk --replace "PERL_CFLAGS =" "PERL_CFLAGS = -I${darwin.libutil}/include" substituteInPlace src/auto/config.mk \
--replace "PERL_CFLAGS =" "PERL_CFLAGS = -I${darwin.libutil}/include" \
--replace " -L${stdenv.cc.libc}/lib" "" \
--replace " -L${darwin.libobjc}/lib" "" \
--replace " -L${darwin.libunwind}/lib" "" \
--replace " -L${darwin.libiconv}/lib" ""
# All the libraries we stripped have -osx- in their name as of this time.
# Assert now that this pattern no longer appears in config.mk.
( # scope variable
while IFS="" read -r line; do
if [[ "$line" == LDFLAGS*-osx-* ]]; then
echo "WARNING: src/auto/config.mk contains reference to Nix osx library" >&2
fi
done <src/auto/config.mk
)
substituteInPlace src/MacVim/vimrc --subst-var-by CSCOPE ${cscope}/bin/cscope substituteInPlace src/MacVim/vimrc --subst-var-by CSCOPE ${cscope}/bin/cscope
''; '';

View File

@ -1,25 +1,5 @@
diff --git a/src/MacVim/MacVim.xcodeproj/project.pbxproj b/src/MacVim/MacVim.xcodeproj/project.pbxproj
index e519018de..556a4127d 100644
--- a/src/MacVim/MacVim.xcodeproj/project.pbxproj
+++ b/src/MacVim/MacVim.xcodeproj/project.pbxproj
@@ -1007,6 +1007,7 @@
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = "";
ONLY_ACTIVE_ARCH = YES;
+ OTHER_LDFLAGS = "-headerpad_max_install_names";
PRODUCT_BUNDLE_IDENTIFIER = org.vim.MacVim;
PRODUCT_NAME = MacVim;
VERSIONING_SYSTEM = "apple-generic";
@@ -1039,6 +1040,7 @@
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = "";
ONLY_ACTIVE_ARCH = YES;
+ OTHER_LDFLAGS = "-headerpad_max_install_names";
PRODUCT_BUNDLE_IDENTIFIER = org.vim.MacVim;
PRODUCT_NAME = MacVim;
VERSIONING_SYSTEM = "apple-generic";
diff --git a/src/MacVim/vimrc b/src/MacVim/vimrc diff --git a/src/MacVim/vimrc b/src/MacVim/vimrc
index 23a06bf37..dfb10fe94 100644 index 23a06bf..dfb10fe 100644
--- a/src/MacVim/vimrc --- a/src/MacVim/vimrc
+++ b/src/MacVim/vimrc +++ b/src/MacVim/vimrc
@@ -14,35 +14,5 @@ set backspace+=indent,eol,start @@ -14,35 +14,5 @@ set backspace+=indent,eol,start
@ -61,10 +41,10 @@ index 23a06bf37..dfb10fe94 100644
+" Default cscopeprg to the Nix-installed path +" Default cscopeprg to the Nix-installed path
+set cscopeprg=@CSCOPE@ +set cscopeprg=@CSCOPE@
diff --git a/src/Makefile b/src/Makefile diff --git a/src/Makefile b/src/Makefile
index 32810d0a7..13a05f349 100644 index 24c6934..d0f094e 100644
--- a/src/Makefile --- a/src/Makefile
+++ b/src/Makefile +++ b/src/Makefile
@@ -1385,7 +1385,7 @@ MACVIMGUI_SRC = gui.c gui_beval.c MacVim/gui_macvim.m MacVim/MMBackend.m \ @@ -1407,7 +1407,7 @@ MACVIMGUI_SRC = gui.c gui_beval.c MacVim/gui_macvim.m MacVim/MMBackend.m \
MacVim/MacVim.m MacVim/MacVim.m
MACVIMGUI_OBJ = objects/gui.o objects/gui_beval.o \ MACVIMGUI_OBJ = objects/gui.o objects/gui_beval.o \
objects/gui_macvim.o objects/MMBackend.o objects/MacVim.o objects/gui_macvim.o objects/MMBackend.o objects/MacVim.o
@ -74,10 +54,10 @@ index 32810d0a7..13a05f349 100644
MACVIMGUI_LIBS_DIR = MACVIMGUI_LIBS_DIR =
MACVIMGUI_LIBS1 = -framework Cocoa -framework Carbon MACVIMGUI_LIBS1 = -framework Cocoa -framework Carbon
diff --git a/src/auto/configure b/src/auto/configure diff --git a/src/auto/configure b/src/auto/configure
index 9e6a82f4a..3c6d1a89b 100755 index 730d6d5..0259112 100755
--- a/src/auto/configure --- a/src/auto/configure
+++ b/src/auto/configure +++ b/src/auto/configure
@@ -5829,10 +5829,7 @@ $as_echo "not found" >&6; } @@ -5859,10 +5859,7 @@ $as_echo "not found" >&6; }
for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
if test "X$path" != "X"; then if test "X$path" != "X"; then
@ -89,7 +69,7 @@ index 9e6a82f4a..3c6d1a89b 100755
MZSCHEME_LIBS="${path}/libmzscheme3m.a" MZSCHEME_LIBS="${path}/libmzscheme3m.a"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${path}/libracket3m.a"; then elif test -f "${path}/libracket3m.a"; then
@@ -6217,23 +6214,6 @@ $as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; } @@ -6247,23 +6244,6 @@ $as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; }
fi fi
if test "x$MACOS_X" = "xyes"; then if test "x$MACOS_X" = "xyes"; then
@ -113,7 +93,7 @@ index 9e6a82f4a..3c6d1a89b 100755
PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
fi fi
@@ -6456,13 +6436,7 @@ __: @@ -6486,13 +6466,7 @@ __:
eof eof
eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
rm -f -- "${tmp_mkf}" rm -f -- "${tmp_mkf}"
@ -128,7 +108,7 @@ index 9e6a82f4a..3c6d1a89b 100755
vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}" vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t].*/\1/'` python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t].*/\1/'`
@@ -6477,7 +6451,6 @@ eof @@ -6507,7 +6481,6 @@ eof
fi fi
vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}" vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//` vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
@ -136,7 +116,7 @@ index 9e6a82f4a..3c6d1a89b 100755
fi fi
@@ -6556,13 +6529,6 @@ rm -f core conftest.err conftest.$ac_objext \ @@ -6586,13 +6559,6 @@ rm -f core conftest.err conftest.$ac_objext \
$as_echo "no" >&6; } $as_echo "no" >&6; }
fi fi
@ -150,7 +130,7 @@ index 9e6a82f4a..3c6d1a89b 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python are sane" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python are sane" >&5
$as_echo_n "checking if compile and link flags for Python are sane... " >&6; } $as_echo_n "checking if compile and link flags for Python are sane... " >&6; }
cflags_save=$CFLAGS cflags_save=$CFLAGS
@@ -7456,11 +7422,7 @@ $as_echo "$tclver - OK" >&6; }; @@ -7486,11 +7452,7 @@ $as_echo "$tclver - OK" >&6; };
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5
$as_echo_n "checking for location of Tcl include... " >&6; } $as_echo_n "checking for location of Tcl include... " >&6; }
@ -162,7 +142,7 @@ index 9e6a82f4a..3c6d1a89b 100755
TCL_INC= TCL_INC=
for try in $tclinc; do for try in $tclinc; do
if test -f "$try/tcl.h"; then if test -f "$try/tcl.h"; then
@@ -7478,12 +7440,8 @@ $as_echo "<not found>" >&6; } @@ -7508,12 +7470,8 @@ $as_echo "<not found>" >&6; }
if test -z "$SKIP_TCL"; then if test -z "$SKIP_TCL"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh script" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh script" >&5
$as_echo_n "checking for location of tclConfig.sh script... " >&6; } $as_echo_n "checking for location of tclConfig.sh script... " >&6; }
@ -175,7 +155,7 @@ index 9e6a82f4a..3c6d1a89b 100755
for try in $tclcnf; do for try in $tclcnf; do
if test -f "$try/tclConfig.sh"; then if test -f "$try/tclConfig.sh"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5
@@ -7673,10 +7631,6 @@ $as_echo "$rubyhdrdir" >&6; } @@ -7703,10 +7661,6 @@ $as_echo "$rubyhdrdir" >&6; }
if test -f "$rubylibdir/$librubya"; then if test -f "$rubylibdir/$librubya"; then
librubyarg="$librubyarg" librubyarg="$librubyarg"
RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
@ -187,10 +167,10 @@ index 9e6a82f4a..3c6d1a89b 100755
if test "X$librubyarg" != "X"; then if test "X$librubyarg" != "X"; then
diff --git a/src/vim.h b/src/vim.h diff --git a/src/vim.h b/src/vim.h
index f158aab..a714da9 100644 index 87d1c92..8a7d5a5 100644
--- a/src/vim.h --- a/src/vim.h
+++ b/src/vim.h +++ b/src/vim.h
@@ -243,17 +243,6 @@ @@ -250,17 +250,6 @@
# define SUN_SYSTEM # define SUN_SYSTEM
#endif #endif
@ -209,7 +189,7 @@ index f158aab..a714da9 100644
# include "os_amiga.h" # include "os_amiga.h"
#endif #endif
diff --git a/src/vimtutor b/src/vimtutor diff --git a/src/vimtutor b/src/vimtutor
index 1e8769b25..47078b0e7 100755 index 1e8769b..47078b0 100755
--- a/src/vimtutor --- a/src/vimtutor
+++ b/src/vimtutor +++ b/src/vimtutor
@@ -16,7 +16,7 @@ seq="vim vim81 vim80 vim8 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi" @@ -16,7 +16,7 @@ seq="vim vim81 vim80 vim8 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"

View File

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, cmake, libX11, procps, python2, libdwarf, qtbase, qtwebkit }: { stdenv, fetchFromGitHub, cmake, libX11, procps, python2, libdwarf, qtbase, qtwebkit, wrapQtAppsHook, libglvnd }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "apitrace"; pname = "apitrace";
@ -15,7 +15,48 @@ stdenv.mkDerivation rec {
# of games -- so it's fine to use e.g. bundled snappy. # of games -- so it's fine to use e.g. bundled snappy.
buildInputs = [ libX11 procps python2 libdwarf qtbase qtwebkit ]; buildInputs = [ libX11 procps python2 libdwarf qtbase qtwebkit ];
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake wrapQtAppsHook ];
# Don't automatically wrap all binaries, I prefer to explicitly only wrap
# `qapitrace`.
dontWrapQtApps = true;
postFixup = ''
# Since https://github.com/NixOS/nixpkgs/pull/60985, we add `/run-opengl-driver[-32]`
# to the `RUNPATH` of dispatcher libraries `dlopen()` ing OpenGL drivers.
# `RUNPATH` doesn't propagate throughout the whole application, but only
# from the module performing the `dlopen()`.
#
# Apitrace wraps programs by running them with `LD_PRELOAD` pointing to `.so`
# files in $out/lib/apitrace/wrappers.
#
# Theses wrappers effectively wrap the `dlopen()` calls from `libglvnd`
# and other dispatcher libraries, and run `dlopen()` by themselves.
#
# As `RUNPATH` doesn't propagate through the whole library, and they're now the
# library doing the real `dlopen()`, they also need to have
# `/run-opengl-driver[-32]` added to their `RUNPATH`.
#
# To stay simple, we add paths for 32 and 64 bits unconditionally.
# This doesn't have an impact on closure size, and if the 32 bit drivers
# are not available, that folder is ignored.
for i in $out/lib/apitrace/wrappers/*.so
do
echo "Patching OpenGL driver path for $i"
patchelf --set-rpath "/run/opengl-driver/lib:/run/opengl-driver-32/lib:$(patchelf --print-rpath $i)" $i
done
# Theses open the OpenGL driver at runtime, but it is not listed as NEEDED libraries. They need
# a reference to libglvnd.
for i in $out/bin/eglretrace $out/bin/glretrace
do
echo "Patching RPath for $i"
patchelf --set-rpath "${stdenv.lib.makeLibraryPath [libglvnd]}:$(patchelf --print-rpath $i)" $i
done
wrapQtApp $out/bin/qapitrace
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = "https://apitrace.github.io"; homepage = "https://apitrace.github.io";

View File

@ -5,11 +5,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "avocode"; pname = "avocode";
version = "4.4.3"; version = "4.6.2";
src = fetchurl { src = fetchurl {
url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip"; url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip";
sha256 = "03pq55mdgbaf6c2q57ww2990wr6qz8hk1r6xs1irqy8990m4afvk"; sha256 = "1ldvscxfvwpsir8vr1ca9ra0841m6xy331ys31dngcp77nwncjqc";
}; };
libPath = stdenv.lib.makeLibraryPath (with xorg; [ libPath = stdenv.lib.makeLibraryPath (with xorg; [

View File

@ -11,11 +11,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "drawio"; pname = "drawio";
version = "12.9.9"; version = "13.0.3";
src = fetchurl { src = fetchurl {
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm"; url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm";
sha256 = "07lx99fd4vkgdhagshzawrh8ncbv19hvxjpzgd3yjdj0nalvmxin"; sha256 = "104pfwipm8ch9xqlsz1gh18icr1p6i3n4c77bbdjakxcy4s5n7sg";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -2,7 +2,7 @@
mkDerivation rec { mkDerivation rec {
pname = "fstl"; pname = "fstl";
version = "0.9.3"; version = "0.9.4";
buildInputs = [qtbase mesa_glu]; buildInputs = [qtbase mesa_glu];
@ -23,7 +23,7 @@ mkDerivation rec {
owner = "mkeeter"; owner = "mkeeter";
repo = "fstl"; repo = "fstl";
rev = "v" + version; rev = "v" + version;
sha256 = "1j0y9xbf0ybrrnsmfzgpyyz6bi98xgzn9ivani424j01vffns892"; sha256 = "028hzdv11hgvcpc36q5scf4nw1256qswh37xhfn5a0iv7wycmnif";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -9,14 +9,14 @@
libarchive, libzip, libarchive, libzip,
# Archive tools # Archive tools
p7zip, lrzip, lrzip,
# Unfree tools # Unfree tools
unfreeEnableUnrar ? false, unrar, unfreeEnableUnrar ? false, unrar,
}: }:
let let
extraTools = [ p7zip lrzip ] ++ lib.optional unfreeEnableUnrar unrar; extraTools = [ lrzip ] ++ lib.optional unfreeEnableUnrar unrar;
in in
mkDerivation { mkDerivation {

View File

@ -2,24 +2,24 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "1password"; pname = "1password";
version = "0.9.4"; version = "0.10.0";
src = src =
if stdenv.hostPlatform.system == "i686-linux" then if stdenv.hostPlatform.system == "i686-linux" then
fetchzip { fetchzip {
url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_386_v${version}.zip"; url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_386_v${version}.zip";
sha256 = "0hgvcm42035fs2qhhvycppcrqgya98rmkk347j3hyj1m6kqxi99c"; sha256 = "07j11ikd0rzsj4d8rv74rfy497svq6l2q94ndf3b0a0mr8riyazj";
stripRoot = false; stripRoot = false;
} }
else if stdenv.hostPlatform.system == "x86_64-linux" then else if stdenv.hostPlatform.system == "x86_64-linux" then
fetchzip { fetchzip {
url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_amd64_v${version}.zip"; url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_amd64_v${version}.zip";
sha256 = "1fvl078kgpvzjr3jfp8zbajzsiwrcm33b7lqksxgcy30paqw6737"; sha256 = "177cl4x7rj3d74kzrpmiwps5n31axmlhqdwrdpkmay2gk9inswbs";
stripRoot = false; stripRoot = false;
} }
else if stdenv.hostPlatform.system == "x86_64-darwin" then else if stdenv.hostPlatform.system == "x86_64-darwin" then
fetchurl { fetchurl {
url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_darwin_amd64_v${version}.pkg"; url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_darwin_amd64_v${version}.pkg";
sha256 = "0fzbfxsgf0s93kg647zla9n9k5adnfb57dcwwnibs6lq5k63h8mj"; sha256 = "13yxmnh77g6zvl2gqf77m5i3v5706p2plgbgsn5hqrrf3g8ql63b";
} }
else throw "Architecture not supported"; else throw "Architecture not supported";

View File

@ -100,7 +100,7 @@ rustPlatform.buildRustPackage rec {
'' + ( '' + (
if stdenv.isDarwin then '' if stdenv.isDarwin then ''
mkdir $out/Applications mkdir $out/Applications
cp -r target/release/osx/Alacritty.app $out/Applications/Alacritty.app cp -r $releaseDir/osx/Alacritty.app $out/Applications/Alacritty.app
'' else '' '' else ''
install -D extra/linux/Alacritty.desktop -t $out/share/applications/ install -D extra/linux/Alacritty.desktop -t $out/share/applications/
install -D extra/logo/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg install -D extra/logo/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg

View File

@ -2,13 +2,13 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
pname = "cherrytree"; pname = "cherrytree";
version = "0.39.2"; version = "0.39.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "giuspen"; owner = "giuspen";
repo = "cherrytree"; repo = "cherrytree";
rev = version; rev = version;
sha256 = "1l6wh24bhp4yhmsfmc0r4n2n10nlilkv4cmv5sfl80i250fiw7xa"; sha256 = "1k9i7acpphx0if6ij2p9fkmj638ry6hcyr1rdr039a8zi8hq98gz";
}; };

View File

@ -5,13 +5,13 @@
mkDerivation rec { mkDerivation rec {
pname = "CopyQ"; pname = "CopyQ";
version = "3.10.0"; version = "3.11.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hluk"; owner = "hluk";
repo = "CopyQ"; repo = "CopyQ";
rev = "v${version}"; rev = "v${version}";
sha256 = "05nhgndiq0sm1bvb80sf5fgnm38249dclwzmfm7hzrablmkwgv3c"; sha256 = "1wx6nqcyzknbw71sliwq4cb5qq1gy6pr9867s6x3vpg3n8g2czkf";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, python3, installShellFiles }: { stdenv, fetchFromGitHub, python3, installShellFiles }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.8"; version = "1.8.1";
pname = "ddgr"; pname = "ddgr";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jarun"; owner = "jarun";
repo = "ddgr"; repo = "ddgr";
rev = "v${version}"; rev = "v${version}";
sha256 = "1cyaindcg2vc3ij0p6b35inr01c6ys04izxsn1h70ixhsz46qg8z"; sha256 = "0668wzh1gqin0xscy3fly9hz370n2ny175f3kya9bsld0x0jkd5p";
}; };
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];
@ -17,11 +17,6 @@ stdenv.mkDerivation rec {
makeFlags = [ "PREFIX=$(out)" ]; makeFlags = [ "PREFIX=$(out)" ];
# Version 1.8 was released as 1.7
postPatch = ''
substituteInPlace ddgr --replace "_VERSION_ = '1.7'" "_VERSION_ = '${version}'"
'';
postInstall = '' postInstall = ''
installShellCompletion --bash --name ddgr.bash auto-completion/bash/ddgr-completion.bash installShellCompletion --bash --name ddgr.bash auto-completion/bash/ddgr-completion.bash
installShellCompletion --fish auto-completion/fish/ddgr.fish installShellCompletion --fish auto-completion/fish/ddgr.fish

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, openssl }: { stdenv, fetchurl, openssl }:
let let
version = "6.4.3"; version = "6.4.4";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "fetchmail"; pname = "fetchmail";
@ -9,7 +9,7 @@ stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/fetchmail/fetchmail-${version}.tar.xz"; url = "mirror://sourceforge/fetchmail/fetchmail-${version}.tar.xz";
sha256 = "1r6k14m40ni9114i3j1lr6zwpxky6k89mycgxxg0cpdap4a0wdmh"; sha256 = "1smbydwfjq29a2l44g6mgj0cd412fz40gbq6vq0klm7pmgd606si";
}; };
buildInputs = [ openssl ]; buildInputs = [ openssl ];

View File

@ -2,11 +2,11 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "gallery_dl"; pname = "gallery_dl";
version = "1.13.3"; version = "1.13.6";
src = python3Packages.fetchPypi { src = python3Packages.fetchPypi {
inherit pname version; inherit pname version;
sha256 = "0nhbhli45i2xhkmyj9mpg8fn1l58y2zmr6nnnnms557wpdpg112x"; sha256 = "17hgryj8qsxcx3c96ir25q0wsh5q0s6c6fb33lqfdbrfxrjcixbk";
}; };
doCheck = false; doCheck = false;

View File

@ -2,11 +2,11 @@
, curl, cdparanoia, libid3tag, ncurses, libtool }: , curl, cdparanoia, libid3tag, ncurses, libtool }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "grip-4.1.0"; name = "grip-4.1.1";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/grip/${name}.tar.gz"; url = "mirror://sourceforge/grip/${name}.tar.gz";
sha256 = "0iy7bcyrxm7zyrxah06qyxdshkgq6yqkadlw211j2qzld38a79j5"; sha256 = "1sbjgawb7qrinixybwi0adk7mpdfb565gkffp5gxxsw8fqd068fs";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];

View File

@ -2,7 +2,7 @@
let let
pname = "joplin-desktop"; pname = "joplin-desktop";
version = "1.0.200"; version = "1.0.201";
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
name = "Joplin"; name = "Joplin";
exec = "joplin-desktop"; exec = "joplin-desktop";
@ -13,7 +13,7 @@ in appimageTools.wrapType2 rec {
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.AppImage"; url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.AppImage";
sha256 = "14gwv8i6dprvl96mifadq0zj77a82rww8xd5bmzm8ql6sidi2216"; sha256 = "060dkgamsv59vgslqyjfh1g8wg3nldrvfb9lf0y9sxjlbsv8bc55";
}; };

View File

@ -1,12 +1,12 @@
{ stdenv, glibcLocales, python3 }: { stdenv, glibcLocales, python3 }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
version = "0.16.0"; version = "0.16.1";
pname = "khard"; pname = "khard";
src = python3.pkgs.fetchPypi { src = python3.pkgs.fetchPypi {
inherit pname version; inherit pname version;
sha256 = "0a1zpkq0pplmn9flxczq2wafs6zc07r9xx9qi6dqmyv9mhy9d87f"; sha256 = "0fg4qh5gzki5wg958wlpc8a2icnk74gzg33lqxjm755cfnjng7qd";
}; };
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [

View File

@ -3,11 +3,11 @@
mkDerivation rec { mkDerivation rec {
pname = "latte-dock"; pname = "latte-dock";
version = "0.9.10"; version = "0.9.11";
src = fetchurl { src = fetchurl {
url = "https://download.kde.org/stable/${pname}/${pname}-${version}.tar.xz"; url = "https://download.kde.org/stable/${pname}/${pname}-${version}.tar.xz";
sha256 = "11s9fslr33h3ic14ifr43jphf68jpny8jmhvmrrwcz6w0p3falzw"; sha256 = "0x7a93a7axsa0fzpbkkv1z722k9za4p51xcpzdpnh5ih1zij0csi";
name = "${pname}-${version}.tar.xz"; name = "${pname}-${version}.tar.xz";
}; };

View File

@ -3,14 +3,24 @@
let let
pname = "notable"; pname = "notable";
version = "1.8.4"; version = "1.8.4";
in sha256 = "0rvz8zwsi62kiq89pv8n2wh9h5yb030kvdr1vf65xwqkhqcrzrby";
appimageTools.wrapType2 rec {
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/notable/notable/releases/download/v${version}/Notable-${version}.AppImage"; url = "https://github.com/notable/notable/releases/download/v${version}/Notable-${version}.AppImage";
sha256 = "0rvz8zwsi62kiq89pv8n2wh9h5yb030kvdr1vf65xwqkhqcrzrby"; inherit sha256;
}; };
appimageContents = appimageTools.extract {
inherit name src;
};
in
appimageTools.wrapType2 rec {
inherit name src;
profile = '' profile = ''
export LC_ALL=C.UTF-8 export LC_ALL=C.UTF-8
export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
@ -18,7 +28,14 @@ appimageTools.wrapType2 rec {
multiPkgs = null; # no 32bit needed multiPkgs = null; # no 32bit needed
extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [ p.at-spi2-atk p.at-spi2-core ]; extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [ p.at-spi2-atk p.at-spi2-core ];
extraInstallCommands = "mv $out/bin/{${name},${pname}}"; extraInstallCommands = ''
mv $out/bin/{${name},${pname}}
install -m 444 -D ${appimageContents}/notable.desktop $out/share/applications/notable.desktop
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/1024x1024/apps/notable.png \
$out/share/icons/hicolor/1024x1024/apps/notable.png
substituteInPlace $out/share/applications/notable.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
'';
meta = with lib; { meta = with lib; {
description = "The markdown-based note-taking app that doesn't suck"; description = "The markdown-based note-taking app that doesn't suck";

View File

@ -1,5 +1,7 @@
{ stdenv, lib, fetchFromGitHub, python2 }: { pkgs, stdenv, lib, fetchFromGitHub, python3
# To include additional plugins, pass them here as an overlay.
, packageOverrides ? self: super: {}
}:
let let
mkOverride = attrname: version: sha256: mkOverride = attrname: version: sha256:
self: super: { self: super: {
@ -11,17 +13,19 @@ let
}); });
}; };
py = python2.override { py = python3.override {
self = py;
packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ([ packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ([
(mkOverride "flask" "0.10.1" "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc") (mkOverride "flask" "0.12.5" "fac2b9d443e49f7e7358a444a3db5950bdd0324674d92ba67f8f1f15f876b14f")
(mkOverride "flask_login" "0.2.11" "1rg3rsjs1gwi2pw6vr9jmhaqm9b3vc9c4hfcsvp4y8agbh7g3mc3") (mkOverride "flaskbabel" "0.12.2" "11jwp8vvq1gnm31qh6ihy2h393hy18yn9yjp569g60r0wj1x2sii")
(mkOverride "tornado" "4.5.3" "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d") (mkOverride "tornado" "4.5.3" "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d")
(mkOverride "psutil" "5.6.7" "ffad8eb2ac614518bbe3c0b8eb9dffdb3a8d2e3a7d5da51c5b974fb723a5c5aa")
# Octoprint holds back jinja2 to 2.8.1 due to breaking changes. # Octoprint holds back jinja2 to 2.8.1 due to breaking changes.
# This old version does not have updated test config for pytest 4, # This old version does not have updated test config for pytest 4,
# and pypi tarball doesn't contain tests dir anyways. # and pypi tarball doesn't contain tests dir anyways.
(pself: psuper: { (self: super: {
jinja2 = psuper.jinja2.overridePythonAttrs (oldAttrs: rec { jinja2 = super.jinja2.overridePythonAttrs (oldAttrs: rec {
version = "2.8.1"; version = "2.8.1";
src = oldAttrs.src.override { src = oldAttrs.src.override {
inherit version; inherit version;
@ -29,74 +33,75 @@ let
}; };
doCheck = false; doCheck = false;
}); });
httpretty = super.httpretty.overridePythonAttrs (oldAttrs: rec {
doCheck = false;
});
celery = super.celery.overridePythonAttrs (oldAttrs: rec {
doCheck = false;
});
}) })
(self: super: {
octoprint = self.buildPythonPackage rec {
pname = "OctoPrint";
version = "1.4.0";
src = fetchFromGitHub {
owner = "foosel";
repo = "OctoPrint";
rev = version;
sha256 = "0387228544v28d69dcdg2zr5gp6qavkfr6dydpjgj5awxv3w25d5";
};
propagatedBuildInputs = with super; [
awesome-slugify flask flask_assets rsa requests pkginfo watchdog
semantic-version werkzeug flaskbabel tornado
psutil pyserial flask_login netaddr markdown
pylru pyyaml sarge feedparser netifaces click websocket_client
scandir chainmap future wrapt monotonic emoji jinja2
frozendict cachelib sentry-sdk filetype markupsafe
] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
checkInputs = with super; [ pytestCheckHook mock ddt ];
postPatch = let
ignoreVersionConstraints = [
"sentry-sdk"
];
in ''
sed -r -i \
${lib.concatStringsSep "\n" (map (e:
''-e 's@${e}[<>=]+.*@${e}",@g' \''
) ignoreVersionConstraints)}
setup.py
'';
dontUseSetuptoolsCheck = true;
preCheck = ''
export HOME=$(mktemp -d)
rm pytest.ini
'';
disabledTests = [
"test_check_setup" # Why should it be able to call pip?
] ++ lib.optionals stdenv.isDarwin [
"test_set_external_modification"
];
passthru.python = self.python;
meta = with stdenv.lib; {
homepage = "https://octoprint.org/";
description = "The snappy web interface for your 3D printer";
license = licenses.agpl3;
maintainers = with maintainers; [ abbradar gebner WhittlesJr ];
};
};
})
(import ./plugins.nix {inherit pkgs;})
packageOverrides
]); ]);
}; };
in with py.pkgs; toPythonApplication octoprint
ignoreVersionConstraints = [
"Click"
"Flask-Assets"
"Flask-Babel"
"Flask-Principal"
"emoji"
"flask"
"future"
"futures"
"monotonic"
"markdown"
"pkginfo"
"psutil"
"pyserial"
"requests"
"rsa"
"sarge"
"scandir"
"semantic_version"
"watchdog"
"websocket-client"
"wrapt"
"sentry-sdk"
"werkzeug" # 0.16 just deprecates some stuff
];
in py.pkgs.buildPythonApplication rec {
pname = "OctoPrint";
version = "1.3.12";
src = fetchFromGitHub {
owner = "foosel";
repo = "OctoPrint";
rev = version;
sha256 = "1lmqssgwjyhknjf3x58g7cr0fqz7fs5a3rl07r69wfpch63ranyd";
};
propagatedBuildInputs = with py.pkgs; [
awesome-slugify flask_assets rsa requests pkginfo watchdog
semantic-version flask_principal werkzeug flaskbabel tornado
psutil pyserial flask_login netaddr markdown sockjs-tornado
pylru pyyaml sarge feedparser netifaces click websocket_client
scandir chainmap future futures wrapt monotonic emoji
frozendict cachelib sentry-sdk typing filetype
] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
checkInputs = with py.pkgs; [ nose mock ddt ];
postPatch = ''
sed -r -i \
${lib.concatStringsSep "\n" (map (e:
''-e 's@${e}[<>=]+.*@${e}",@g' \''
) ignoreVersionConstraints)}
setup.py
'';
checkPhase = ''
HOME=$(mktemp -d) nosetests ${lib.optionalString stdenv.isDarwin "--exclude=test_set_external_modification"}
'';
meta = with stdenv.lib; {
homepage = "https://octoprint.org/";
description = "The snappy web interface for your 3D printer";
license = licenses.agpl3;
maintainers = with maintainers; [ abbradar gebner ];
};
}

View File

@ -1,255 +1,255 @@
{ stdenv, fetchgit, fetchFromGitHub, octoprint, python2Packages, marlin-calc }: { pkgs }:
let with pkgs;
buildPlugin = args: python2Packages.buildPythonPackage (args // {
self: super: let
buildPlugin = args: self.buildPythonPackage (args // {
pname = "OctoPrintPlugin-${args.pname}"; pname = "OctoPrintPlugin-${args.pname}";
inherit (args) version; inherit (args) version;
propagatedBuildInputs = (args.propagatedBuildInputs or []) ++ [ octoprint ]; propagatedBuildInputs = (args.propagatedBuildInputs or []) ++ [ super.octoprint ];
# none of the following have tests # none of the following have tests
doCheck = false; doCheck = false;
}); });
in {
inherit buildPlugin;
self = { # Deprecated alias
m3d-fio = self.m33-fio; # added 2016-08-13
# Deprecated alias m33-fio = buildPlugin rec {
m3d-fio = self.m33-fio; # added 2016-08-13 pname = "M33-Fio";
version = "1.21";
m33-fio = buildPlugin rec { src = fetchFromGitHub {
pname = "M33-Fio"; owner = "donovan6000";
version = "1.21"; repo = "M33-Fio";
rev = "V${version}";
src = fetchFromGitHub { sha256 = "1la3611kkqn8yiwjn6cizc45ri8pnk6ckld1na4nk6mqk88jvjq7";
owner = "donovan6000";
repo = "M33-Fio";
rev = "V${version}";
sha256 = "1la3611kkqn8yiwjn6cizc45ri8pnk6ckld1na4nk6mqk88jvjq7";
};
patches = [
./m33-fio-one-library.patch
];
postPatch = ''
rm -rf octoprint_m33fio/static/libraries/*
(
cd 'shared library source'
make
)
'';
meta = with stdenv.lib; {
description = "OctoPrint plugin for the Micro 3D printer";
homepage = "https://github.com/donovan6000/M33-Fio";
license = licenses.gpl3;
maintainers = with maintainers; [ abbradar ];
};
}; };
mqtt = buildPlugin rec { patches = [
pname = "MQTT"; ./m33-fio-one-library.patch
version = "0.8.6"; ];
src = fetchFromGitHub { postPatch = ''
owner = "OctoPrint"; rm -rf octoprint_m33fio/static/libraries/*
repo = "OctoPrint-MQTT"; (
rev = version; cd 'shared library source'
sha256 = "0y1jnfplcy8mh3szrfbbvngl02j49cbdizglrfsry4fvqg50zjxd"; make
}; )
'';
propagatedBuildInputs = with python2Packages; [ paho-mqtt ]; meta = with stdenv.lib; {
description = "OctoPrint plugin for the Micro 3D printer";
meta = with stdenv.lib; { homepage = "https://github.com/donovan6000/M33-Fio";
description = "Publish printer status MQTT"; license = licenses.gpl3;
homepage = "https://github.com/OctoPrint/OctoPrint-MQTT"; maintainers = with maintainers; [ abbradar ];
license = licenses.agpl3;
maintainers = with maintainers; [ peterhoeg ];
};
};
titlestatus = buildPlugin rec {
pname = "TitleStatus";
version = "0.0.4";
src = fetchFromGitHub {
owner = "MoonshineSG";
repo = "OctoPrint-TitleStatus";
rev = version;
sha256 = "1l78xrabn5hcly2mgxwi17nwgnp2s6jxi9iy4wnw8k8icv74ag7k";
};
meta = with stdenv.lib; {
description = "Show printers status in window title";
homepage = "https://github.com/MoonshineSG/OctoPrint-TitleStatus";
license = licenses.agpl3;
maintainers = with maintainers; [ abbradar ];
};
};
stlviewer = buildPlugin rec {
pname = "STLViewer";
version = "0.4.2";
src = fetchFromGitHub {
owner = "jneilliii";
repo = "OctoPrint-STLViewer";
rev = version;
sha256 = "0mkvh44fn2ch4z2avsdjwi1rp353ylmk9j5fln4x7rx8ph8y7g2b";
};
meta = with stdenv.lib; {
description = "A simple stl viewer tab for OctoPrint";
homepage = "https://github.com/jneilliii/Octoprint-STLViewer";
license = licenses.agpl3;
maintainers = with maintainers; [ abbradar ];
};
};
curaenginelegacy = buildPlugin rec {
pname = "CuraEngineLegacy";
version = "1.0.2";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1cdb276wfyf3wcfj5g3migd6b6aqmkrxncrqjfcfx4j4k3xac965";
};
meta = with stdenv.lib; {
description = "Plugin for slicing via Cura Legacy from within OctoPrint";
homepage = "https://github.com/OctoPrint/OctoPrint-CuraEngineLegacy";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
touchui = buildPlugin rec {
pname = "TouchUI";
version = "0.3.13";
src = fetchFromGitHub {
owner = "BillyBlaze";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "0qk12ysabdzy6cna3l4f8v3qcnppppwxxsjx2i0xn1nd0cv6yzwh";
};
meta = with stdenv.lib; {
description = "Touch friendly interface for a small TFT module or phone for OctoPrint";
homepage = "https://github.com/BillyBlaze/OctoPrint-TouchUI";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
psucontrol = buildPlugin rec {
pname = "PSUControl";
version = "0.1.8";
src = fetchFromGitHub {
owner = "kantlivelong";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "0aj38d7b7d5pzmzq841pip18cpg18wy2vrxq2nd13875597y54b8";
};
preConfigure = ''
# optional; RPi.GPIO is broken on vanilla kernels
sed /RPi.GPIO/d -i requirements.txt
'';
meta = with stdenv.lib; {
description = "OctoPrint plugin to control ATX/AUX power supply";
homepage = "https://github.com/kantlivelong/OctoPrint-PSUControl";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
printtimegenius = buildPlugin rec {
pname = "PrintTimeGenius";
version = "2.2.1";
src = fetchFromGitHub {
owner = "eyal0";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1dr93vbpxgxw3b1q4rwam8f4dmiwr5vnfr9796g6jx8xkpfzzy1h";
};
preConfigure = ''
# PrintTimeGenius ships with marlin-calc binaries for multiple architectures
rm */analyzers/marlin-calc*
sed 's@"{}.{}".format(binary_base_name, machine)@"${marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py
'';
patches = [
./printtimegenius-logging.patch
];
meta = with stdenv.lib; {
description = "Better print time estimation for OctoPrint";
homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
abl-expert = buildPlugin rec {
pname = "ABL_Expert";
version = "2019-12-21";
src = fetchgit {
url = "https://framagit.org/razer/Octoprint_ABL_Expert/";
rev = "f11fbe05088ad618bfd9d064ac3881faec223f33";
sha256 = "026r4prkyvwzxag5pv36455q7s3gaig37nmr2nbvhwq3d2lbi5s4";
};
meta = with stdenv.lib; {
description = "Marlin auto bed leveling control, mesh correction, and z probe handling";
homepage = "https://framagit.org/razer/Octoprint_ABL_Expert/";
license = licenses.agpl3;
maintainers = with maintainers; [ WhittlesJr ];
};
};
gcodeeditor = buildPlugin rec {
pname = "GcodeEditor";
version = "0.2.6";
src = fetchFromGitHub {
owner = "ieatacid";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "0c6p78r3vd6ys3kld308pyln09zjbr9yif1ljvcx6wlml2i5l1vh";
};
meta = with stdenv.lib; {
description = "Edit gcode on OctoPrint";
homepage = "https://github.com/Sebclem/OctoPrint-SimpleEmergencyStop";
license = licenses.agpl3;
maintainers = with maintainers; [ WhittlesJr ];
};
};
simpleemergencystop = buildPlugin rec {
pname = "SimpleEmergencyStop";
version = "0.2.5";
src = fetchFromGitHub {
owner = "Sebclem";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "10wadv09wv2h96igvq3byw9hz1si82n3c7v5y0ii3j7hm2d06y8p";
};
meta = with stdenv.lib; {
description = "A simple plugin that add an emergency stop buton on NavBar of OctoPrint";
homepage = "https://github.com/ieatacid/OctoPrint-GcodeEditor";
license = licenses.agpl3;
maintainers = with maintainers; [ WhittlesJr ];
};
}; };
}; };
in self mqtt = buildPlugin rec {
pname = "MQTT";
version = "0.8.6";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-MQTT";
rev = version;
sha256 = "0y1jnfplcy8mh3szrfbbvngl02j49cbdizglrfsry4fvqg50zjxd";
};
propagatedBuildInputs = with super; [ paho-mqtt ];
meta = with stdenv.lib; {
description = "Publish printer status MQTT";
homepage = "https://github.com/OctoPrint/OctoPrint-MQTT";
license = licenses.agpl3;
maintainers = with maintainers; [ peterhoeg ];
};
};
titlestatus = buildPlugin rec {
pname = "TitleStatus";
version = "0.0.4";
src = fetchFromGitHub {
owner = "MoonshineSG";
repo = "OctoPrint-TitleStatus";
rev = version;
sha256 = "1l78xrabn5hcly2mgxwi17nwgnp2s6jxi9iy4wnw8k8icv74ag7k";
};
meta = with stdenv.lib; {
description = "Show printers status in window title";
homepage = "https://github.com/MoonshineSG/OctoPrint-TitleStatus";
license = licenses.agpl3;
maintainers = with maintainers; [ abbradar ];
};
};
stlviewer = buildPlugin rec {
pname = "STLViewer";
version = "0.4.2";
src = fetchFromGitHub {
owner = "jneilliii";
repo = "OctoPrint-STLViewer";
rev = version;
sha256 = "0mkvh44fn2ch4z2avsdjwi1rp353ylmk9j5fln4x7rx8ph8y7g2b";
};
meta = with stdenv.lib; {
description = "A simple stl viewer tab for OctoPrint";
homepage = "https://github.com/jneilliii/Octoprint-STLViewer";
license = licenses.agpl3;
maintainers = with maintainers; [ abbradar ];
};
};
curaenginelegacy = buildPlugin rec {
pname = "CuraEngineLegacy";
version = "1.0.2";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1cdb276wfyf3wcfj5g3migd6b6aqmkrxncrqjfcfx4j4k3xac965";
};
meta = with stdenv.lib; {
description = "Plugin for slicing via Cura Legacy from within OctoPrint";
homepage = "https://github.com/OctoPrint/OctoPrint-CuraEngineLegacy";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
touchui = buildPlugin rec {
pname = "TouchUI";
version = "0.3.14";
src = fetchFromGitHub {
owner = "BillyBlaze";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "033b9nk3kpnmjw9nggcaxy39hcgfviykcy2cx0j6m411agvmqbzf";
};
meta = with stdenv.lib; {
description = "Touch friendly interface for a small TFT module or phone for OctoPrint";
homepage = "https://github.com/BillyBlaze/OctoPrint-TouchUI";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
psucontrol = buildPlugin rec {
pname = "PSUControl";
version = "0.1.9";
src = fetchFromGitHub {
owner = "kantlivelong";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1cn009bdgn6c9ba9an5wfj8z02wi0xcsmbhkqggiqlnqy1fq45ca";
};
preConfigure = ''
# optional; RPi.GPIO is broken on vanilla kernels
sed /RPi.GPIO/d -i requirements.txt
'';
meta = with stdenv.lib; {
description = "OctoPrint plugin to control ATX/AUX power supply";
homepage = "https://github.com/kantlivelong/OctoPrint-PSUControl";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
printtimegenius = buildPlugin rec {
pname = "PrintTimeGenius";
version = "2.2.1";
src = fetchFromGitHub {
owner = "eyal0";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1dr93vbpxgxw3b1q4rwam8f4dmiwr5vnfr9796g6jx8xkpfzzy1h";
};
preConfigure = ''
# PrintTimeGenius ships with marlin-calc binaries for multiple architectures
rm */analyzers/marlin-calc*
sed 's@"{}.{}".format(binary_base_name, machine)@"${pkgs.marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py
'';
patches = [
./printtimegenius-logging.patch
];
meta = with stdenv.lib; {
description = "Better print time estimation for OctoPrint";
homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius";
license = licenses.agpl3;
maintainers = with maintainers; [ gebner ];
};
};
abl-expert = buildPlugin rec {
pname = "ABL_Expert";
version = "2019-12-21";
src = fetchgit {
url = "https://framagit.org/razer/Octoprint_ABL_Expert/";
rev = "f11fbe05088ad618bfd9d064ac3881faec223f33";
sha256 = "026r4prkyvwzxag5pv36455q7s3gaig37nmr2nbvhwq3d2lbi5s4";
};
meta = with stdenv.lib; {
description = "Marlin auto bed leveling control, mesh correction, and z probe handling";
homepage = "https://framagit.org/razer/Octoprint_ABL_Expert/";
license = licenses.agpl3;
maintainers = with maintainers; [ WhittlesJr ];
};
};
gcodeeditor = buildPlugin rec {
pname = "GcodeEditor";
version = "0.2.6";
src = fetchFromGitHub {
owner = "ieatacid";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "0c6p78r3vd6ys3kld308pyln09zjbr9yif1ljvcx6wlml2i5l1vh";
};
meta = with stdenv.lib; {
description = "Edit gcode on OctoPrint";
homepage = "https://github.com/ieatacid/OctoPrint-GcodeEditor";
license = licenses.agpl3;
maintainers = with maintainers; [ WhittlesJr ];
};
};
simpleemergencystop = buildPlugin rec {
pname = "SimpleEmergencyStop";
version = "0.2.5";
src = fetchFromGitHub {
owner = "Sebclem";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "10wadv09wv2h96igvq3byw9hz1si82n3c7v5y0ii3j7hm2d06y8p";
};
meta = with stdenv.lib; {
description = "A simple plugin that add an emergency stop buton on NavBar of OctoPrint";
homepage = "https://github.com/Sebclem/OctoPrint-SimpleEmergencyStop";
license = licenses.agpl3;
maintainers = with maintainers; [ WhittlesJr ];
};
};
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "osmium-tool"; pname = "osmium-tool";
version = "1.11.1"; version = "1.12.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "osmcode"; owner = "osmcode";
repo = "osmium-tool"; repo = "osmium-tool";
rev = "v${version}"; rev = "v${version}";
sha256 = "199dvajik5d56nybk2061vdjyxwakngfd7frxj99wr2vsrp4aw2b"; sha256 = "18afn5qzdjpip176kk5pr04mj0p7dv70dbz1n36qmqnq3gyms10q";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -5,13 +5,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "pdfarranger"; pname = "pdfarranger";
version = "1.4.2"; version = "1.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jeromerobert"; owner = "jeromerobert";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "11q14pxyp5z4y3gabjnis3ip3xss6n94zjl42akwf27dxgxlpcjk"; sha256 = "0n4jw0dsqw929a34ff077kz8w89vkjkqf8dy4c356zh6gf23cdxr";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pdfsam-basic"; pname = "pdfsam-basic";
version = "4.1.2"; version = "4.1.3";
src = fetchurl { src = fetchurl {
url = "https://github.com/torakiki/pdfsam/releases/download/v${version}/pdfsam_${version}-1_amd64.deb"; url = "https://github.com/torakiki/pdfsam/releases/download/v${version}/pdfsam_${version}-1_amd64.deb";
sha256 = "1k1azxz92vkb4hylk4ki0szfn47ids0lwg01zfs54yc89j0c6142"; sha256 = "1rhv6mf6pr9aaa8516i3b7v6h622qb1p8c4jsy3j0s5wrdry5l9l";
}; };
unpackPhase = '' unpackPhase = ''

View File

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "pueue"; pname = "pueue";
version = "0.3.0"; version = "0.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Nukesor"; owner = "Nukesor";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "11x4y3ah9f7mv9jssws95sw7rd20fxwdh11mrhcb4vwk59cmqsjz"; sha256 = "1v3fphx71hyv7fq09slhyzchw362swzhmhn7wmbazfdrj6fjhcki";
}; };
cargoSha256 = "06zv3li14sg4a8bgj38zzx576ggm32ss0djmys1g0h5a0nxaaqfx"; cargoSha256 = "04vi9la17pabz1spfw1fzgy4c2ifnis6am5m4ck3lhccnn6j8bd3";
checkPhase = "cargo test -- --skip test_single_huge_payload"; checkPhase = "cargo test -- --skip test_single_huge_payload";

View File

@ -101,12 +101,13 @@ rec {
redshift-wlr = mkRedshift { redshift-wlr = mkRedshift {
pname = "redshift-wlr"; pname = "redshift-wlr";
version = "2019-04-17"; # upstream rebases so this is the push date
version = "2019-08-24";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "minus7"; owner = "minus7";
repo = "redshift"; repo = "redshift";
rev = "eecbfedac48f827e96ad5e151de8f41f6cd3af66"; rev = "7da875d34854a6a34612d5ce4bd8718c32bec804";
sha256 = "0rs9bxxrw4wscf4a8yl776a8g880m5gcm75q06yx2cn3lw2b7v22"; sha256 = "0rs9bxxrw4wscf4a8yl776a8g880m5gcm75q06yx2cn3lw2b7v22";
}; };

View File

@ -73,14 +73,14 @@ in {
application = mkSweetHome3D rec { application = mkSweetHome3D rec {
pname = stdenv.lib.toLower module + "-application"; pname = stdenv.lib.toLower module + "-application";
version = "6.2"; version = "6.3";
module = "SweetHome3D"; module = "SweetHome3D";
description = "Design and visualize your future home"; description = "Design and visualize your future home";
license = stdenv.lib.licenses.gpl2Plus; license = stdenv.lib.licenses.gpl2Plus;
src = fetchsvn { src = fetchsvn {
url = "https://svn.code.sf.net/p/sweethome3d/code/tags/V_" + d2u version + "/SweetHome3D/"; url = "https://svn.code.sf.net/p/sweethome3d/code/tags/V_" + d2u version + "/SweetHome3D/";
sha256 = "0a514a1zmipykvawil46v826ivkw9c00vdkyggyl6m41giay15zf"; sha256 = "1c13g0f73jgbzmjhdm9knqq1kh3vdl04zl3xlp30g9a1n0jkr38i";
rev = "6822"; rev = "6896";
}; };
desktopName = "Sweet Home 3D"; desktopName = "Sweet Home 3D";
icons = { icons = {

View File

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, python3Packages }: { stdenv, fetchFromGitHub, python3Packages }:
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
version = "0.25.2"; version = "0.26.0";
name = "toot-${version}"; name = "toot-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ihabunek"; owner = "ihabunek";
repo = "toot"; repo = "toot";
rev = version; rev = version;
sha256 = "0g18x8pbwhk2d3aphah6dqqbhz62k48pwx63flsnqd4brccd0jkh"; sha256 = "146jj83jixahgxwh12bbkfvci2wrz398h5x01kgppdy59m4pa4pl";
}; };
checkInputs = with python3Packages; [ pytest ]; checkInputs = with python3Packages; [ pytest ];

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "xastir"; pname = "xastir";
version = "2.1.4"; version = "2.1.6";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = "Release-${version}"; rev = "Release-${version}";
sha256 = "14f908jy5jzvgm1h1sr47hjqjq3q2nq91byhimk84kj044fn21w9"; sha256 = "sha256-IdlRScAy7tCyVCElCceY4PvqPXWfZZ35f+MwCo3nO3s=";
}; };
buildInputs = [ buildInputs = [

View File

@ -4,13 +4,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "xmrig"; pname = "xmrig";
version = "5.10.0"; version = "5.11.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "xmrig"; owner = "xmrig";
repo = "xmrig"; repo = "xmrig";
rev = "v${version}"; rev = "v${version}";
sha256 = "06nxhrb5vnlq3sxybiyzdpbv6ah1zam7r07s1c31sv37znlb77d5"; sha256 = "04wsz7hcmzm5dv9q1wb26nvcz5gxdcgkf00cp5bpbr3y9vc6dyz6";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -2,7 +2,7 @@
let let
pname = "Sylk"; pname = "Sylk";
version = "2.6.1"; version = "2.7.0";
in in
appimageTools.wrapType2 rec { appimageTools.wrapType2 rec {
@ -10,7 +10,7 @@ appimageTools.wrapType2 rec {
src = fetchurl { src = fetchurl {
url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage"; url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage";
hash = "sha256:0417qk925k7p3fiq1zha9al86jrz6mqspda7mi3h9blpbyvlcy7w"; hash = "sha256:0xjg9j69yj06ys8229x6mwsjlk3mvxi8gnr2kymx0vhhg1zvqi1k";
}; };
profile = '' profile = ''

View File

@ -19,13 +19,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ephemeral"; pname = "ephemeral";
version = "6.3.3"; version = "6.4.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cassidyjames"; owner = "cassidyjames";
repo = "ephemeral"; repo = "ephemeral";
rev = version; rev = version;
sha256 = "093bqc40p4s8jc1s5rg49363x24vnwwjayvgzmi4xag28f1x6kn8"; sha256 = "1lzcwaczh601kwbx7fzg32nrzlg67asby7p86qy10qz86xf4g608";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "atlantis"; pname = "atlantis";
version = "0.11.1"; version = "0.12.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "runatlantis"; owner = "runatlantis";
repo = "atlantis"; repo = "atlantis";
rev = "v${version}"; rev = "v${version}";
sha256 = "1ylk6n13ln6yaq4nc4n7fm00wfiyqi2x33sca5avzsvd1b387kk6"; sha256 = "16zz4xwpqipdmszbz93xxw31hbh7s8pfa9dm64ybyni7wc4lvdy6";
}; };
modSha256 = "1bhplk3p780llpj9l0fwcyli74879968d6j582mvjwvf2winbqzq"; modSha256 = "18f7cf61yn5jkji5a4v6xw6c7xl40nj32n5w34xmcmszzf64cwkn";
subPackages = [ "." ]; subPackages = [ "." ];

View File

@ -34,6 +34,6 @@ stdenv.mkDerivation rec {
description = "Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules"; description = "Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules";
maintainers = with maintainers; [ offline ]; maintainers = with maintainers; [ offline ];
platforms = platforms.unix; platforms = platforms.unix;
broken = true; # doesn't build http://hydra.nixos.org/build/25768319 broken = true; # doesn't build https://hydra.nixos.org/build/25768319
}; };
} }

View File

@ -1,6 +1,6 @@
{ lib, buildGoModule, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }: { lib, buildGoModule, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }:
let version = "0.106.3"; in let version = "0.114.0"; in
buildGoModule { buildGoModule {
pname = "helmfile"; pname = "helmfile";
@ -10,12 +10,12 @@ buildGoModule {
owner = "roboll"; owner = "roboll";
repo = "helmfile"; repo = "helmfile";
rev = "v${version}"; rev = "v${version}";
sha256 = "0pwkkgdcj9vx6nk574iaqwn074qfpgqd1c44d3kr3xdbac89yfyf"; sha256 = "0486wcfizi8xljr29mznc4p11ggz4rvk5n53qvb30f7ry4ncc8n5";
}; };
goPackagePath = "github.com/roboll/helmfile"; goPackagePath = "github.com/roboll/helmfile";
modSha256 = "1yv2b44qac0rms66v0qg13wsga0di6hwxa4dh2l0b1xvaf75ysay"; modSha256 = "0j7w12rrnsv2h5v0bqh6sjq9anm51zs0p3nzlhwsksw9c98r9avk";
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View File

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "k9s"; pname = "k9s";
version = "0.18.1"; version = "0.19.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "derailed"; owner = "derailed";
repo = "k9s"; repo = "k9s";
rev = "v${version}"; rev = "v${version}";
sha256 = "0a5x4yamvx2qlwngfvainbhplwp0hqwgvdqlj2jbrbz4hfhr1l59"; sha256 = "1ya3lrw31pxd1rxzf88l5hzilaxwrng1a3ibawgn57my333hrmf6";
}; };
buildFlagsArray = '' buildFlagsArray = ''
@ -18,7 +18,7 @@ buildGoModule rec {
-X github.com/derailed/k9s/cmd.commit=${src.rev} -X github.com/derailed/k9s/cmd.commit=${src.rev}
''; '';
modSha256 = "0wpf6iyq6p3a8azdkn17gdp01wq9khyzr1bab6qgvsnsnhnjzcky"; modSha256 = "11jxyzajlk6b5j19sg1kjr7qdzpxkwjwrvyhx9mwy6jb5sgqbzv8";
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Kubernetes CLI To Manage Your Clusters In Style."; description = "Kubernetes CLI To Manage Your Clusters In Style.";

View File

@ -2,11 +2,11 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "luigi"; pname = "luigi";
version = "2.8.12"; version = "2.8.13";
src = python3Packages.fetchPypi { src = python3Packages.fetchPypi {
inherit pname version; inherit pname version;
sha256 = "1p83mxqs7w5v27a58ps7wji5mlyfz66cpkbyrndix0pv9hdyzpxn"; sha256 = "0x14549iwj7r1knc0hmic9ny9hp960yjjqi4mxl78jb69gd3bhmf";
}; };
propagatedBuildInputs = with python3Packages; [ dateutil tornado_4 python-daemon boto3 ]; propagatedBuildInputs = with python3Packages; [ dateutil tornado_4 python-daemon boto3 ];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rssguard"; pname = "rssguard";
version = "3.5.9"; version = "3.6.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "martinrotter"; owner = "martinrotter";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0dvjcazvrgxfxg1gvznxj8kx569v4ivns0brq00cn2yxyd4wx43s"; sha256 = "0nlvhcvd3bbvd3dapqix7h29pchbd9gv5n3hmrig9yi98yv8q53r";
}; };
buildInputs = [ qtwebengine qttools ]; buildInputs = [ qtwebengine qttools ];

View File

@ -5,16 +5,16 @@
buildGoModule rec { buildGoModule rec {
pname = "gmailctl"; pname = "gmailctl";
version = "0.6.0"; version = "0.7.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mbrt"; owner = "mbrt";
repo = "gmailctl"; repo = "gmailctl";
rev = "v${version}"; rev = "v${version}";
sha256 = "0g581gdkib7bj86blpm8skjvbnivmzh9ddikxai9hr5qq231j1pb"; sha256 = "08q4yjfbwlldirf3j5db18l8kn6sf288wd364s50jlcx2ka8w50j";
}; };
modSha256 = "0pv3lhzl96ygzh9y01hi9klrrk403ii92imr9yrbimaf7rsvyvjp"; modSha256 = "1c7dk6l8lkq2j04cp5g97hwkwfmmyn5r0vpr5zpavvalxgjidsf4";
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Declarative configuration for Gmail filters"; description = "Declarative configuration for Gmail filters";

View File

@ -7,7 +7,7 @@
, AVFoundation ? null }: , AVFoundation ? null }:
let let
version = "1.16.3"; version = "1.17.2";
rev = "v${version}"; rev = "v${version}";
in mkDerivation { in mkDerivation {
@ -17,7 +17,7 @@ in mkDerivation {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "qTox"; owner = "qTox";
repo = "qTox"; repo = "qTox";
sha256 = "0qd4nvbrjnnfnk8ghsxq3cd1n1qf1ck5zg6ib11ij2pg03s146pa"; sha256 = "04pbv1zsxy8dph2v0r9xc8lcm5g6604pwnppi3la5w46ihbwxlb9";
inherit rev; inherit rev;
}; };

View File

@ -2,7 +2,7 @@
"name": "riot-web", "name": "riot-web",
"productName": "Riot", "productName": "Riot",
"main": "src/electron-main.js", "main": "src/electron-main.js",
"version": "1.5.15", "version": "1.6.0",
"description": "A feature-rich client for Matrix.org", "description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.", "author": "New Vector Ltd.",
"dependencies": { "dependencies": {

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