| @@ -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. --> | |||
| - [ ] 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) | |||
| - [ ] NixOS | |||
| - [ ] macOS | |||
| @@ -111,7 +111,7 @@ | |||
| </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 | |||
| 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> | |||
| </listitem> | |||
| <listitem> | |||
| @@ -167,7 +167,7 @@ parameters that the SDK composition function (the function shown in the | |||
| previous section) supports. | |||
| 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 | |||
| installed on any Android device with a web browser by navigating to the build | |||
| result page. | |||
| @@ -21,6 +21,7 @@ | |||
| <xi:include href="node.section.xml" /> | |||
| <xi:include href="ocaml.xml" /> | |||
| <xi:include href="perl.xml" /> | |||
| <xi:include href="php.section.xml" /> | |||
| <xi:include href="python.section.xml" /> | |||
| <xi:include href="qt.xml" /> | |||
| <xi:include href="r.section.xml" /> | |||
| @@ -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 | |||
| 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 | |||
| do wireless ad-hoc installations of enterprise IPAs on iOS devices through | |||
| Hydra. | |||
| @@ -1,10 +1,8 @@ | |||
| # PHP | |||
| # PHP {#sec-php} | |||
| ## User Guide | |||
| ## User Guide {#ssec-php-user-guide} | |||
| ### Using PHP | |||
| #### Overview | |||
| ### Overview {#ssec-php-user-guide-overview} | |||
| Several versions of PHP are available on Nix, each of which having a | |||
| 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.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 | |||
| `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`: | |||
| ```nix | |||
| php.withExtensions ({ all, ... }: with all; [ opcache imagick ]) | |||
| php.withExtensions ({ all, ... }: with all; [ imagick opcache ]) | |||
| ``` | |||
| `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 | |||
| follows: | |||
| ```nix | |||
| let | |||
| myPhp = php.withExtensions ({ all, ... }: with all; [ opcache imagick ]); | |||
| myPhp = php.withExtensions ({ all, ... }: with all; [ imagick opcache ]); | |||
| in { | |||
| 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 | |||
| with the extensions `imagick` and `opcache` enabled: | |||
| @@ -121,3 +119,19 @@ with the extensions `imagick` and `opcache` enabled: | |||
| ```sh | |||
| 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 | |||
| ``` | |||
| @@ -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) | |||
| 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 | |||
| `x86_64-linux`, `i686-linux` and `x86_64-darwin`. | |||
| The binaries are made available via a [binary cache](https://cache.nixos.org). | |||
| @@ -286,7 +286,7 @@ export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</prog | |||
| <note> | |||
| <para> | |||
| 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> | |||
| </note> | |||
| @@ -436,7 +436,7 @@ stdenv.mkDerivation { | |||
| <listitem> | |||
| <para> | |||
| Distribution files have been moved to <link | |||
| xlink:href="http://nixos.org/" />. | |||
| xlink:href="https://nixos.org/" />. | |||
| </para> | |||
| </listitem> | |||
| <listitem> | |||
| @@ -758,7 +758,7 @@ | |||
| name = "Jonathan Glines"; | |||
| }; | |||
| avaq = { | |||
| email = "avaq+nixos@xs4all.nl"; | |||
| email = "nixpkgs@account.avaq.it"; | |||
| github = "avaq"; | |||
| githubId = 1217745; | |||
| name = "Aldwin Vlasblom"; | |||
| @@ -4084,6 +4084,12 @@ | |||
| githubId = 6346418; | |||
| name = "Kolby Crouch"; | |||
| }; | |||
| kolloch = { | |||
| email = "info@eigenvalue.net"; | |||
| github = "kolloch"; | |||
| githubId = 339354; | |||
| name = "Peter Kolloch"; | |||
| }; | |||
| konimex = { | |||
| email = "herdiansyah@netc.eu"; | |||
| github = "konimex"; | |||
| @@ -4423,6 +4429,16 @@ | |||
| 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 = { | |||
| email = "luis.nixos@gmail.com"; | |||
| github = "Luis-Hebendanz"; | |||
| @@ -7130,6 +7146,12 @@ | |||
| githubId = 602439; | |||
| name = "Serguei Narojnyi"; | |||
| }; | |||
| snicket2100 = { | |||
| email = "57048005+snicket2100@users.noreply.github.com"; | |||
| github = "snicket2100"; | |||
| githubId = 57048005; | |||
| name = "snicket2100"; | |||
| }; | |||
| snyh = { | |||
| email = "snyh@snyh.org"; | |||
| github = "snyh"; | |||
| @@ -79,7 +79,7 @@ def cli(jobset): | |||
| 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 | |||
| click.echo(click.style( | |||
| @@ -2,4 +2,4 @@ | |||
| NixOS is a Linux distribution based on the purely functional package | |||
| 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. | |||
| @@ -11,7 +11,7 @@ | |||
| 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 | |||
| 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: | |||
| <screen> | |||
| <prompt>$ </prompt>git clone https://github.com/NixOS/nixpkgs | |||
| @@ -14,7 +14,7 @@ | |||
| when managing complex systems. The syntax and semantics of the Nix language | |||
| are fully described in the | |||
| <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 | |||
| constructs useful in NixOS configuration files. | |||
| </para> | |||
| @@ -10,7 +10,7 @@ | |||
| expression language. It’s not complete. In particular, there are many other | |||
| built-in functions. See the | |||
| <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. | |||
| </para> | |||
| @@ -57,7 +57,7 @@ | |||
| <listitem> | |||
| <para> | |||
| <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> | |||
| </listitem> | |||
| <listitem> | |||
| @@ -37,7 +37,7 @@ | |||
| imports = | |||
| [ # 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 | |||
| <nixos-unstable/nixos/modules/services/databases/postgresql.nix> | |||
| ]; | |||
| @@ -7,7 +7,7 @@ | |||
| <para> | |||
| NixOS ISO images can be downloaded from the | |||
| <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 | |||
| 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 | |||
| @@ -26,7 +26,7 @@ xlink:href="https://nixos.wiki/wiki/NixOS_Installation_Guide#Making_the_installa | |||
| <para> | |||
| Using virtual appliances in Open Virtualization Format (OVF) that can be | |||
| 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>. | |||
| </para> | |||
| </listitem> | |||
| @@ -49,7 +49,7 @@ | |||
| <para> | |||
| Nix has been updated to 1.7 | |||
| (<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> | |||
| </listitem> | |||
| <listitem> | |||
| @@ -22,7 +22,7 @@ | |||
| in excess of 8,000 Haskell packages. Detailed instructions on how to use | |||
| that infrastructure can be found in the | |||
| <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 | |||
| release may find helpful information below, in the list of | |||
| backwards-incompatible changes. Furthermore, we distribute 51(!) additional | |||
| @@ -555,7 +555,7 @@ nix-env -f "<nixpkgs>" -iA haskellPackages.pandoc | |||
| the compiler now is the <literal>haskellPackages.ghcWithPackages</literal> | |||
| function. The | |||
| <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 | |||
| this subject. | |||
| </para> | |||
| @@ -54,7 +54,7 @@ | |||
| xlink:href="https://reproducible-builds.org/specs/source-date-epoch/">SOURCE_DATE_EPOCH</envar> | |||
| to a deterministic value, and Nix has | |||
| <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 ongoing project, the goal of exact reproducibility is to allow binaries | |||
| to be verified independently (e.g., a user might only trust binaries that | |||
| @@ -55,6 +55,12 @@ | |||
| The new <varname>virtualisation.containers</varname> module manages configuration shared by the CRI-O and Podman modules. | |||
| </para> | |||
| </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> | |||
| </section> | |||
| @@ -984,9 +984,9 @@ | |||
| ./virtualisation/container-config.nix | |||
| ./virtualisation/containers.nix | |||
| ./virtualisation/nixos-containers.nix | |||
| ./virtualisation/oci-containers.nix | |||
| ./virtualisation/cri-o.nix | |||
| ./virtualisation/docker.nix | |||
| ./virtualisation/docker-containers.nix | |||
| ./virtualisation/ecs-agent.nix | |||
| ./virtualisation/libvirtd.nix | |||
| ./virtualisation/lxc.nix | |||
| @@ -75,7 +75,7 @@ in | |||
| }; | |||
| link = mkOption { | |||
| default = "http://planet.nixos.org"; | |||
| default = "https://planet.nixos.org"; | |||
| type = types.str; | |||
| description = '' | |||
| Link to the main page. | |||
| @@ -87,19 +87,19 @@ let | |||
| default = {}; | |||
| example = literalExample '' | |||
| { | |||
| "example.org" = "/srv/http/nginx"; | |||
| "example.org" = null; | |||
| "mydomain.org" = null; | |||
| } | |||
| ''; | |||
| description = '' | |||
| A list of extra domain names, which are included in the one certificate to be issued, with their | |||
| own server roots if needed. | |||
| A list of extra domain names, which are included in the one certificate to be issued. | |||
| Setting a distinct server root is deprecated and not functional in 20.03+ | |||
| ''; | |||
| }; | |||
| keyType = mkOption { | |||
| type = types.str; | |||
| default = "ec384"; | |||
| default = "ec256"; | |||
| description = '' | |||
| Key type to use for private keys. | |||
| For an up to date list of supported values check the --key-type option | |||
| @@ -250,7 +250,7 @@ in | |||
| "example.com" = { | |||
| webroot = "/var/www/challenges/"; | |||
| 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" = { | |||
| webroot = "/var/www/challenges/"; | |||
| @@ -6,92 +6,249 @@ | |||
| <title>SSL/TLS Certificates with ACME</title> | |||
| <para> | |||
| NixOS supports automatic domain validation & certificate retrieval and | |||
| renewal using the ACME protocol. This is currently only implemented by and | |||
| for Let's Encrypt. The alternative ACME client <literal>lego</literal> is | |||
| used under the hood. | |||
| renewal using the ACME protocol. Any provider can be used, but by default | |||
| NixOS uses Let's Encrypt. The alternative ACME client <literal>lego</literal> | |||
| 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> | |||
| <section xml:id="module-security-acme-prerequisites"> | |||
| <title>Prerequisites</title> | |||
| <para> | |||
| You need to have a running HTTP server for verification. The server must | |||
| have a webroot defined that can serve | |||
| To use the ACME module, you must accept the provider's terms of service | |||
| 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 | |||
| writeable by the user that will run the ACME client. | |||
| writeable by the user that will run the ACME client. For DNS, you must | |||
| set up credentials with your provider/server for use with lego. | |||
| </para> | |||
| </section> | |||
| <section xml:id="module-security-acme-nginx"> | |||
| <title>Using ACME certificates in Nginx</title> | |||
| <para> | |||
| For instance, this generic snippet could be used for Nginx: | |||
| NixOS supports fetching ACME certificates for you by setting | |||
| <literal><link linkend="opt-services.nginx.virtualHosts._name_.enableACME">enableACME</link> | |||
| = true;</literal> in a virtualHost config. We first create self-signed | |||
| placeholder certificates in place of the real ACME certs. The placeholder | |||
| certs are overwritten when the ACME certs arrive. For | |||
| <literal>foo.example.com</literal> the config would look like. | |||
| </para> | |||
| <programlisting> | |||
| http { | |||
| server { | |||
| server_name _; | |||
| listen 80; | |||
| listen [::]:80; | |||
| location /.well-known/acme-challenge { | |||
| root /var/www/challenges; | |||
| } | |||
| <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> = { | |||
| "foo.example.com" = { | |||
| <link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</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"; | |||
| }; | |||
| }; | |||
| location / { | |||
| return 301 https://$host$request_uri; | |||
| } | |||
| } | |||
| # 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."/" = { | |||
| <link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.root">root</link> = "/var/www"; | |||
| }; | |||
| }; | |||
| }; | |||
| } | |||
| </programlisting> | |||
| </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>Configuring</title> | |||
| <title>Manual configuration of HTTP-01 validation</title> | |||
| <para> | |||
| To enable ACME certificate retrieval & renewal for a certificate for | |||
| <literal>foo.example.com</literal>, add the following in your | |||
| <filename>configuration.nix</filename>: | |||
| 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/www/challenges"; | |||
| <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> | |||
| <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-nginx"> | |||
| <title>Using ACME certificates in Nginx</title> | |||
| <section xml:id="module-security-acme-config-dns"> | |||
| <title>Configuring ACME for DNS validation</title> | |||
| <para> | |||
| NixOS supports fetching ACME certificates for you by setting | |||
| <literal><link linkend="opt-services.nginx.virtualHosts._name_.enableACME">enableACME</link> | |||
| = true;</literal> in a virtualHost config. We first create self-signed | |||
| placeholder certificates in place of the real ACME certs. The placeholder | |||
| certs are overwritten when the ACME certs arrive. For | |||
| <literal>foo.example.com</literal> the config would look like. | |||
| 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.nginx = { | |||
| <link linkend="opt-services.nginx.enable">enable = true;</link> | |||
| <link linkend="opt-services.nginx.virtualHosts">virtualHosts</link> = { | |||
| "foo.example.com" = { | |||
| <link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true; | |||
| <link linkend="opt-services.nginx.virtualHosts._name_.enableACME">enableACME</link> = true; | |||
| locations."/" = { | |||
| <link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.root">root</link> = "/var/www"; | |||
| }; | |||
| }; | |||
| }; | |||
| 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 > /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 > /var/lib/secrets/certs.secret << 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 & | |||
| journalctl -fu acme-example.com.service</literal> and watching its log output. | |||
| </para> | |||
| </section> | |||
| </chapter> | |||
| @@ -372,6 +372,41 @@ in | |||
| and <citerefentry><refentrytitle>zfs</refentrytitle><manvolnum>8</manvolnum></citerefentry> | |||
| 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. | |||
| ''; | |||
| }; | |||
| }; | |||
| @@ -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 | |||
| yourself, you can do so by adding it to your | |||
| <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>): | |||
| <example xml:id="module-services-emacs-config-nix"> | |||
| <title>Custom Emacs in <filename>~/.config/nixpkgs/config.nix</filename></title> | |||
| @@ -14,53 +14,9 @@ let | |||
| RUN_USER = ${cfg.user} | |||
| RUN_MODE = prod | |||
| [database] | |||
| 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] | |||
| 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} | |||
| ${generators.toINI {} cfg.settings} | |||
| ${optionalString (cfg.extraConfig != null) cfg.extraConfig} | |||
| ''; | |||
| 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 { | |||
| type = types.str; | |||
| default = ""; | |||
| type = with types; nullOr str; | |||
| default = null; | |||
| 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) { | |||
| enable = mkDefault true; | |||
| @@ -435,9 +474,12 @@ in | |||
| users.groups.gitea = {}; | |||
| warnings = optional (cfg.database.password != "") | |||
| ''config.services.gitea.database.password will be stored as plaintext | |||
| in the Nix store. Use database.passwordFile instead.''; | |||
| warnings = | |||
| optional (cfg.database.password != "") '' | |||
| 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. | |||
| services.gitea.database.passwordFile = | |||
| @@ -283,7 +283,7 @@ in | |||
| trustedBinaryCaches = mkOption { | |||
| type = types.listOf types.str; | |||
| default = [ ]; | |||
| example = [ "http://hydra.nixos.org/" ]; | |||
| example = [ "https://hydra.nixos.org/" ]; | |||
| description = '' | |||
| List of binary cache URLs that non-root users can use (in | |||
| addition to those specified using | |||
| @@ -17,9 +17,9 @@ let | |||
| cfgUpdate = pkgs.writeText "octoprint-config.yaml" (builtins.toJSON fullConfig); | |||
| pluginsEnv = pkgs.python.buildEnv.override { | |||
| extraLibs = cfg.plugins pkgs.octoprint-plugins; | |||
| }; | |||
| pluginsEnv = package.python.withPackages (ps: [ps.octoprint] ++ (cfg.plugins ps)); | |||
| package = pkgs.octoprint; | |||
| in | |||
| { | |||
| @@ -106,7 +106,6 @@ in | |||
| wantedBy = [ "multi-user.target" ]; | |||
| after = [ "network.target" ]; | |||
| path = [ pluginsEnv ]; | |||
| environment.PYTHONPATH = makeSearchPathOutput "lib" pkgs.python.sitePackages [ pluginsEnv ]; | |||
| preStart = '' | |||
| if [ -e "${cfg.stateDir}/config.yaml" ]; then | |||
| @@ -119,7 +118,7 @@ in | |||
| ''; | |||
| serviceConfig = { | |||
| ExecStart = "${pkgs.octoprint}/bin/octoprint serve -b ${cfg.stateDir}"; | |||
| ExecStart = "${pluginsEnv}/bin/octoprint serve -b ${cfg.stateDir}"; | |||
| User = cfg.user; | |||
| Group = cfg.group; | |||
| }; | |||
| @@ -382,6 +382,11 @@ let | |||
| default = "en"; | |||
| 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} | |||
| ${ cfg.extraConfig } | |||
| ${lib.concatMapStrings (muc: '' | |||
| Component ${toLua muc.domain} "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_history_length = ${toLua muc.roomDefaultHistoryLength} | |||
| muc_room_default_language = ${toLua muc.roomDefaultLanguage} | |||
| '') cfg.muc} | |||
| ${ muc.extraConfig } | |||
| '') cfg.muc} | |||
| ${ lib.optionalString (cfg.uploadHttp != null) '' | |||
| Component ${toLua cfg.uploadHttp.domain} "http_upload" | |||
| @@ -820,8 +827,6 @@ in | |||
| http_upload_path = ${toLua cfg.uploadHttp.httpUploadPath} | |||
| ''} | |||
| ${ cfg.extraConfig } | |||
| ${ lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: '' | |||
| VirtualHost "${v.domain}" | |||
| enabled = ${boolToString v.enabled}; | |||
| @@ -142,7 +142,7 @@ in { | |||
| description = '' | |||
| Extra packages available at runtime to enable Deluge's plugins. For example, | |||
| 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`. | |||
| services.deluge.extraPackages = with pkgs; [ unzip gnutar xz p7zip bzip2 ]; | |||
| services.deluge.extraPackages = with pkgs; [ unzip gnutar xz bzip2 ]; | |||
| systemd.tmpfiles.rules = [ | |||
| "d '${cfg.dataDir}' 0770 ${cfg.user} ${cfg.group}" | |||
| @@ -83,6 +83,12 @@ in | |||
| Authorized keys for the root user on initrd. | |||
| ''; | |||
| }; | |||
| extraConfig = mkOption { | |||
| type = types.lines; | |||
| default = ""; | |||
| description = "Verbatim contents of <filename>sshd_config</filename>."; | |||
| }; | |||
| }; | |||
| imports = | |||
| @@ -126,6 +132,8 @@ in | |||
| '' else '' | |||
| UseDNS no | |||
| ''} | |||
| ${cfg.extraConfig} | |||
| ''; | |||
| in mkIf (config.boot.initrd.network.enable && cfg.enable) { | |||
| assertions = [ | |||
| @@ -4,6 +4,11 @@ with lib; | |||
| let | |||
| 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 | |||
| { | |||
| imports = [ | |||
| @@ -45,9 +50,9 @@ in | |||
| config = mkIf cfg.enable { | |||
| environment.systemPackages = with pkgs; | |||
| [ 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 = '' | |||
| [crio] | |||
| storage_driver = "${cfg.storageDriver}" | |||
| @@ -66,23 +71,7 @@ in | |||
| manage_network_ns_lifecycle = true | |||
| ''; | |||
| environment.etc."cni/net.d/20-cri-o-bridge.conf".text = '' | |||
| { | |||
| "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" } | |||
| ] | |||
| } | |||
| } | |||
| ''; | |||
| environment.etc."cni/net.d/10-crio-bridge.conf".source = copyFile "${pkgs.cri-o.src}/contrib/cni/10-crio-bridge.conf"; | |||
| # Enable common /etc/containers configuration | |||
| virtualisation.containers.enable = true; | |||
| @@ -1,17 +1,20 @@ | |||
| { config, lib, pkgs, ... }: | |||
| { config, options, lib, pkgs, ... }: | |||
| with lib; | |||
| 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 = { | |||
| image = mkOption { | |||
| type = with types; str; | |||
| description = "Docker image to run."; | |||
| description = "OCI image to run."; | |||
| example = "library/hello-world"; | |||
| }; | |||
| @@ -58,18 +61,19 @@ let | |||
| log-driver = mkOption { | |||
| type = types.str; | |||
| default = "none"; | |||
| default = "journald"; | |||
| description = '' | |||
| Logging driver for the container. The default of | |||
| <literal>"none"</literal> means that the container's logs will be | |||
| handled as part of the systemd unit. Setting this to | |||
| <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 | |||
| <link xlink:href="https://docs.docker.com/engine/reference/run/#logging-drivers---log-driver"> | |||
| Docker engine documentation</link> | |||
| <literal>"journald"</literal> means that the container's logs will be | |||
| handled as part of the systemd unit. | |||
| For more details and a full list of logging drivers, refer to respective backends documentation. | |||
| 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 = '' | |||
| 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 '' | |||
| services.docker-containers = { | |||
| virtualisation.oci-containers = { | |||
| node1 = {}; | |||
| node2 = { | |||
| dependsOn = [ "node1" ]; | |||
| @@ -184,10 +188,10 @@ let | |||
| ''; | |||
| }; | |||
| extraDockerOptions = mkOption { | |||
| extraOptions = mkOption { | |||
| type = with types; listOf str; | |||
| default = []; | |||
| description = "Extra options for <command>docker run</command>."; | |||
| description = "Extra options for <command>${defaultBackend} run</command>."; | |||
| example = literalExample '' | |||
| ["--network=host"] | |||
| ''; | |||
| @@ -205,24 +209,31 @@ let | |||
| }; | |||
| mkService = name: container: let | |||
| mkAfter = map (x: "docker-${x}.service") container.dependsOn; | |||
| in rec { | |||
| dependsOn = map (x: "${cfg.backend}-${x}.service") container.dependsOn; | |||
| in { | |||
| wantedBy = [] ++ optional (container.autoStart) "multi-user.target"; | |||
| after = [ "docker.service" "docker.socket" ] ++ mkAfter; | |||
| requires = after; | |||
| path = [ pkgs.docker ]; | |||
| after = lib.optionals (cfg.backend == "docker") [ "docker.service" "docker.socket" ] ++ dependsOn; | |||
| requires = dependsOn; | |||
| 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 = '' | |||
| docker rm -f ${name} || true | |||
| ${cfg.backend} rm -f ${name} || true | |||
| ${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 = { | |||
| StandardOutput = "null"; | |||
| StandardError = "null"; | |||
| ExecStart = concatStringsSep " \\\n " ([ | |||
| "${pkgs.docker}/bin/docker run" | |||
| "${config.system.path}/bin/${cfg.backend} run" | |||
| "--rm" | |||
| "--name=${name}" | |||
| "--log-driver=${container.log-driver}" | |||
| @@ -233,12 +244,12 @@ let | |||
| ++ optional (container.user != null) "-u ${escapeShellArg container.user}" | |||
| ++ map (v: "-v ${escapeShellArg v}") container.volumes | |||
| ++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}" | |||
| ++ map escapeShellArg container.extraDockerOptions | |||
| ++ map escapeShellArg container.extraOptions | |||
| ++ [container.image] | |||
| ++ 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 | |||
| ### containers. Some containers may respond well to SIGHUP sent to their | |||
| @@ -263,19 +274,50 @@ let | |||
| }; | |||
| 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.virtualisation.oci-containers = { | |||
| 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."; | |||
| }; | |||
| options.docker-containers = mkOption { | |||
| default = {}; | |||
| type = types.attrsOf (types.submodule dockerContainer); | |||
| description = "Docker containers to run as systemd services."; | |||
| }; | |||
| config = mkIf (cfg != {}) { | |||
| systemd.services = mapAttrs' (n: v: nameValuePair "docker-${n}" (mkService n v)) cfg; | |||
| virtualisation.docker.enable = true; | |||
| containers = mkOption { | |||
| default = {}; | |||
| 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; | |||
| }) | |||
| ]); | |||
| } | |||
| @@ -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 { | |||
| environment.systemPackages = [ podmanPackage ] | |||
| environment.systemPackages = [ cfg.package ] | |||
| ++ lib.optional cfg.dockerCompat dockerCompat; | |||
| environment.etc."containers/libpod.conf".text = '' | |||
| @@ -70,7 +70,7 @@ in | |||
| dhparams = handleTest ./dhparams.nix {}; | |||
| dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.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-preloader = handleTestOn ["x86_64-linux"] ./docker-preloader.nix {}; | |||
| docker-registry = handleTest ./docker-registry.nix {}; | |||
| @@ -37,7 +37,7 @@ mapAttrs (channel: chromiumPkg: makeTest rec { | |||
| </head> | |||
| <body onload="javascript:document.title='startup done'"> | |||
| <img src="file://${pkgs.fetchurl { | |||
| url = "http://nixos.org/logo/nixos-hex.svg"; | |||
| url = "https://nixos.org/logo/nixos-hex.svg"; | |||
| sha256 = "07ymq6nw8kc22m7kzxjxldhiq8gzmc7f45kq2bvhbdm0w5s112s4"; | |||
| }}" /> | |||
| </body> | |||
| @@ -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") | |||
| ''; | |||
| }) | |||
| @@ -108,7 +108,7 @@ in { | |||
| inherit image; | |||
| sshPublicKey = snakeOilPublicKey; | |||
| # ### http://nixos.org/channels/nixos-unstable nixos | |||
| # ### https://nixos.org/channels/nixos-unstable nixos | |||
| userData = '' | |||
| { pkgs, ... }: | |||
| @@ -44,7 +44,7 @@ in { | |||
| # Create a test bucket on the server | |||
| 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("${minioPythonScript}") | |||
| @@ -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" | |||
| ] | |||
| @@ -3,7 +3,7 @@ import ./make-test-python.nix ({ pkgs, ... }: | |||
| let | |||
| 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"; | |||
| }; | |||
| @@ -6,6 +6,11 @@ import ../make-test-python.nix { | |||
| environment.systemPackages = [ | |||
| (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, ... }: { | |||
| nixpkgs.overlays = [ | |||
| @@ -18,6 +23,8 @@ import ../make-test-python.nix { | |||
| ]; | |||
| networking.extraHosts = '' | |||
| ${config.networking.primaryIPAddress} example.com | |||
| ${config.networking.primaryIPAddress} conference.example.com | |||
| ${config.networking.primaryIPAddress} uploads.example.com | |||
| ''; | |||
| networking.firewall.enable = false; | |||
| services.prosody = { | |||
| @@ -39,6 +46,14 @@ import ../make-test-python.nix { | |||
| domain = "example.com"; | |||
| enabled = true; | |||
| }; | |||
| muc = [ | |||
| { | |||
| domain = "conference.example.com"; | |||
| } | |||
| ]; | |||
| uploadHttp = { | |||
| domain = "uploads.example.com"; | |||
| }; | |||
| }; | |||
| }; | |||
| mysql = { config, pkgs, ... }: { | |||
| @@ -3,12 +3,12 @@ | |||
| }: | |||
| stdenv.mkDerivation rec { | |||
| version = "1.4.0.0"; | |||
| version = "1.4.0.1"; | |||
| pname = "chuck"; | |||
| src = fetchurl { | |||
| url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz"; | |||
| sha256 = "1b17rsf7bv45gfhyhfmpz9d4rkxn24c0m2hgmpfjz3nlp0rf7bic"; | |||
| sha256 = "1m0fhndbqaf0lii1asyc50c66bv55ib6mbnm8fzk5qc5ncs0r8hi"; | |||
| }; | |||
| nativeBuildInputs = [ flex bison which ]; | |||
| @@ -7,13 +7,13 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "ft2-clone"; | |||
| version = "1.15"; | |||
| version = "1.23"; | |||
| src = fetchFromGitHub { | |||
| owner = "8bitbubsy"; | |||
| repo = "ft2-clone"; | |||
| rev = "v${version}"; | |||
| sha256 = "19xgdaij71gpvq216zjlp60zmfdl2a8kf8sc3bpk8a4d4xh4n151"; | |||
| sha256 = "03prdifc2nz7smmzdy19flp33m927vb7j5bhdc46gak753pikw7d"; | |||
| }; | |||
| nativeBuildInputs = [ cmake ]; | |||
| @@ -5,14 +5,14 @@ | |||
| python3Packages.buildPythonApplication rec { | |||
| pname = "gpodder"; | |||
| version = "3.10.13"; | |||
| version = "3.10.15"; | |||
| format = "other"; | |||
| src = fetchFromGitHub { | |||
| owner = pname; | |||
| repo = pname; | |||
| rev = version; | |||
| sha256 = "1h542syaxsx1hslfzlk3fx1nbp190zjw35kigw7a1kx1jwvfwapg"; | |||
| sha256 = "0ghbanj142n0hgydzfjmnkdgri2kswsjal3mn10c723kih4ir4yr"; | |||
| }; | |||
| patches = [ | |||
| @@ -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; | |||
| }; | |||
| } | |||
| @@ -7,13 +7,13 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "pt2-clone"; | |||
| version = "1.07"; | |||
| version = "1.12"; | |||
| src = fetchFromGitHub { | |||
| owner = "8bitbubsy"; | |||
| repo = "pt2-clone"; | |||
| rev = "v${version}"; | |||
| sha256 = "0g2bp9n05ng2fvqw86pb941zamcqnfz1l066wvh5j3av1w22khi8"; | |||
| sha256 = "1y7kv889rm3nvaigcda4bglvwm799f3gp0zrivkvrg1lrlygs89f"; | |||
| }; | |||
| nativeBuildInputs = [ cmake ]; | |||
| @@ -2,13 +2,13 @@ | |||
| python3Packages.buildPythonApplication rec { | |||
| pname = "rofi-mpd"; | |||
| version = "2.2.0"; | |||
| version = "2.2.1"; | |||
| src = fetchFromGitHub { | |||
| owner = "JakeStanger"; | |||
| repo = "Rofi_MPD"; | |||
| rev = "v${version}"; | |||
| sha256 = "1b0y8706mmrxhiyz8g6znisllc35j8g7sz8gfjll9svysjmvb6lc"; | |||
| sha256 = "0jabyn6gqh8ychn2a06xws3avz0lqdnx3qvqkavfd2xr6sp2q7lg"; | |||
| }; | |||
| propagatedBuildInputs = with python3Packages; [ mutagen mpd2 toml appdirs ]; | |||
| @@ -1,30 +1,29 @@ | |||
| { stdenv, fetchurl, alsaLib, python, SDL }: | |||
| { stdenv, fetchFromGitHub | |||
| , autoreconfHook | |||
| , alsaLib, python, SDL }: | |||
| stdenv.mkDerivation rec { | |||
| version = "20120105"; | |||
| pname = "schismtracker"; | |||
| version = "20190805"; | |||
| src = fetchurl { | |||
| url = "http://schismtracker.org/dl/${pname}-${version}.tar.bz2"; | |||
| sha256 = "1ny7wv2wxm1av299wvpskall6438wjjpadphmqc7c0h6d0zg5kii"; | |||
| src = fetchFromGitHub { | |||
| owner = pname; | |||
| repo = pname; | |||
| rev = version; | |||
| sha256 = "0qqps20vvn3rgpg8174bjrrm38gqcci2z5z4c1r1vhbccclahgsd"; | |||
| }; | |||
| preConfigure = '' | |||
| # Build fails on Linux with windres. | |||
| export ac_cv_prog_ac_ct_WINDRES= | |||
| ''; | |||
| 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"; | |||
| homepage = "http://schismtracker.org/"; | |||
| license = stdenv.lib.licenses.gpl2; | |||
| license = licenses.gpl2; | |||
| platforms = [ "x86_64-linux" "i686-linux" ]; | |||
| maintainers = [ stdenv.lib.maintainers.ftrvxmtrx ]; | |||
| maintainers = with maintainers; [ ftrvxmtrx ]; | |||
| }; | |||
| } | |||
| @@ -2,20 +2,20 @@ | |||
| rustPlatform.buildRustPackage rec { | |||
| pname = "spotify-tui"; | |||
| version = "0.18.0"; | |||
| version = "0.19.0"; | |||
| src = fetchFromGitHub { | |||
| owner = "Rigellute"; | |||
| repo = "spotify-tui"; | |||
| rev = "v${version}"; | |||
| sha256 = "15icg332iyacdn4ydr4nivblayg4xkcnjh4f0sjnhj4q173v8fq2"; | |||
| sha256 = "1bdcfkfbvvn262p4j0nb4kvjzzgrvn3kxlif48yipqkkykzsgz6g"; | |||
| }; | |||
| cargoSha256 = "0rw8pj74k88rvcr18837g356lwsn2vdq384yma9df462xd2cw823"; | |||
| cargoSha256 = "13v2ilmfs9468kavlx6wrsp0dscppxbxgygwpdd35p5hq3vnhl7k"; | |||
| nativeBuildInputs = [ pkgconfig ] ++ stdenv.lib.optionals stdenv.isLinux [ python3 ]; | |||
| buildInputs = [ openssl ] | |||
| ++ stdenv.lib.optional stdenv.isLinux libxcb | |||
| nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ pkgconfig python3 ]; | |||
| buildInputs = [ ] | |||
| ++ stdenv.lib.optionals stdenv.isLinux [ openssl libxcb ] | |||
| ++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Security ]; | |||
| meta = with stdenv.lib; { | |||
| @@ -35,13 +35,13 @@ | |||
| mkDerivation rec { | |||
| pname = "strawberry"; | |||
| version = "0.6.9"; | |||
| version = "0.6.10"; | |||
| src = fetchFromGitHub { | |||
| owner = "jonaski"; | |||
| repo = pname; | |||
| rev = version; | |||
| sha256 = "0ssyqa14j54sja2dzhzrznbf1bbl0nc62p4jh2pd6fhinpw8y6dk"; | |||
| sha256 = "0qf510hlxbndqzwq62mdzfclqxr3caf1a34kd770k84x8vrb4pld"; | |||
| }; | |||
| buildInputs = [ | |||
| @@ -7,13 +7,13 @@ with stdenv.lib; | |||
| mkDerivation rec { | |||
| name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version; | |||
| version = "0.21.3"; | |||
| version = "0.21.5"; | |||
| src = fetchFromGitHub { | |||
| owner = "bitcoin-ABC"; | |||
| repo = "bitcoin-abc"; | |||
| rev = "v${version}"; | |||
| sha256 = "1pzdgghbsss2qjfgl42lvkbs5yc5q6jnzqnp24lljmrh341g2zn4"; | |||
| sha256 = "1jx33n8dhn16iaxvmc56cxw0i5qk0ga5nf7qf9frwwq6zkglknga"; | |||
| }; | |||
| patches = [ ./fix-bitcoin-qt-build.patch ]; | |||
| @@ -4,11 +4,11 @@ | |||
| with stdenv.lib; | |||
| stdenv.mkDerivation rec { | |||
| pname = "clightning"; | |||
| version = "0.8.1"; | |||
| version = "0.8.2"; | |||
| src = fetchurl { | |||
| url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip"; | |||
| sha256 = "079d3yx7yr7qrilqgaayvn18lxl8h6a1gwwbsgm5xsyxj4vdlz7r"; | |||
| sha256 = "1w5l3r3pnhnwz3x7mjgd69cw9a18fpyjwj7kmfka7cf9hdgcwp9x"; | |||
| }; | |||
| enableParallelBuilding = true; | |||
| @@ -2,16 +2,16 @@ | |||
| buildGoModule rec { | |||
| pname = "lnd"; | |||
| version = "0.9.2-beta"; | |||
| version = "0.10.0-beta"; | |||
| src = fetchFromGitHub { | |||
| owner = "lightningnetwork"; | |||
| repo = "lnd"; | |||
| rev = "v${version}"; | |||
| sha256 = "0gm33z89fiqv231ks2mkpsblskcsijipq8fcmip6m6jy8g06b1gb"; | |||
| sha256 = "1amciz924s2h6qhy7w34jpv1jc25p5ayfxzvjph6hhx0bccrm88w"; | |||
| }; | |||
| modSha256 = "1khxplvyaqgaddrx1nna1fw0nb1xz9bmqpxpfifif4f5nmx90gbr"; | |||
| modSha256 = "15i4h3pkvyav9qsbfinzifram0knkylg24j6j0mxs4bnj80j4ycm"; | |||
| subPackages = ["cmd/lncli" "cmd/lnd"]; | |||
| @@ -3,11 +3,11 @@ | |||
| }: | |||
| stdenv.mkDerivation rec { | |||
| name = "bluefish-2.2.10"; | |||
| name = "bluefish-2.2.11"; | |||
| src = fetchurl { | |||
| url = "mirror://sourceforge/bluefish/${name}.tar.bz2"; | |||
| sha256 = "1ciygj79q6i3ga5x1j8aivc05nh6rhhnm7hrq8q8xd9vd4ms3v5g"; | |||
| sha256 = "1zy2ppdg3nq9iy3zgfhnw93bq5zbbhyampf7bk3grpfvq5zqfk25"; | |||
| }; | |||
| nativeBuildInputs = [ intltool pkgconfig wrapGAppsHook ]; | |||
| @@ -2,11 +2,11 @@ | |||
| mkDerivation rec { | |||
| pname = "focuswriter"; | |||
| version = "1.7.5"; | |||
| version = "1.7.6"; | |||
| src = fetchurl { | |||
| url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2"; | |||
| sha256 = "19fqxyas941xcqjj68qpj42ayq0vw5rbd4ms5kvx8jyspp7wysqc"; | |||
| sha256 = "0h85f6cs9zbxv118mjfxqfv41j19zkx2xq36mpnlmrlzkjj7dx9l"; | |||
| }; | |||
| nativeBuildInputs = [ pkgconfig qmake qttools ]; | |||
| @@ -1,4 +1,4 @@ | |||
| { stdenv, lib, makeDesktopItem, makeWrapper, patchelf, p7zip | |||
| { stdenv, lib, makeDesktopItem, makeWrapper, patchelf | |||
| , 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) '' | |||
| get_file_size() { | |||
| @@ -27,13 +27,13 @@ in | |||
| stdenv.mkDerivation { | |||
| pname = "macvim"; | |||
| version = "8.2.319"; | |||
| version = "8.2.539"; | |||
| src = fetchFromGitHub { | |||
| owner = "macvim-dev"; | |||
| repo = "macvim"; | |||
| rev = "snapshot-162"; | |||
| sha256 = "1mg55jlrz533wlqrx028fyv86rfhdzvm5kdi8xlf67flc5hh9vrp"; | |||
| rev = "snapshot-163"; | |||
| sha256 = "0ibc6h7zmk81dygkxd8a2rcq72zbqmr9kh64xhsm9h0p70505cdk"; | |||
| }; | |||
| enableParallelBuilding = true; | |||
| @@ -66,7 +66,6 @@ stdenv.mkDerivation { | |||
| "--with-tlib=ncurses" | |||
| "--with-compiledby=Nix" | |||
| "--disable-sparkle" | |||
| "LDFLAGS=-headerpad_max_install_names" | |||
| ]; | |||
| 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, | |||
| # 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 = '' | |||
| 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 = '' | |||
| 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 | |||
| ''; | |||
| @@ -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 | |||
| index 23a06bf37..dfb10fe94 100644 | |||
| index 23a06bf..dfb10fe 100644 | |||
| --- a/src/MacVim/vimrc | |||
| +++ b/src/MacVim/vimrc | |||
| @@ -14,35 +14,5 @@ set backspace+=indent,eol,start | |||
| @@ -61,10 +41,10 @@ index 23a06bf37..dfb10fe94 100644 | |||
| +" Default cscopeprg to the Nix-installed path | |||
| +set cscopeprg=@CSCOPE@ | |||
| diff --git a/src/Makefile b/src/Makefile | |||
| index 32810d0a7..13a05f349 100644 | |||
| index 24c6934..d0f094e 100644 | |||
| --- a/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 | |||
| MACVIMGUI_OBJ = objects/gui.o objects/gui_beval.o \ | |||
| objects/gui_macvim.o objects/MMBackend.o objects/MacVim.o | |||
| @@ -74,10 +54,10 @@ index 32810d0a7..13a05f349 100644 | |||
| MACVIMGUI_LIBS_DIR = | |||
| MACVIMGUI_LIBS1 = -framework Cocoa -framework Carbon | |||
| diff --git a/src/auto/configure b/src/auto/configure | |||
| index 9e6a82f4a..3c6d1a89b 100755 | |||
| index 730d6d5..0259112 100755 | |||
| --- a/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 | |||
| if test "X$path" != "X"; then | |||
| @@ -89,7 +69,7 @@ index 9e6a82f4a..3c6d1a89b 100755 | |||
| MZSCHEME_LIBS="${path}/libmzscheme3m.a" | |||
| MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" | |||
| 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 | |||
| 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_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` | |||
| fi | |||
| @@ -6456,13 +6436,7 @@ __: | |||
| @@ -6486,13 +6466,7 @@ __: | |||
| eof | |||
| eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" | |||
| 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}" | |||
| 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/'` | |||
| @@ -6477,7 +6451,6 @@ eof | |||
| @@ -6507,7 +6481,6 @@ eof | |||
| fi | |||
| 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//` | |||
| @@ -136,7 +116,7 @@ index 9e6a82f4a..3c6d1a89b 100755 | |||
| 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; } | |||
| 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_n "checking if compile and link flags for Python are sane... " >&6; } | |||
| 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_n "checking for location of Tcl include... " >&6; } | |||
| @@ -162,7 +142,7 @@ index 9e6a82f4a..3c6d1a89b 100755 | |||
| TCL_INC= | |||
| for try in $tclinc; do | |||
| 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 | |||
| { $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; } | |||
| @@ -175,7 +155,7 @@ index 9e6a82f4a..3c6d1a89b 100755 | |||
| for try in $tclcnf; do | |||
| if test -f "$try/tclConfig.sh"; then | |||
| { $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 | |||
| librubyarg="$librubyarg" | |||
| RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" | |||
| @@ -187,10 +167,10 @@ index 9e6a82f4a..3c6d1a89b 100755 | |||
| if test "X$librubyarg" != "X"; then | |||
| diff --git a/src/vim.h b/src/vim.h | |||
| index f158aab..a714da9 100644 | |||
| index 87d1c92..8a7d5a5 100644 | |||
| --- a/src/vim.h | |||
| +++ b/src/vim.h | |||
| @@ -243,17 +243,6 @@ | |||
| @@ -250,17 +250,6 @@ | |||
| # define SUN_SYSTEM | |||
| #endif | |||
| @@ -209,7 +189,7 @@ index f158aab..a714da9 100644 | |||
| # include "os_amiga.h" | |||
| #endif | |||
| diff --git a/src/vimtutor b/src/vimtutor | |||
| index 1e8769b25..47078b0e7 100755 | |||
| index 1e8769b..47078b0 100755 | |||
| --- a/src/vimtutor | |||
| +++ b/src/vimtutor | |||
| @@ -16,7 +16,7 @@ seq="vim vim81 vim80 vim8 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi" | |||
| @@ -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 { | |||
| pname = "apitrace"; | |||
| @@ -15,7 +15,48 @@ stdenv.mkDerivation rec { | |||
| # of games -- so it's fine to use e.g. bundled snappy. | |||
| 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; { | |||
| homepage = "https://apitrace.github.io"; | |||
| @@ -5,11 +5,11 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "avocode"; | |||
| version = "4.4.3"; | |||
| version = "4.6.2"; | |||
| src = fetchurl { | |||
| url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip"; | |||
| sha256 = "03pq55mdgbaf6c2q57ww2990wr6qz8hk1r6xs1irqy8990m4afvk"; | |||
| sha256 = "1ldvscxfvwpsir8vr1ca9ra0841m6xy331ys31dngcp77nwncjqc"; | |||
| }; | |||
| libPath = stdenv.lib.makeLibraryPath (with xorg; [ | |||
| @@ -11,11 +11,11 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "drawio"; | |||
| version = "12.9.9"; | |||
| version = "13.0.3"; | |||
| src = fetchurl { | |||
| url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm"; | |||
| sha256 = "07lx99fd4vkgdhagshzawrh8ncbv19hvxjpzgd3yjdj0nalvmxin"; | |||
| sha256 = "104pfwipm8ch9xqlsz1gh18icr1p6i3n4c77bbdjakxcy4s5n7sg"; | |||
| }; | |||
| nativeBuildInputs = [ | |||
| @@ -2,7 +2,7 @@ | |||
| mkDerivation rec { | |||
| pname = "fstl"; | |||
| version = "0.9.3"; | |||
| version = "0.9.4"; | |||
| buildInputs = [qtbase mesa_glu]; | |||
| @@ -23,7 +23,7 @@ mkDerivation rec { | |||
| owner = "mkeeter"; | |||
| repo = "fstl"; | |||
| rev = "v" + version; | |||
| sha256 = "1j0y9xbf0ybrrnsmfzgpyyz6bi98xgzn9ivani424j01vffns892"; | |||
| sha256 = "028hzdv11hgvcpc36q5scf4nw1256qswh37xhfn5a0iv7wycmnif"; | |||
| }; | |||
| meta = with stdenv.lib; { | |||
| @@ -9,14 +9,14 @@ | |||
| libarchive, libzip, | |||
| # Archive tools | |||
| p7zip, lrzip, | |||
| lrzip, | |||
| # Unfree tools | |||
| unfreeEnableUnrar ? false, unrar, | |||
| }: | |||
| let | |||
| extraTools = [ p7zip lrzip ] ++ lib.optional unfreeEnableUnrar unrar; | |||
| extraTools = [ lrzip ] ++ lib.optional unfreeEnableUnrar unrar; | |||
| in | |||
| mkDerivation { | |||
| @@ -2,24 +2,24 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "1password"; | |||
| version = "0.9.4"; | |||
| version = "0.10.0"; | |||
| src = | |||
| if stdenv.hostPlatform.system == "i686-linux" then | |||
| fetchzip { | |||
| url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_386_v${version}.zip"; | |||
| sha256 = "0hgvcm42035fs2qhhvycppcrqgya98rmkk347j3hyj1m6kqxi99c"; | |||
| sha256 = "07j11ikd0rzsj4d8rv74rfy497svq6l2q94ndf3b0a0mr8riyazj"; | |||
| stripRoot = false; | |||
| } | |||
| else if stdenv.hostPlatform.system == "x86_64-linux" then | |||
| fetchzip { | |||
| url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_amd64_v${version}.zip"; | |||
| sha256 = "1fvl078kgpvzjr3jfp8zbajzsiwrcm33b7lqksxgcy30paqw6737"; | |||
| sha256 = "177cl4x7rj3d74kzrpmiwps5n31axmlhqdwrdpkmay2gk9inswbs"; | |||
| stripRoot = false; | |||
| } | |||
| else if stdenv.hostPlatform.system == "x86_64-darwin" then | |||
| fetchurl { | |||
| 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"; | |||
| @@ -100,7 +100,7 @@ rustPlatform.buildRustPackage rec { | |||
| '' + ( | |||
| if stdenv.isDarwin then '' | |||
| 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 '' | |||
| 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 | |||
| @@ -2,13 +2,13 @@ | |||
| pythonPackages.buildPythonApplication rec { | |||
| pname = "cherrytree"; | |||
| version = "0.39.2"; | |||
| version = "0.39.3"; | |||
| src = fetchFromGitHub { | |||
| owner = "giuspen"; | |||
| repo = "cherrytree"; | |||
| rev = version; | |||
| sha256 = "1l6wh24bhp4yhmsfmc0r4n2n10nlilkv4cmv5sfl80i250fiw7xa"; | |||
| sha256 = "1k9i7acpphx0if6ij2p9fkmj638ry6hcyr1rdr039a8zi8hq98gz"; | |||
| }; | |||
| @@ -5,13 +5,13 @@ | |||
| mkDerivation rec { | |||
| pname = "CopyQ"; | |||
| version = "3.10.0"; | |||
| version = "3.11.0"; | |||
| src = fetchFromGitHub { | |||
| owner = "hluk"; | |||
| repo = "CopyQ"; | |||
| rev = "v${version}"; | |||
| sha256 = "05nhgndiq0sm1bvb80sf5fgnm38249dclwzmfm7hzrablmkwgv3c"; | |||
| sha256 = "1wx6nqcyzknbw71sliwq4cb5qq1gy6pr9867s6x3vpg3n8g2czkf"; | |||
| }; | |||
| nativeBuildInputs = [ cmake ]; | |||
| @@ -1,14 +1,14 @@ | |||
| { stdenv, fetchFromGitHub, python3, installShellFiles }: | |||
| stdenv.mkDerivation rec { | |||
| version = "1.8"; | |||
| version = "1.8.1"; | |||
| pname = "ddgr"; | |||
| src = fetchFromGitHub { | |||
| owner = "jarun"; | |||
| repo = "ddgr"; | |||
| rev = "v${version}"; | |||
| sha256 = "1cyaindcg2vc3ij0p6b35inr01c6ys04izxsn1h70ixhsz46qg8z"; | |||
| sha256 = "0668wzh1gqin0xscy3fly9hz370n2ny175f3kya9bsld0x0jkd5p"; | |||
| }; | |||
| nativeBuildInputs = [ installShellFiles ]; | |||
| @@ -17,11 +17,6 @@ stdenv.mkDerivation rec { | |||
| makeFlags = [ "PREFIX=$(out)" ]; | |||
| # Version 1.8 was released as 1.7 | |||
| postPatch = '' | |||
| substituteInPlace ddgr --replace "_VERSION_ = '1.7'" "_VERSION_ = '${version}'" | |||
| ''; | |||
| postInstall = '' | |||
| installShellCompletion --bash --name ddgr.bash auto-completion/bash/ddgr-completion.bash | |||
| installShellCompletion --fish auto-completion/fish/ddgr.fish | |||
| @@ -1,7 +1,7 @@ | |||
| { stdenv, fetchurl, openssl }: | |||
| let | |||
| version = "6.4.3"; | |||
| version = "6.4.4"; | |||
| in | |||
| stdenv.mkDerivation { | |||
| pname = "fetchmail"; | |||
| @@ -9,7 +9,7 @@ stdenv.mkDerivation { | |||
| src = fetchurl { | |||
| url = "mirror://sourceforge/fetchmail/fetchmail-${version}.tar.xz"; | |||
| sha256 = "1r6k14m40ni9114i3j1lr6zwpxky6k89mycgxxg0cpdap4a0wdmh"; | |||
| sha256 = "1smbydwfjq29a2l44g6mgj0cd412fz40gbq6vq0klm7pmgd606si"; | |||
| }; | |||
| buildInputs = [ openssl ]; | |||
| @@ -2,11 +2,11 @@ | |||
| python3Packages.buildPythonApplication rec { | |||
| pname = "gallery_dl"; | |||
| version = "1.13.3"; | |||
| version = "1.13.6"; | |||
| src = python3Packages.fetchPypi { | |||
| inherit pname version; | |||
| sha256 = "0nhbhli45i2xhkmyj9mpg8fn1l58y2zmr6nnnnms557wpdpg112x"; | |||
| sha256 = "17hgryj8qsxcx3c96ir25q0wsh5q0s6c6fb33lqfdbrfxrjcixbk"; | |||
| }; | |||
| doCheck = false; | |||
| @@ -2,11 +2,11 @@ | |||
| , curl, cdparanoia, libid3tag, ncurses, libtool }: | |||
| stdenv.mkDerivation rec { | |||
| name = "grip-4.1.0"; | |||
| name = "grip-4.1.1"; | |||
| src = fetchurl { | |||
| url = "mirror://sourceforge/grip/${name}.tar.gz"; | |||
| sha256 = "0iy7bcyrxm7zyrxah06qyxdshkgq6yqkadlw211j2qzld38a79j5"; | |||
| sha256 = "1sbjgawb7qrinixybwi0adk7mpdfb565gkffp5gxxsw8fqd068fs"; | |||
| }; | |||
| nativeBuildInputs = [ pkgconfig ]; | |||
| @@ -2,7 +2,7 @@ | |||
| let | |||
| pname = "joplin-desktop"; | |||
| version = "1.0.200"; | |||
| version = "1.0.201"; | |||
| desktopItem = makeDesktopItem { | |||
| name = "Joplin"; | |||
| exec = "joplin-desktop"; | |||
| @@ -13,7 +13,7 @@ in appimageTools.wrapType2 rec { | |||
| name = "${pname}-${version}"; | |||
| src = fetchurl { | |||
| url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.AppImage"; | |||
| sha256 = "14gwv8i6dprvl96mifadq0zj77a82rww8xd5bmzm8ql6sidi2216"; | |||
| sha256 = "060dkgamsv59vgslqyjfh1g8wg3nldrvfb9lf0y9sxjlbsv8bc55"; | |||
| }; | |||
| @@ -1,12 +1,12 @@ | |||
| { stdenv, glibcLocales, python3 }: | |||
| python3.pkgs.buildPythonApplication rec { | |||
| version = "0.16.0"; | |||
| version = "0.16.1"; | |||
| pname = "khard"; | |||
| src = python3.pkgs.fetchPypi { | |||
| inherit pname version; | |||
| sha256 = "0a1zpkq0pplmn9flxczq2wafs6zc07r9xx9qi6dqmyv9mhy9d87f"; | |||
| sha256 = "0fg4qh5gzki5wg958wlpc8a2icnk74gzg33lqxjm755cfnjng7qd"; | |||
| }; | |||
| propagatedBuildInputs = with python3.pkgs; [ | |||
| @@ -3,11 +3,11 @@ | |||
| mkDerivation rec { | |||
| pname = "latte-dock"; | |||
| version = "0.9.10"; | |||
| version = "0.9.11"; | |||
| src = fetchurl { | |||
| url = "https://download.kde.org/stable/${pname}/${pname}-${version}.tar.xz"; | |||
| sha256 = "11s9fslr33h3ic14ifr43jphf68jpny8jmhvmrrwcz6w0p3falzw"; | |||
| sha256 = "0x7a93a7axsa0fzpbkkv1z722k9za4p51xcpzdpnh5ih1zij0csi"; | |||
| name = "${pname}-${version}.tar.xz"; | |||
| }; | |||
| @@ -3,14 +3,24 @@ | |||
| let | |||
| pname = "notable"; | |||
| version = "1.8.4"; | |||
| in | |||
| appimageTools.wrapType2 rec { | |||
| sha256 = "0rvz8zwsi62kiq89pv8n2wh9h5yb030kvdr1vf65xwqkhqcrzrby"; | |||
| name = "${pname}-${version}"; | |||
| src = fetchurl { | |||
| 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 = '' | |||
| 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 | |||
| @@ -18,7 +28,14 @@ appimageTools.wrapType2 rec { | |||
| multiPkgs = null; # no 32bit needed | |||
| 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; { | |||
| description = "The markdown-based note-taking app that doesn't suck"; | |||
| @@ -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 | |||
| mkOverride = attrname: version: sha256: | |||
| self: super: { | |||
| @@ -11,17 +13,19 @@ let | |||
| }); | |||
| }; | |||
| py = python2.override { | |||
| py = python3.override { | |||
| self = py; | |||
| packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ([ | |||
| (mkOverride "flask" "0.10.1" "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc") | |||
| (mkOverride "flask_login" "0.2.11" "1rg3rsjs1gwi2pw6vr9jmhaqm9b3vc9c4hfcsvp4y8agbh7g3mc3") | |||
| (mkOverride "flask" "0.12.5" "fac2b9d443e49f7e7358a444a3db5950bdd0324674d92ba67f8f1f15f876b14f") | |||
| (mkOverride "flaskbabel" "0.12.2" "11jwp8vvq1gnm31qh6ihy2h393hy18yn9yjp569g60r0wj1x2sii") | |||
| (mkOverride "tornado" "4.5.3" "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d") | |||
| (mkOverride "psutil" "5.6.7" "ffad8eb2ac614518bbe3c0b8eb9dffdb3a8d2e3a7d5da51c5b974fb723a5c5aa") | |||
| # Octoprint holds back jinja2 to 2.8.1 due to breaking changes. | |||
| # This old version does not have updated test config for pytest 4, | |||
| # and pypi tarball doesn't contain tests dir anyways. | |||
| (pself: psuper: { | |||
| jinja2 = psuper.jinja2.overridePythonAttrs (oldAttrs: rec { | |||
| (self: super: { | |||
| jinja2 = super.jinja2.overridePythonAttrs (oldAttrs: rec { | |||
| version = "2.8.1"; | |||
| src = oldAttrs.src.override { | |||
| inherit version; | |||
| @@ -29,74 +33,75 @@ let | |||
| }; | |||
| 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"; | |||
| }; | |||
| 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 | |||
| ]; | |||
| 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 ]; | |||
| in py.pkgs.buildPythonApplication rec { | |||
| pname = "OctoPrint"; | |||
| version = "1.3.12"; | |||
| checkInputs = with super; [ pytestCheckHook mock ddt ]; | |||
| src = fetchFromGitHub { | |||
| owner = "foosel"; | |||
| repo = "OctoPrint"; | |||
| rev = version; | |||
| sha256 = "1lmqssgwjyhknjf3x58g7cr0fqz7fs5a3rl07r69wfpch63ranyd"; | |||
| }; | |||
| postPatch = let | |||
| ignoreVersionConstraints = [ | |||
| "sentry-sdk" | |||
| ]; | |||
| in '' | |||
| sed -r -i \ | |||
| ${lib.concatStringsSep "\n" (map (e: | |||
| ''-e 's@${e}[<>=]+.*@${e}",@g' \'' | |||
| ) ignoreVersionConstraints)} | |||
| setup.py | |||
| ''; | |||
| 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 ]; | |||
| dontUseSetuptoolsCheck = true; | |||
| checkInputs = with py.pkgs; [ nose mock ddt ]; | |||
| preCheck = '' | |||
| export HOME=$(mktemp -d) | |||
| rm pytest.ini | |||
| ''; | |||
| postPatch = '' | |||
| sed -r -i \ | |||
| ${lib.concatStringsSep "\n" (map (e: | |||
| ''-e 's@${e}[<>=]+.*@${e}",@g' \'' | |||
| ) ignoreVersionConstraints)} | |||
| setup.py | |||
| ''; | |||
| disabledTests = [ | |||
| "test_check_setup" # Why should it be able to call pip? | |||
| ] ++ lib.optionals stdenv.isDarwin [ | |||
| "test_set_external_modification" | |||
| ]; | |||
| checkPhase = '' | |||
| HOME=$(mktemp -d) nosetests ${lib.optionalString stdenv.isDarwin "--exclude=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 ]; | |||
| 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 | |||
| @@ -1,255 +1,255 @@ | |||
| { stdenv, fetchgit, fetchFromGitHub, octoprint, python2Packages, marlin-calc }: | |||
| { pkgs }: | |||
| let | |||
| buildPlugin = args: python2Packages.buildPythonPackage (args // { | |||
| with pkgs; | |||
| self: super: let | |||
| buildPlugin = args: self.buildPythonPackage (args // { | |||
| pname = "OctoPrintPlugin-${args.pname}"; | |||
| inherit (args) version; | |||
| propagatedBuildInputs = (args.propagatedBuildInputs or []) ++ [ octoprint ]; | |||
| propagatedBuildInputs = (args.propagatedBuildInputs or []) ++ [ super.octoprint ]; | |||
| # none of the following have tests | |||
| doCheck = false; | |||
| }); | |||
| in { | |||
| inherit buildPlugin; | |||
| # Deprecated alias | |||
| m3d-fio = self.m33-fio; # added 2016-08-13 | |||
| m33-fio = buildPlugin rec { | |||
| pname = "M33-Fio"; | |||
| version = "1.21"; | |||
| src = fetchFromGitHub { | |||
| 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 { | |||
| 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 ]; | |||
| }; | |||
| }; | |||
| self = { | |||
| # Deprecated alias | |||
| m3d-fio = self.m33-fio; # added 2016-08-13 | |||
| m33-fio = buildPlugin rec { | |||
| pname = "M33-Fio"; | |||
| version = "1.21"; | |||
| src = fetchFromGitHub { | |||
| 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 { | |||
| pname = "MQTT"; | |||
| version = "0.8.6"; | |||
| src = fetchFromGitHub { | |||
| owner = "OctoPrint"; | |||
| repo = "OctoPrint-MQTT"; | |||
| rev = version; | |||
| sha256 = "0y1jnfplcy8mh3szrfbbvngl02j49cbdizglrfsry4fvqg50zjxd"; | |||
| }; | |||
| propagatedBuildInputs = with python2Packages; [ 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.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 ]; | |||
| }; | |||
| 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 ]; | |||
| }; | |||
| }; | |||
| in self | |||
| 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 ]; | |||
| }; | |||
| }; | |||
| } | |||
| @@ -2,13 +2,13 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "osmium-tool"; | |||
| version = "1.11.1"; | |||
| version = "1.12.0"; | |||
| src = fetchFromGitHub { | |||
| owner = "osmcode"; | |||
| repo = "osmium-tool"; | |||
| rev = "v${version}"; | |||
| sha256 = "199dvajik5d56nybk2061vdjyxwakngfd7frxj99wr2vsrp4aw2b"; | |||
| sha256 = "18afn5qzdjpip176kk5pr04mj0p7dv70dbz1n36qmqnq3gyms10q"; | |||
| }; | |||
| nativeBuildInputs = [ cmake ]; | |||
| @@ -5,13 +5,13 @@ | |||
| python3Packages.buildPythonApplication rec { | |||
| pname = "pdfarranger"; | |||
| version = "1.4.2"; | |||
| version = "1.5.1"; | |||
| src = fetchFromGitHub { | |||
| owner = "jeromerobert"; | |||
| repo = pname; | |||
| rev = version; | |||
| sha256 = "11q14pxyp5z4y3gabjnis3ip3xss6n94zjl42akwf27dxgxlpcjk"; | |||
| sha256 = "0n4jw0dsqw929a34ff077kz8w89vkjkqf8dy4c356zh6gf23cdxr"; | |||
| }; | |||
| nativeBuildInputs = [ | |||
| @@ -2,11 +2,11 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "pdfsam-basic"; | |||
| version = "4.1.2"; | |||
| version = "4.1.3"; | |||
| src = fetchurl { | |||
| url = "https://github.com/torakiki/pdfsam/releases/download/v${version}/pdfsam_${version}-1_amd64.deb"; | |||
| sha256 = "1k1azxz92vkb4hylk4ki0szfn47ids0lwg01zfs54yc89j0c6142"; | |||
| sha256 = "1rhv6mf6pr9aaa8516i3b7v6h622qb1p8c4jsy3j0s5wrdry5l9l"; | |||
| }; | |||
| unpackPhase = '' | |||
| @@ -2,16 +2,16 @@ | |||
| rustPlatform.buildRustPackage rec { | |||
| pname = "pueue"; | |||
| version = "0.3.0"; | |||
| version = "0.3.1"; | |||
| src = fetchFromGitHub { | |||
| owner = "Nukesor"; | |||
| repo = pname; | |||
| rev = "v${version}"; | |||
| sha256 = "11x4y3ah9f7mv9jssws95sw7rd20fxwdh11mrhcb4vwk59cmqsjz"; | |||
| sha256 = "1v3fphx71hyv7fq09slhyzchw362swzhmhn7wmbazfdrj6fjhcki"; | |||
| }; | |||
| cargoSha256 = "06zv3li14sg4a8bgj38zzx576ggm32ss0djmys1g0h5a0nxaaqfx"; | |||
| cargoSha256 = "04vi9la17pabz1spfw1fzgy4c2ifnis6am5m4ck3lhccnn6j8bd3"; | |||
| checkPhase = "cargo test -- --skip test_single_huge_payload"; | |||
| @@ -101,12 +101,13 @@ rec { | |||
| redshift-wlr = mkRedshift { | |||
| pname = "redshift-wlr"; | |||
| version = "2019-04-17"; | |||
| # upstream rebases so this is the push date | |||
| version = "2019-08-24"; | |||
| src = fetchFromGitHub { | |||
| owner = "minus7"; | |||
| repo = "redshift"; | |||
| rev = "eecbfedac48f827e96ad5e151de8f41f6cd3af66"; | |||
| rev = "7da875d34854a6a34612d5ce4bd8718c32bec804"; | |||
| sha256 = "0rs9bxxrw4wscf4a8yl776a8g880m5gcm75q06yx2cn3lw2b7v22"; | |||
| }; | |||
| @@ -73,14 +73,14 @@ in { | |||
| application = mkSweetHome3D rec { | |||
| pname = stdenv.lib.toLower module + "-application"; | |||
| version = "6.2"; | |||
| version = "6.3"; | |||
| module = "SweetHome3D"; | |||
| description = "Design and visualize your future home"; | |||
| license = stdenv.lib.licenses.gpl2Plus; | |||
| src = fetchsvn { | |||
| url = "https://svn.code.sf.net/p/sweethome3d/code/tags/V_" + d2u version + "/SweetHome3D/"; | |||
| sha256 = "0a514a1zmipykvawil46v826ivkw9c00vdkyggyl6m41giay15zf"; | |||
| rev = "6822"; | |||
| sha256 = "1c13g0f73jgbzmjhdm9knqq1kh3vdl04zl3xlp30g9a1n0jkr38i"; | |||
| rev = "6896"; | |||
| }; | |||
| desktopName = "Sweet Home 3D"; | |||
| icons = { | |||
| @@ -1,14 +1,14 @@ | |||
| { stdenv, fetchFromGitHub, python3Packages }: | |||
| python3Packages.buildPythonApplication rec { | |||
| version = "0.25.2"; | |||
| version = "0.26.0"; | |||
| name = "toot-${version}"; | |||
| src = fetchFromGitHub { | |||
| owner = "ihabunek"; | |||
| repo = "toot"; | |||
| rev = version; | |||
| sha256 = "0g18x8pbwhk2d3aphah6dqqbhz62k48pwx63flsnqd4brccd0jkh"; | |||
| sha256 = "146jj83jixahgxwh12bbkfvci2wrz398h5x01kgppdy59m4pa4pl"; | |||
| }; | |||
| checkInputs = with python3Packages; [ pytest ]; | |||
| @@ -6,13 +6,13 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "xastir"; | |||
| version = "2.1.4"; | |||
| version = "2.1.6"; | |||
| src = fetchFromGitHub { | |||
| owner = pname; | |||
| repo = pname; | |||
| rev = "Release-${version}"; | |||
| sha256 = "14f908jy5jzvgm1h1sr47hjqjq3q2nq91byhimk84kj044fn21w9"; | |||
| sha256 = "sha256-IdlRScAy7tCyVCElCceY4PvqPXWfZZ35f+MwCo3nO3s="; | |||
| }; | |||
| buildInputs = [ | |||
| @@ -4,13 +4,13 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "xmrig"; | |||
| version = "5.10.0"; | |||
| version = "5.11.1"; | |||
| src = fetchFromGitHub { | |||
| owner = "xmrig"; | |||
| repo = "xmrig"; | |||
| rev = "v${version}"; | |||
| sha256 = "06nxhrb5vnlq3sxybiyzdpbv6ah1zam7r07s1c31sv37znlb77d5"; | |||
| sha256 = "04wsz7hcmzm5dv9q1wb26nvcz5gxdcgkf00cp5bpbr3y9vc6dyz6"; | |||
| }; | |||
| nativeBuildInputs = [ cmake ]; | |||
| @@ -2,7 +2,7 @@ | |||
| let | |||
| pname = "Sylk"; | |||
| version = "2.6.1"; | |||
| version = "2.7.0"; | |||
| in | |||
| appimageTools.wrapType2 rec { | |||
| @@ -10,7 +10,7 @@ appimageTools.wrapType2 rec { | |||
| src = fetchurl { | |||
| url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage"; | |||
| hash = "sha256:0417qk925k7p3fiq1zha9al86jrz6mqspda7mi3h9blpbyvlcy7w"; | |||
| hash = "sha256:0xjg9j69yj06ys8229x6mwsjlk3mvxi8gnr2kymx0vhhg1zvqi1k"; | |||
| }; | |||
| profile = '' | |||
| @@ -19,13 +19,13 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "ephemeral"; | |||
| version = "6.3.3"; | |||
| version = "6.4.1"; | |||
| src = fetchFromGitHub { | |||
| owner = "cassidyjames"; | |||
| repo = "ephemeral"; | |||
| rev = version; | |||
| sha256 = "093bqc40p4s8jc1s5rg49363x24vnwwjayvgzmi4xag28f1x6kn8"; | |||
| sha256 = "1lzcwaczh601kwbx7fzg32nrzlg67asby7p86qy10qz86xf4g608"; | |||
| }; | |||
| nativeBuildInputs = [ | |||
| @@ -2,16 +2,16 @@ | |||
| buildGoModule rec { | |||
| pname = "atlantis"; | |||
| version = "0.11.1"; | |||
| version = "0.12.0"; | |||
| src = fetchFromGitHub { | |||
| owner = "runatlantis"; | |||
| repo = "atlantis"; | |||
| rev = "v${version}"; | |||
| sha256 = "1ylk6n13ln6yaq4nc4n7fm00wfiyqi2x33sca5avzsvd1b387kk6"; | |||
| sha256 = "16zz4xwpqipdmszbz93xxw31hbh7s8pfa9dm64ybyni7wc4lvdy6"; | |||
| }; | |||
| modSha256 = "1bhplk3p780llpj9l0fwcyli74879968d6j582mvjwvf2winbqzq"; | |||
| modSha256 = "18f7cf61yn5jkji5a4v6xw6c7xl40nj32n5w34xmcmszzf64cwkn"; | |||
| subPackages = [ "." ]; | |||
| @@ -34,6 +34,6 @@ stdenv.mkDerivation rec { | |||
| description = "Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules"; | |||
| maintainers = with maintainers; [ offline ]; | |||
| 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 | |||
| }; | |||
| } | |||
| @@ -1,6 +1,6 @@ | |||
| { lib, buildGoModule, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }: | |||
| let version = "0.106.3"; in | |||
| let version = "0.114.0"; in | |||
| buildGoModule { | |||
| pname = "helmfile"; | |||
| @@ -10,12 +10,12 @@ buildGoModule { | |||
| owner = "roboll"; | |||
| repo = "helmfile"; | |||
| rev = "v${version}"; | |||
| sha256 = "0pwkkgdcj9vx6nk574iaqwn074qfpgqd1c44d3kr3xdbac89yfyf"; | |||
| sha256 = "0486wcfizi8xljr29mznc4p11ggz4rvk5n53qvb30f7ry4ncc8n5"; | |||
| }; | |||
| goPackagePath = "github.com/roboll/helmfile"; | |||
| modSha256 = "1yv2b44qac0rms66v0qg13wsga0di6hwxa4dh2l0b1xvaf75ysay"; | |||
| modSha256 = "0j7w12rrnsv2h5v0bqh6sjq9anm51zs0p3nzlhwsksw9c98r9avk"; | |||
| nativeBuildInputs = [ makeWrapper ]; | |||
| @@ -2,13 +2,13 @@ | |||
| buildGoModule rec { | |||
| pname = "k9s"; | |||
| version = "0.18.1"; | |||
| version = "0.19.4"; | |||
| src = fetchFromGitHub { | |||
| owner = "derailed"; | |||
| repo = "k9s"; | |||
| rev = "v${version}"; | |||
| sha256 = "0a5x4yamvx2qlwngfvainbhplwp0hqwgvdqlj2jbrbz4hfhr1l59"; | |||
| sha256 = "1ya3lrw31pxd1rxzf88l5hzilaxwrng1a3ibawgn57my333hrmf6"; | |||
| }; | |||
| buildFlagsArray = '' | |||
| @@ -18,7 +18,7 @@ buildGoModule rec { | |||
| -X github.com/derailed/k9s/cmd.commit=${src.rev} | |||
| ''; | |||
| modSha256 = "0wpf6iyq6p3a8azdkn17gdp01wq9khyzr1bab6qgvsnsnhnjzcky"; | |||
| modSha256 = "11jxyzajlk6b5j19sg1kjr7qdzpxkwjwrvyhx9mwy6jb5sgqbzv8"; | |||
| meta = with stdenv.lib; { | |||
| description = "Kubernetes CLI To Manage Your Clusters In Style."; | |||
| @@ -2,11 +2,11 @@ | |||
| python3Packages.buildPythonApplication rec { | |||
| pname = "luigi"; | |||
| version = "2.8.12"; | |||
| version = "2.8.13"; | |||
| src = python3Packages.fetchPypi { | |||
| inherit pname version; | |||
| sha256 = "1p83mxqs7w5v27a58ps7wji5mlyfz66cpkbyrndix0pv9hdyzpxn"; | |||
| sha256 = "0x14549iwj7r1knc0hmic9ny9hp960yjjqi4mxl78jb69gd3bhmf"; | |||
| }; | |||
| propagatedBuildInputs = with python3Packages; [ dateutil tornado_4 python-daemon boto3 ]; | |||
| @@ -2,13 +2,13 @@ | |||
| stdenv.mkDerivation rec { | |||
| pname = "rssguard"; | |||
| version = "3.5.9"; | |||
| version = "3.6.0"; | |||
| src = fetchFromGitHub { | |||
| owner = "martinrotter"; | |||
| repo = pname; | |||
| rev = version; | |||
| sha256 = "0dvjcazvrgxfxg1gvznxj8kx569v4ivns0brq00cn2yxyd4wx43s"; | |||
| sha256 = "0nlvhcvd3bbvd3dapqix7h29pchbd9gv5n3hmrig9yi98yv8q53r"; | |||
| }; | |||
| buildInputs = [ qtwebengine qttools ]; | |||
| @@ -5,16 +5,16 @@ | |||
| buildGoModule rec { | |||
| pname = "gmailctl"; | |||
| version = "0.6.0"; | |||
| version = "0.7.0"; | |||
| src = fetchFromGitHub { | |||
| owner = "mbrt"; | |||
| repo = "gmailctl"; | |||
| rev = "v${version}"; | |||
| sha256 = "0g581gdkib7bj86blpm8skjvbnivmzh9ddikxai9hr5qq231j1pb"; | |||
| sha256 = "08q4yjfbwlldirf3j5db18l8kn6sf288wd364s50jlcx2ka8w50j"; | |||
| }; | |||
| modSha256 = "0pv3lhzl96ygzh9y01hi9klrrk403ii92imr9yrbimaf7rsvyvjp"; | |||
| modSha256 = "1c7dk6l8lkq2j04cp5g97hwkwfmmyn5r0vpr5zpavvalxgjidsf4"; | |||
| meta = with stdenv.lib; { | |||
| description = "Declarative configuration for Gmail filters"; | |||
| @@ -7,7 +7,7 @@ | |||
| , AVFoundation ? null }: | |||
| let | |||
| version = "1.16.3"; | |||
| version = "1.17.2"; | |||
| rev = "v${version}"; | |||
| in mkDerivation { | |||
| @@ -17,7 +17,7 @@ in mkDerivation { | |||
| src = fetchFromGitHub { | |||
| owner = "qTox"; | |||
| repo = "qTox"; | |||
| sha256 = "0qd4nvbrjnnfnk8ghsxq3cd1n1qf1ck5zg6ib11ij2pg03s146pa"; | |||
| sha256 = "04pbv1zsxy8dph2v0r9xc8lcm5g6604pwnppi3la5w46ihbwxlb9"; | |||
| inherit rev; | |||
| }; | |||
| @@ -2,7 +2,7 @@ | |||
| "name": "riot-web", | |||
| "productName": "Riot", | |||
| "main": "src/electron-main.js", | |||
| "version": "1.5.15", | |||
| "version": "1.6.0", | |||
| "description": "A feature-rich client for Matrix.org", | |||
| "author": "New Vector Ltd.", | |||
| "dependencies": { | |||