forked from mirrors/nixpkgs
Merge branch 'master' into python-trezor-fix-master
This commit is contained in:
commit
febf9e191e
80
.github/CODEOWNERS
vendored
80
.github/CODEOWNERS
vendored
|
@ -8,47 +8,75 @@
|
||||||
# Mentioned users will get code review requests.
|
# Mentioned users will get code review requests.
|
||||||
|
|
||||||
# This file
|
# This file
|
||||||
.github/CODEOWNERS @edolstra
|
/.github/CODEOWNERS @edolstra
|
||||||
|
|
||||||
# Boostraping and core infra
|
# Boostraping and core infra
|
||||||
pkgs/stdenv/ @edolstra
|
/pkgs/stdenv @edolstra
|
||||||
pkgs/build-support/cc-wrapper/ @edolstra
|
/pkgs/build-support/cc-wrapper @edolstra
|
||||||
|
|
||||||
# Libraries
|
# Libraries
|
||||||
lib/ @edolstra
|
/lib @edolstra @nbp
|
||||||
|
|
||||||
|
# Nixpkgs Internals
|
||||||
|
/default.nix @nbp
|
||||||
|
/pkgs/top-level/default.nix @nbp
|
||||||
|
/pkgs/top-level/impure.nix @nbp
|
||||||
|
/pkgs/top-level/stage.nix @nbp
|
||||||
|
|
||||||
|
# NixOS Internals
|
||||||
|
/nixos/default.nix @nbp
|
||||||
|
/nixos/lib/from-env.nix @nbp
|
||||||
|
/nixos/lib/eval-config.nix @nbp
|
||||||
|
/nixos/doc/manual/configuration/abstractions.xml @nbp
|
||||||
|
/nixos/doc/manual/configuration/config-file.xml @nbp
|
||||||
|
/nixos/doc/manual/configuration/config-syntax.xml @nbp
|
||||||
|
/nixos/doc/manual/configuration/modularity.xml @nbp
|
||||||
|
/nixos/doc/manual/development/assertions.xml @nbp
|
||||||
|
/nixos/doc/manual/development/meta-attributes.xml @nbp
|
||||||
|
/nixos/doc/manual/development/option-declarations.xml @nbp
|
||||||
|
/nixos/doc/manual/development/option-def.xml @nbp
|
||||||
|
/nixos/doc/manual/development/option-types.xml @nbp
|
||||||
|
/nixos/doc/manual/development/replace-modules.xml @nbp
|
||||||
|
/nixos/doc/manual/development/writing-modules.xml @nbp
|
||||||
|
/nixos/doc/manual/man-nixos-option.xml @nbp
|
||||||
|
/nixos/modules/installer/tools/nixos-option.sh @nbp
|
||||||
|
|
||||||
# Python-related code and docs
|
# Python-related code and docs
|
||||||
pkgs/top-level/python-packages.nix @FRidh
|
/pkgs/top-level/python-packages.nix @FRidh
|
||||||
pkgs/development/interpreters/python/* @FRidh
|
/pkgs/development/interpreters/python @FRidh
|
||||||
pkgs/development/python-modules/* @FRidh
|
/pkgs/development/python-modules @FRidh
|
||||||
doc/languages-frameworks/python.md @FRidh
|
/doc/languages-frameworks/python.md @FRidh
|
||||||
|
|
||||||
# Haskell
|
# Haskell
|
||||||
pkgs/development/compilers/ghc @peti
|
/pkgs/development/compilers/ghc @peti
|
||||||
pkgs/development/haskell-modules @peti
|
/pkgs/development/haskell-modules @peti
|
||||||
pkgs/development/haskell-modules/default.nix @peti
|
/pkgs/development/haskell-modules/default.nix @peti
|
||||||
pkgs/development/haskell-modules/generic-builder.nix @peti
|
/pkgs/development/haskell-modules/generic-builder.nix @peti
|
||||||
pkgs/development/haskell-modules/hoogle.nix @peti
|
/pkgs/development/haskell-modules/hoogle.nix @peti
|
||||||
|
|
||||||
# R
|
# R
|
||||||
pkgs/applications/science/math/R @peti
|
/pkgs/applications/science/math/R @peti
|
||||||
pkgs/development/r-modules @peti
|
/pkgs/development/r-modules @peti
|
||||||
|
|
||||||
|
# Ruby
|
||||||
|
/pkgs/development/interpreters/ruby @zimbatm
|
||||||
|
/pkgs/development/ruby-modules @zimbatm
|
||||||
|
|
||||||
# Darwin-related
|
# Darwin-related
|
||||||
/pkgs/stdenv/darwin/ @org/darwin-maintainers
|
/pkgs/stdenv/darwin @NixOS/darwin-maintainers
|
||||||
/pkgs/os-specific/darwin/ @org/darwin-maintainers
|
/pkgs/os-specific/darwin @NixOS/darwin-maintainers
|
||||||
|
|
||||||
# Beam-related (Erlang, Elixir, LFE, etc)
|
# Beam-related (Erlang, Elixir, LFE, etc)
|
||||||
pkgs/development/beam-modules/* @gleber
|
/pkgs/development/beam-modules @gleber
|
||||||
pkgs/development/interpreters/erlang/* @gleber
|
/pkgs/development/interpreters/erlang @gleber
|
||||||
pkgs/development/interpreters/lfe/* @gleber
|
/pkgs/development/interpreters/lfe @gleber
|
||||||
pkgs/development/interpreters/elixir/* @gleber
|
/pkgs/development/interpreters/elixir @gleber
|
||||||
pkgs/development/tools/build-managers/rebar/* @gleber
|
/pkgs/development/tools/build-managers/rebar @gleber
|
||||||
pkgs/development/tools/build-managers/rebar3/* @gleber
|
/pkgs/development/tools/build-managers/rebar3 @gleber
|
||||||
pkgs/development/tools/erlang/* @gleber
|
/pkgs/development/tools/erlang @gleber
|
||||||
|
|
||||||
# Jetbrains
|
# Jetbrains
|
||||||
pkgs/applications/editors/jetbrains @edwtjo
|
/pkgs/applications/editors/jetbrains @edwtjo
|
||||||
|
|
||||||
# Eclipse
|
# Eclipse
|
||||||
pkgs/applications/editors/eclipse @rycee
|
/pkgs/applications/editors/eclipse @rycee
|
||||||
|
|
11
.github/CONTRIBUTING.md
vendored
11
.github/CONTRIBUTING.md
vendored
|
@ -32,11 +32,14 @@ under the terms of [COPYING](../COPYING), which is an MIT-like license.
|
||||||
The old config generation system used impure shell scripts and could break in specific circumstances (see #1234).
|
The old config generation system used impure shell scripts and could break in specific circumstances (see #1234).
|
||||||
|
|
||||||
* `meta.description` should:
|
* `meta.description` should:
|
||||||
* Be capitalized
|
* Be capitalized.
|
||||||
* Not start with the package name
|
* Not start with the package name.
|
||||||
* Not have a dot at the end
|
* Not have a period at the end.
|
||||||
|
* `meta.license` must be set and fit the upstream license.
|
||||||
|
* If there is no upstream license, `meta.license` should default to `stdenv.lib.licenses.unfree`.
|
||||||
|
* `meta.maintainers` must be set.
|
||||||
|
|
||||||
See the nixpkgs manual for more details on how to [Submit changes to nixpkgs](https://nixos.org/nixpkgs/manual/#chap-submitting-changes).
|
See the nixpkgs manual for more details on [standard meta-attributes](https://nixos.org/nixpkgs/manual/#sec-standard-meta-attributes) and on how to [submit changes to nixpkgs](https://nixos.org/nixpkgs/manual/#chap-submitting-changes).
|
||||||
|
|
||||||
## Writing good commit messages
|
## Writing good commit messages
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,10 @@ configuration file located at
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>Note that we are not able to test or build unfree software on Hydra
|
||||||
|
due to policy. Most unfree licenses prohibit us from either executing or
|
||||||
|
distributing the software.</para>
|
||||||
|
|
||||||
<section xml:id="sec-allow-broken">
|
<section xml:id="sec-allow-broken">
|
||||||
<title>Installing broken packages</title>
|
<title>Installing broken packages</title>
|
||||||
|
|
||||||
|
|
|
@ -165,7 +165,7 @@ run the script in the `python3` shell.
|
||||||
|
|
||||||
```py
|
```py
|
||||||
#! /usr/bin/env nix-shell
|
#! /usr/bin/env nix-shell
|
||||||
#! nix-shell -i 'python3.withPackages(ps: [ps.numpy])'
|
#! nix-shell -i python3 -p "python3.withPackages(ps: [ps.numpy])"
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
<xi:include href="functions.xml" />
|
<xi:include href="functions.xml" />
|
||||||
<xi:include href="meta.xml" />
|
<xi:include href="meta.xml" />
|
||||||
<xi:include href="languages-frameworks/index.xml" />
|
<xi:include href="languages-frameworks/index.xml" />
|
||||||
|
<xi:include href="platform-notes.xml" />
|
||||||
<xi:include href="package-notes.xml" />
|
<xi:include href="package-notes.xml" />
|
||||||
<xi:include href="overlays.xml" />
|
<xi:include href="overlays.xml" />
|
||||||
<xi:include href="coding-conventions.xml" />
|
<xi:include href="coding-conventions.xml" />
|
||||||
|
|
|
@ -200,11 +200,9 @@ meta-attributes</title>
|
||||||
meta.platforms = stdenv.lib.platforms.linux;
|
meta.platforms = stdenv.lib.platforms.linux;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
Attribute Set <varname>stdenv.lib.platforms</varname> in
|
Attribute Set <varname>stdenv.lib.platforms</varname> defines
|
||||||
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/platforms.nix">
|
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/systems/doubles.nix">
|
||||||
<filename>nixpkgs/lib/platforms.nix</filename></link> defines various common
|
various common lists</link> of platforms types.</para></listitem>
|
||||||
lists of platforms types.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
|
|
@ -664,4 +664,34 @@ cp ${myEmacsConfig} $out/share/emacs/site-lisp/default.el
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section xml:id="sec-weechat">
|
||||||
|
<title>Weechat</title>
|
||||||
|
<para>
|
||||||
|
Weechat can currently be configured to include your choice of plugins.
|
||||||
|
To make use of this functionality, install an expression that overrides its configuration such as
|
||||||
|
<programlisting>weechat.override {configure = {availablePlugins, ...}: {
|
||||||
|
plugins = with availablePlugins; [ python perl ];
|
||||||
|
}
|
||||||
|
}</programlisting>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The plugins currently available are <literal>python</literal>,
|
||||||
|
<literal>perl</literal>, <literal>ruby</literal>, <literal>guile</literal>,
|
||||||
|
<literal>tcl</literal> and <literal>lua</literal>.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The python plugin allows the addition of extra libraries. For instance,
|
||||||
|
the <literal>inotify.py</literal> script in weechat-scripts requires
|
||||||
|
D-Bus or libnotify, and the <literal>fish.py</literal> script requires
|
||||||
|
pycrypto. To use these scripts, use the <literal>python</literal>
|
||||||
|
plugin's <literal>withPackages</literal> attribute:
|
||||||
|
<programlisting>weechat.override {configure = {availablePlugins, ...}: {
|
||||||
|
plugins = with availablePlugins; [
|
||||||
|
(python.withPackages (ps: with ps; [ pycrypto python-dbus ]))
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
83
doc/platform-notes.xml
Normal file
83
doc/platform-notes.xml
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xml:id="chap-platform-nodes">
|
||||||
|
|
||||||
|
<title>Platform Notes</title>
|
||||||
|
|
||||||
|
<section xml:id="sec-darwin">
|
||||||
|
|
||||||
|
<title>Darwin (macOS)</title>
|
||||||
|
<para>Some common issues when packaging software for darwin:</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The darwin <literal>stdenv</literal> uses clang instead of gcc.
|
||||||
|
When referring to the compiler <varname>$CC</varname> or <command>cc</command>
|
||||||
|
will work in both cases. Some builds hardcode gcc/g++ in their
|
||||||
|
build scripts, that can usually be fixed with using something
|
||||||
|
like <literal>makeFlags = [ "CC=cc" ];</literal> or by patching
|
||||||
|
the build scripts.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<programlisting>
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "libfoo-1.2.3";
|
||||||
|
# ...
|
||||||
|
buildPhase = ''
|
||||||
|
$CC -o hello hello.c
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
</programlisting>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
On darwin libraries are linked using absolute paths, libraries
|
||||||
|
are resolved by their <literal>install_name</literal> at link
|
||||||
|
time. Sometimes packages won't set this correctly causing the
|
||||||
|
library lookups to fail at runtime. This can be fixed by adding
|
||||||
|
extra linker flags or by running <command>install_name_tool -id</command>
|
||||||
|
during the <function>fixupPhase</function>.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<programlisting>
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "libfoo-1.2.3";
|
||||||
|
# ...
|
||||||
|
makeFlags = stdenv.lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/libfoo.dylib";
|
||||||
|
}
|
||||||
|
</programlisting>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Some packages assume xcode is available and use <command>xcrun</command>
|
||||||
|
to resolve build tools like <command>clang</command>, etc.
|
||||||
|
This causes errors like <code>xcode-select: error: no developer tools were found at '/Applications/Xcode.app'</code>
|
||||||
|
while the build doesn't actually depend on xcode.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<programlisting>
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "libfoo-1.2.3";
|
||||||
|
# ...
|
||||||
|
prePatch = ''
|
||||||
|
substituteInPlace Makefile \
|
||||||
|
--replace '/usr/bin/xcrun clang' clang
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
</programlisting>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The package <literal>xcbuild</literal> can be used to build projects
|
||||||
|
that really depend on Xcode, however projects that build some kind of
|
||||||
|
graphical interface won't work without using Xcode in an impure way.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
</itemizedlist>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</chapter>
|
|
@ -698,8 +698,14 @@ nothing.</para>
|
||||||
<listitem><para>A list of strings passed as additional flags to
|
<listitem><para>A list of strings passed as additional flags to
|
||||||
<command>make</command>. These flags are also used by the default
|
<command>make</command>. These flags are also used by the default
|
||||||
install and check phase. For setting make flags specific to the
|
install and check phase. For setting make flags specific to the
|
||||||
build phase, use <varname>buildFlags</varname> (see
|
build phase, use <varname>buildFlags</varname> (see below).
|
||||||
below).</para></listitem>
|
|
||||||
|
<programlisting>
|
||||||
|
makeFlags = [ "PREFIX=$(out)" ];
|
||||||
|
</programlisting>
|
||||||
|
|
||||||
|
<note><para>The flags are quoted in bash, but environment variables can
|
||||||
|
be specified by using the make syntax.</para></note></para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
|
|
@ -44,11 +44,13 @@
|
||||||
anderspapitto = "Anders Papitto <anderspapitto@gmail.com>";
|
anderspapitto = "Anders Papitto <anderspapitto@gmail.com>";
|
||||||
andir = "Andreas Rammhold <andreas@rammhold.de>";
|
andir = "Andreas Rammhold <andreas@rammhold.de>";
|
||||||
andres = "Andres Loeh <ksnixos@andres-loeh.de>";
|
andres = "Andres Loeh <ksnixos@andres-loeh.de>";
|
||||||
|
andrestylianos = "Andre S. Ramos <andre.stylianos@gmail.com>";
|
||||||
andrewrk = "Andrew Kelley <superjoe30@gmail.com>";
|
andrewrk = "Andrew Kelley <superjoe30@gmail.com>";
|
||||||
andsild = "Anders Sildnes <andsild@gmail.com>";
|
andsild = "Anders Sildnes <andsild@gmail.com>";
|
||||||
aneeshusa = "Aneesh Agrawal <aneeshusa@gmail.com>";
|
aneeshusa = "Aneesh Agrawal <aneeshusa@gmail.com>";
|
||||||
ankhers = "Justin Wood <justin.k.wood@gmail.com>";
|
ankhers = "Justin Wood <justin.k.wood@gmail.com>";
|
||||||
antono = "Antono Vasiljev <self@antono.info>";
|
antono = "Antono Vasiljev <self@antono.info>";
|
||||||
|
antonxy = "Anton Schirg <anton.schirg@posteo.de>";
|
||||||
apeschar = "Albert Peschar <albert@peschar.net>";
|
apeschar = "Albert Peschar <albert@peschar.net>";
|
||||||
apeyroux = "Alexandre Peyroux <alex@px.io>";
|
apeyroux = "Alexandre Peyroux <alex@px.io>";
|
||||||
ardumont = "Antoine R. Dumont <eniotna.t@gmail.com>";
|
ardumont = "Antoine R. Dumont <eniotna.t@gmail.com>";
|
||||||
|
@ -66,7 +68,7 @@
|
||||||
aycanirican = "Aycan iRiCAN <iricanaycan@gmail.com>";
|
aycanirican = "Aycan iRiCAN <iricanaycan@gmail.com>";
|
||||||
bachp = "Pascal Bach <pascal.bach@nextrem.ch>";
|
bachp = "Pascal Bach <pascal.bach@nextrem.ch>";
|
||||||
badi = "Badi' Abdul-Wahid <abdulwahidc@gmail.com>";
|
badi = "Badi' Abdul-Wahid <abdulwahidc@gmail.com>";
|
||||||
balajisivaraman = "Balaji Sivaraman<sivaraman.balaji@gmail.com>";
|
balajisivaraman = "Balaji Sivaraman <sivaraman.balaji@gmail.com>";
|
||||||
barrucadu = "Michael Walker <mike@barrucadu.co.uk>";
|
barrucadu = "Michael Walker <mike@barrucadu.co.uk>";
|
||||||
basvandijk = "Bas van Dijk <v.dijk.bas@gmail.com>";
|
basvandijk = "Bas van Dijk <v.dijk.bas@gmail.com>";
|
||||||
Baughn = "Svein Ove Aas <sveina@gmail.com>";
|
Baughn = "Svein Ove Aas <sveina@gmail.com>";
|
||||||
|
@ -93,6 +95,7 @@
|
||||||
bramd = "Bram Duvigneau <bram@bramd.nl>";
|
bramd = "Bram Duvigneau <bram@bramd.nl>";
|
||||||
bstrik = "Berno Strik <dutchman55@gmx.com>";
|
bstrik = "Berno Strik <dutchman55@gmx.com>";
|
||||||
bzizou = "Bruno Bzeznik <Bruno@bzizou.net>";
|
bzizou = "Bruno Bzeznik <Bruno@bzizou.net>";
|
||||||
|
c0bw3b = "Renaud <c0bw3b@gmail.com>";
|
||||||
c0dehero = "CodeHero <codehero@nerdpol.ch>";
|
c0dehero = "CodeHero <codehero@nerdpol.ch>";
|
||||||
calbrecht = "Christian Albrecht <christian.albrecht@mayflower.de>";
|
calbrecht = "Christian Albrecht <christian.albrecht@mayflower.de>";
|
||||||
calrama = "Moritz Maxeiner <moritz@ucworks.org>";
|
calrama = "Moritz Maxeiner <moritz@ucworks.org>";
|
||||||
|
@ -116,6 +119,7 @@
|
||||||
christopherpoole = "Christopher Mark Poole <mail@christopherpoole.net>";
|
christopherpoole = "Christopher Mark Poole <mail@christopherpoole.net>";
|
||||||
ciil = "Simon Lackerbauer <simon@lackerbauer.com>";
|
ciil = "Simon Lackerbauer <simon@lackerbauer.com>";
|
||||||
ckampka = "Christian Kampka <christian@kampka.net>";
|
ckampka = "Christian Kampka <christian@kampka.net>";
|
||||||
|
ckauhaus = "Christian Kauhaus <christian@kauhaus.de>";
|
||||||
cko = "Christine Koppelt <christine.koppelt@gmail.com>";
|
cko = "Christine Koppelt <christine.koppelt@gmail.com>";
|
||||||
cleverca22 = "Michael Bishop <cleverca22@gmail.com>";
|
cleverca22 = "Michael Bishop <cleverca22@gmail.com>";
|
||||||
cmcdragonkai = "Roger Qiu <roger.qiu@matrix.ai>";
|
cmcdragonkai = "Roger Qiu <roger.qiu@matrix.ai>";
|
||||||
|
@ -135,6 +139,7 @@
|
||||||
cryptix = "Henry Bubert <cryptix@riseup.net>";
|
cryptix = "Henry Bubert <cryptix@riseup.net>";
|
||||||
CrystalGamma = "Jona Stubbe <nixos@crystalgamma.de>";
|
CrystalGamma = "Jona Stubbe <nixos@crystalgamma.de>";
|
||||||
cstrahan = "Charles Strahan <charles@cstrahan.com>";
|
cstrahan = "Charles Strahan <charles@cstrahan.com>";
|
||||||
|
csingley = "Christopher Singley <csingley@gmail.com>";
|
||||||
cwoac = "Oliver Matthews <oliver@codersoffortune.net>";
|
cwoac = "Oliver Matthews <oliver@codersoffortune.net>";
|
||||||
DamienCassou = "Damien Cassou <damien@cassou.me>";
|
DamienCassou = "Damien Cassou <damien@cassou.me>";
|
||||||
danbst = "Danylo Hlynskyi <abcz2.uprola@gmail.com>";
|
danbst = "Danylo Hlynskyi <abcz2.uprola@gmail.com>";
|
||||||
|
@ -161,6 +166,7 @@
|
||||||
dgonyeo = "Derek Gonyeo <derek@gonyeo.com>";
|
dgonyeo = "Derek Gonyeo <derek@gonyeo.com>";
|
||||||
dipinhora = "Dipin Hora <dipinhora+github@gmail.com>";
|
dipinhora = "Dipin Hora <dipinhora+github@gmail.com>";
|
||||||
disassembler = "Samuel Leathers <disasm@gmail.com>";
|
disassembler = "Samuel Leathers <disasm@gmail.com>";
|
||||||
|
dizfer = "David Izquierdo <david@izquierdofernandez.com>";
|
||||||
dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>";
|
dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>";
|
||||||
DmitryTsygankov = "Dmitry Tsygankov <dmitry.tsygankov@gmail.com>";
|
DmitryTsygankov = "Dmitry Tsygankov <dmitry.tsygankov@gmail.com>";
|
||||||
dmjio = "David Johnson <djohnson.m@gmail.com>";
|
dmjio = "David Johnson <djohnson.m@gmail.com>";
|
||||||
|
@ -259,6 +265,7 @@
|
||||||
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
|
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
|
||||||
hce = "Hans-Christian Esperer <hc@hcesperer.org>";
|
hce = "Hans-Christian Esperer <hc@hcesperer.org>";
|
||||||
hectorj = "Hector Jusforgues <hector.jusforgues+nixos@gmail.com>";
|
hectorj = "Hector Jusforgues <hector.jusforgues+nixos@gmail.com>";
|
||||||
|
hedning = "Tor Hedin Brønner <torhedinbronner@gmail.com>";
|
||||||
heel = "Sergii Paryzhskyi <parizhskiy@gmail.com>";
|
heel = "Sergii Paryzhskyi <parizhskiy@gmail.com>";
|
||||||
henrytill = "Henry Till <henrytill@gmail.com>";
|
henrytill = "Henry Till <henrytill@gmail.com>";
|
||||||
hhm = "hhm <heehooman+nixpkgs@gmail.com>";
|
hhm = "hhm <heehooman+nixpkgs@gmail.com>";
|
||||||
|
@ -268,6 +275,7 @@
|
||||||
htr = "Hugo Tavares Reis <hugo@linux.com>";
|
htr = "Hugo Tavares Reis <hugo@linux.com>";
|
||||||
iand675 = "Ian Duncan <ian@iankduncan.com>";
|
iand675 = "Ian Duncan <ian@iankduncan.com>";
|
||||||
ianwookim = "Ian-Woo Kim <ianwookim@gmail.com>";
|
ianwookim = "Ian-Woo Kim <ianwookim@gmail.com>";
|
||||||
|
iblech = "Ingo Blechschmidt <iblech@speicherleck.de>";
|
||||||
igsha = "Igor Sharonov <igor.sharonov@gmail.com>";
|
igsha = "Igor Sharonov <igor.sharonov@gmail.com>";
|
||||||
ikervagyok = "Balázs Lengyel <ikervagyok@gmail.com>";
|
ikervagyok = "Balázs Lengyel <ikervagyok@gmail.com>";
|
||||||
infinisil = "Silvan Mosberger <infinisil@icloud.com>";
|
infinisil = "Silvan Mosberger <infinisil@icloud.com>";
|
||||||
|
@ -322,6 +330,7 @@
|
||||||
KibaFox = "Kiba Fox <kiba.fox@foxypossibilities.com>";
|
KibaFox = "Kiba Fox <kiba.fox@foxypossibilities.com>";
|
||||||
kierdavis = "Kier Davis <kierdavis@gmail.com>";
|
kierdavis = "Kier Davis <kierdavis@gmail.com>";
|
||||||
kiloreux = "Kiloreux Emperex <kiloreux@gmail.com>";
|
kiloreux = "Kiloreux Emperex <kiloreux@gmail.com>";
|
||||||
|
kini = "Keshav Kini <keshav.kini@gmail.com>";
|
||||||
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
|
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
|
||||||
knedlsepp = "Josef Kemetmüller <josef.kemetmueller@gmail.com>";
|
knedlsepp = "Josef Kemetmüller <josef.kemetmueller@gmail.com>";
|
||||||
konimex = "Muhammad Herdiansyah <herdiansyah@netc.eu>";
|
konimex = "Muhammad Herdiansyah <herdiansyah@netc.eu>";
|
||||||
|
@ -439,7 +448,7 @@
|
||||||
nicknovitski = "Nick Novitski <nixpkgs@nicknovitski.com>";
|
nicknovitski = "Nick Novitski <nixpkgs@nicknovitski.com>";
|
||||||
nico202 = "Nicolò Balzarotti <anothersms@gmail.com>";
|
nico202 = "Nicolò Balzarotti <anothersms@gmail.com>";
|
||||||
NikolaMandic = "Ratko Mladic <nikola@mandic.email>";
|
NikolaMandic = "Ratko Mladic <nikola@mandic.email>";
|
||||||
nixy = "Andrew R. M. <andrewmiller237@gmail.com>";
|
nixy = "Andrew R. M. <nixy@nixy.moe>";
|
||||||
nocoolnametom = "Tom Doggett <nocoolnametom@gmail.com>";
|
nocoolnametom = "Tom Doggett <nocoolnametom@gmail.com>";
|
||||||
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>";
|
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>";
|
||||||
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>";
|
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>";
|
||||||
|
@ -548,6 +557,7 @@
|
||||||
ryneeverett = "Ryne Everett <ryneeverett@gmail.com>";
|
ryneeverett = "Ryne Everett <ryneeverett@gmail.com>";
|
||||||
rzetterberg = "Richard Zetterberg <richard.zetterberg@gmail.com>";
|
rzetterberg = "Richard Zetterberg <richard.zetterberg@gmail.com>";
|
||||||
s1lvester = "Markus Silvester <s1lvester@bockhacker.me>";
|
s1lvester = "Markus Silvester <s1lvester@bockhacker.me>";
|
||||||
|
samdroid-apps = "Sam Parkinson <sam@sam.today>";
|
||||||
samuelrivas = "Samuel Rivas <samuelrivas@gmail.com>";
|
samuelrivas = "Samuel Rivas <samuelrivas@gmail.com>";
|
||||||
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>";
|
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>";
|
||||||
sargon = "Daniel Ehlers <danielehlers@mindeye.net>";
|
sargon = "Daniel Ehlers <danielehlers@mindeye.net>";
|
||||||
|
@ -557,6 +567,7 @@
|
||||||
schristo = "Scott Christopher <schristopher@konputa.com>";
|
schristo = "Scott Christopher <schristopher@konputa.com>";
|
||||||
scolobb = "Sergiu Ivanov <sivanov@colimite.fr>";
|
scolobb = "Sergiu Ivanov <sivanov@colimite.fr>";
|
||||||
sdll = "Sasha Illarionov <sasha.delly@gmail.com>";
|
sdll = "Sasha Illarionov <sasha.delly@gmail.com>";
|
||||||
|
SeanZicari = "Sean Zicari <sean.zicari@gmail.com>";
|
||||||
sepi = "Raffael Mancini <raffael@mancini.lu>";
|
sepi = "Raffael Mancini <raffael@mancini.lu>";
|
||||||
seppeljordan = "Sebastian Jordan <sebastian.jordan.mail@googlemail.com>";
|
seppeljordan = "Sebastian Jordan <sebastian.jordan.mail@googlemail.com>";
|
||||||
shanemikel = "Shane Pearlman <shanemikel1@gmail.com>";
|
shanemikel = "Shane Pearlman <shanemikel1@gmail.com>";
|
||||||
|
@ -580,6 +591,7 @@
|
||||||
snyh = "Xia Bin <snyh@snyh.org>";
|
snyh = "Xia Bin <snyh@snyh.org>";
|
||||||
solson = "Scott Olson <scott@solson.me>";
|
solson = "Scott Olson <scott@solson.me>";
|
||||||
sorpaas = "Wei Tang <hi@that.world>";
|
sorpaas = "Wei Tang <hi@that.world>";
|
||||||
|
sorki = "Richard Marko <srk@48.io>";
|
||||||
spacefrogg = "Michael Raitza <spacefrogg-nixos@meterriblecrew.net>";
|
spacefrogg = "Michael Raitza <spacefrogg-nixos@meterriblecrew.net>";
|
||||||
spencerjanssen = "Spencer Janssen <spencerjanssen@gmail.com>";
|
spencerjanssen = "Spencer Janssen <spencerjanssen@gmail.com>";
|
||||||
spinus = "Tomasz Czyż <tomasz.czyz@gmail.com>";
|
spinus = "Tomasz Czyż <tomasz.czyz@gmail.com>";
|
||||||
|
@ -618,6 +630,7 @@
|
||||||
ThomasMader = "Thomas Mader <thomas.mader@gmail.com>";
|
ThomasMader = "Thomas Mader <thomas.mader@gmail.com>";
|
||||||
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";
|
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";
|
||||||
timbertson = "Tim Cuthbertson <tim@gfxmonk.net>";
|
timbertson = "Tim Cuthbertson <tim@gfxmonk.net>";
|
||||||
|
timokau = "Timo Kaufmann <timokau@zoho.com>";
|
||||||
titanous = "Jonathan Rudenberg <jonathan@titanous.com>";
|
titanous = "Jonathan Rudenberg <jonathan@titanous.com>";
|
||||||
tnias = "Philipp Bartsch <phil@grmr.de>";
|
tnias = "Philipp Bartsch <phil@grmr.de>";
|
||||||
tohl = "Tomas Hlavaty <tom@logand.com>";
|
tohl = "Tomas Hlavaty <tom@logand.com>";
|
||||||
|
|
|
@ -338,7 +338,7 @@ rec {
|
||||||
# Type-check the remaining definitions, and merge them.
|
# Type-check the remaining definitions, and merge them.
|
||||||
mergedValue = foldl' (res: def:
|
mergedValue = foldl' (res: def:
|
||||||
if type.check def.value then res
|
if type.check def.value then res
|
||||||
else throw "The option value `${showOption loc}' in `${def.file}' is not a ${type.description}.")
|
else throw "The option value `${showOption loc}' in `${def.file}' is not of type `${type.description}'.")
|
||||||
(type.merge loc defsFinal) defsFinal;
|
(type.merge loc defsFinal) defsFinal;
|
||||||
|
|
||||||
isDefined = defsFinal != [];
|
isDefined = defsFinal != [];
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
rec {
|
rec {
|
||||||
pcBase = {
|
pcBase = {
|
||||||
name = "pc";
|
name = "pc";
|
||||||
uboot = null;
|
|
||||||
kernelHeadersBaseConfig = "defconfig";
|
kernelHeadersBaseConfig = "defconfig";
|
||||||
kernelBaseConfig = "defconfig";
|
kernelBaseConfig = "defconfig";
|
||||||
# Build whatever possible as a module, if not stated in the extra config.
|
# Build whatever possible as a module, if not stated in the extra config.
|
||||||
|
@ -50,9 +49,6 @@ rec {
|
||||||
kernelTarget = "uImage";
|
kernelTarget = "uImage";
|
||||||
# TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
|
# TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
|
||||||
#kernelDTB = true;
|
#kernelDTB = true;
|
||||||
|
|
||||||
# XXX can be anything non-null, pkgs actually only cares if it is set or not
|
|
||||||
uboot = "pogoplug4";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sheevaplug = {
|
sheevaplug = {
|
||||||
|
@ -162,9 +158,6 @@ rec {
|
||||||
'';
|
'';
|
||||||
kernelMakeFlags = [ "LOADADDR=0x0200000" ];
|
kernelMakeFlags = [ "LOADADDR=0x0200000" ];
|
||||||
kernelTarget = "uImage";
|
kernelTarget = "uImage";
|
||||||
uboot = "sheevaplug";
|
|
||||||
# Only for uboot = uboot :
|
|
||||||
ubootConfig = "sheevaplug_config";
|
|
||||||
kernelDTB = true; # Beyond 3.10
|
kernelDTB = true; # Beyond 3.10
|
||||||
gcc = {
|
gcc = {
|
||||||
arch = "armv5te";
|
arch = "armv5te";
|
||||||
|
@ -251,7 +244,6 @@ rec {
|
||||||
LATENCYTOP y
|
LATENCYTOP y
|
||||||
'';
|
'';
|
||||||
kernelTarget = "zImage";
|
kernelTarget = "zImage";
|
||||||
uboot = null;
|
|
||||||
gcc = {
|
gcc = {
|
||||||
arch = "armv6";
|
arch = "armv6";
|
||||||
fpu = "vfp";
|
fpu = "vfp";
|
||||||
|
@ -342,7 +334,6 @@ rec {
|
||||||
XEN? n
|
XEN? n
|
||||||
'';
|
'';
|
||||||
kernelTarget = "zImage";
|
kernelTarget = "zImage";
|
||||||
uboot = null;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
scaleway-c1 = armv7l-hf-multiplatform // {
|
scaleway-c1 = armv7l-hf-multiplatform // {
|
||||||
|
@ -374,7 +365,6 @@ rec {
|
||||||
kernelMakeFlags = [ "LOADADDR=0x10800000" ];
|
kernelMakeFlags = [ "LOADADDR=0x10800000" ];
|
||||||
kernelTarget = "uImage";
|
kernelTarget = "uImage";
|
||||||
kernelDTB = true;
|
kernelDTB = true;
|
||||||
uboot = true; #XXX: any non-null value here is needed so that mkimage is present to build kernelTarget uImage
|
|
||||||
gcc = {
|
gcc = {
|
||||||
cpu = "cortex-a9";
|
cpu = "cortex-a9";
|
||||||
fpu = "neon";
|
fpu = "neon";
|
||||||
|
@ -464,7 +454,6 @@ rec {
|
||||||
FTRACE n
|
FTRACE n
|
||||||
'';
|
'';
|
||||||
kernelTarget = "vmlinux";
|
kernelTarget = "vmlinux";
|
||||||
uboot = null;
|
|
||||||
gcc = {
|
gcc = {
|
||||||
arch = "loongson2f";
|
arch = "loongson2f";
|
||||||
abi = "n32";
|
abi = "n32";
|
||||||
|
@ -477,7 +466,6 @@ rec {
|
||||||
kernelAutoModules = false;
|
kernelAutoModules = false;
|
||||||
kernelExtraConfig = ""; # TBD kernel config
|
kernelExtraConfig = ""; # TBD kernel config
|
||||||
kernelTarget = "zImage";
|
kernelTarget = "zImage";
|
||||||
uboot = null;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
armv7l-hf-multiplatform = {
|
armv7l-hf-multiplatform = {
|
||||||
|
@ -489,7 +477,6 @@ rec {
|
||||||
kernelDTB = true;
|
kernelDTB = true;
|
||||||
kernelAutoModules = true;
|
kernelAutoModules = true;
|
||||||
kernelPreferBuiltin = true;
|
kernelPreferBuiltin = true;
|
||||||
uboot = null;
|
|
||||||
kernelTarget = "zImage";
|
kernelTarget = "zImage";
|
||||||
kernelExtraConfig = ''
|
kernelExtraConfig = ''
|
||||||
# Fix broken sunxi-sid nvmem driver.
|
# Fix broken sunxi-sid nvmem driver.
|
||||||
|
@ -552,7 +539,6 @@ rec {
|
||||||
# which our initrd builder can't currently do easily.
|
# which our initrd builder can't currently do easily.
|
||||||
USB_XHCI_TEGRA m
|
USB_XHCI_TEGRA m
|
||||||
'';
|
'';
|
||||||
uboot = null;
|
|
||||||
kernelTarget = "Image";
|
kernelTarget = "Image";
|
||||||
gcc = {
|
gcc = {
|
||||||
arch = "armv8-a";
|
arch = "armv8-a";
|
||||||
|
|
|
@ -61,6 +61,16 @@ checkConfigError() {
|
||||||
checkConfigOutput "false" config.enable ./declare-enable.nix
|
checkConfigOutput "false" config.enable ./declare-enable.nix
|
||||||
checkConfigError 'The option .* defined in .* does not exist.' config.enable ./define-enable.nix
|
checkConfigError 'The option .* defined in .* does not exist.' config.enable ./define-enable.nix
|
||||||
|
|
||||||
|
# Check integer types.
|
||||||
|
# unsigned
|
||||||
|
checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
|
||||||
|
checkConfigError 'The option value .* in .* is not of type.*unsigned integer.*' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
|
||||||
|
# positive
|
||||||
|
checkConfigError 'The option value .* in .* is not of type.*positive integer.*' config.value ./declare-int-positive-value.nix ./define-value-int-zero.nix
|
||||||
|
# between
|
||||||
|
checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
|
||||||
|
checkConfigError 'The option value .* in .* is not of type.*between.*-21 and 43.*inclusive.*' config.value ./declare-int-between-value.nix ./define-value-int-negative.nix
|
||||||
|
|
||||||
# Check mkForce without submodules.
|
# Check mkForce without submodules.
|
||||||
set -- config.enable ./declare-enable.nix ./define-enable.nix
|
set -- config.enable ./declare-enable.nix ./define-enable.nix
|
||||||
checkConfigOutput "true" "$@"
|
checkConfigOutput "true" "$@"
|
||||||
|
@ -126,7 +136,7 @@ checkConfigOutput "true" "$@" ./define-module-check.nix
|
||||||
# Check coerced value.
|
# Check coerced value.
|
||||||
checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
|
checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
|
||||||
checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
|
checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
|
||||||
checkConfigError 'The option value .* in .* is not a string or integer.' config.value ./declare-coerced-value.nix ./define-value-list.nix
|
checkConfigError 'The option value .* in .* is not.*string or signed integer.*' config.value ./declare-coerced-value.nix ./define-value-list.nix
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
====== module tests ======
|
====== module tests ======
|
||||||
|
|
9
lib/tests/modules/declare-int-between-value.nix
Normal file
9
lib/tests/modules/declare-int-between-value.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
value = lib.mkOption {
|
||||||
|
type = lib.types.ints.between (-21) 43;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
lib/tests/modules/declare-int-positive-value.nix
Normal file
9
lib/tests/modules/declare-int-positive-value.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
value = lib.mkOption {
|
||||||
|
type = lib.types.ints.positive;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
lib/tests/modules/declare-int-unsigned-value.nix
Normal file
9
lib/tests/modules/declare-int-unsigned-value.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
value = lib.mkOption {
|
||||||
|
type = lib.types.ints.unsigned;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
3
lib/tests/modules/define-value-int-negative.nix
Normal file
3
lib/tests/modules/define-value-int-negative.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
value = -23;
|
||||||
|
}
|
3
lib/tests/modules/define-value-int-positive.nix
Normal file
3
lib/tests/modules/define-value-int-positive.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
value = 42;
|
||||||
|
}
|
3
lib/tests/modules/define-value-int-zero.nix
Normal file
3
lib/tests/modules/define-value-int-zero.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
value = 0;
|
||||||
|
}
|
|
@ -109,11 +109,64 @@ rec {
|
||||||
|
|
||||||
int = mkOptionType rec {
|
int = mkOptionType rec {
|
||||||
name = "int";
|
name = "int";
|
||||||
description = "integer";
|
description = "signed integer";
|
||||||
check = isInt;
|
check = isInt;
|
||||||
merge = mergeOneOption;
|
merge = mergeOneOption;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Specialized subdomains of int
|
||||||
|
ints =
|
||||||
|
let
|
||||||
|
betweenDesc = lowest: highest:
|
||||||
|
"${toString lowest} and ${toString highest} (both inclusive)";
|
||||||
|
between = lowest: highest: assert lowest <= highest;
|
||||||
|
addCheck int (x: x >= lowest && x <= highest) // {
|
||||||
|
name = "intBetween";
|
||||||
|
description = "integer between ${betweenDesc lowest highest}";
|
||||||
|
};
|
||||||
|
ign = lowest: highest: name: docStart:
|
||||||
|
between lowest highest // {
|
||||||
|
inherit name;
|
||||||
|
description = docStart + "; between ${betweenDesc lowest highest}";
|
||||||
|
};
|
||||||
|
unsign = bit: range: ign 0 (range - 1)
|
||||||
|
"unsignedInt${toString bit}" "${toString bit} bit unsigned integer";
|
||||||
|
sign = bit: range: ign (0 - (range / 2)) (range / 2 - 1)
|
||||||
|
"signedInt${toString bit}" "${toString bit} bit signed integer";
|
||||||
|
|
||||||
|
in rec {
|
||||||
|
/* An int with a fixed range.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* (ints.between 0 100).check (-1)
|
||||||
|
* => false
|
||||||
|
* (ints.between 0 100).check (101)
|
||||||
|
* => false
|
||||||
|
* (ints.between 0 0).check 0
|
||||||
|
* => true
|
||||||
|
*/
|
||||||
|
inherit between;
|
||||||
|
|
||||||
|
unsigned = addCheck types.int (x: x >= 0) // {
|
||||||
|
name = "unsignedInt";
|
||||||
|
description = "unsigned integer, meaning >=0";
|
||||||
|
};
|
||||||
|
positive = addCheck types.int (x: x > 0) // {
|
||||||
|
name = "positiveInt";
|
||||||
|
description = "positive integer, meaning >0";
|
||||||
|
};
|
||||||
|
u8 = unsign 8 256;
|
||||||
|
u16 = unsign 16 65536;
|
||||||
|
# the biggest int a 64-bit Nix accepts is 2^63 - 1 (9223372036854775808), for a 32-bit Nix it is 2^31 - 1 (2147483647)
|
||||||
|
# the smallest int a 64-bit Nix accepts is -2^63 (-9223372036854775807), for a 32-bit Nix it is -2^31 (-2147483648)
|
||||||
|
# u32 = unsign 32 4294967296;
|
||||||
|
# u64 = unsign 64 18446744073709551616;
|
||||||
|
|
||||||
|
s8 = sign 8 256;
|
||||||
|
s16 = sign 16 65536;
|
||||||
|
# s32 = sign 32 4294967296;
|
||||||
|
};
|
||||||
|
|
||||||
str = mkOptionType {
|
str = mkOptionType {
|
||||||
name = "str";
|
name = "str";
|
||||||
description = "string";
|
description = "string";
|
||||||
|
@ -172,7 +225,7 @@ rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
# drop this in the future:
|
# drop this in the future:
|
||||||
list = builtins.trace "`types.list' is deprecated; use `types.listOf' instead" types.listOf;
|
list = builtins.trace "`types.list` is deprecated; use `types.listOf` instead" types.listOf;
|
||||||
|
|
||||||
listOf = elemType: mkOptionType rec {
|
listOf = elemType: mkOptionType rec {
|
||||||
name = "listOf";
|
name = "listOf";
|
||||||
|
@ -189,7 +242,7 @@ rec {
|
||||||
).optionalValue
|
).optionalValue
|
||||||
) def.value
|
) def.value
|
||||||
else
|
else
|
||||||
throw "The option value `${showOption loc}' in `${def.file}' is not a list.") defs)));
|
throw "The option value `${showOption loc}` in `${def.file}` is not a list.") defs)));
|
||||||
getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*"]);
|
getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*"]);
|
||||||
getSubModules = elemType.getSubModules;
|
getSubModules = elemType.getSubModules;
|
||||||
substSubModules = m: listOf (elemType.substSubModules m);
|
substSubModules = m: listOf (elemType.substSubModules m);
|
||||||
|
@ -260,7 +313,7 @@ rec {
|
||||||
let nrNulls = count (def: def.value == null) defs; in
|
let nrNulls = count (def: def.value == null) defs; in
|
||||||
if nrNulls == length defs then null
|
if nrNulls == length defs then null
|
||||||
else if nrNulls != 0 then
|
else if nrNulls != 0 then
|
||||||
throw "The option `${showOption loc}' is defined both null and not null, in ${showFiles (getFiles defs)}."
|
throw "The option `${showOption loc}` is defined both null and not null, in ${showFiles (getFiles defs)}."
|
||||||
else elemType.merge loc defs;
|
else elemType.merge loc defs;
|
||||||
getSubOptions = elemType.getSubOptions;
|
getSubOptions = elemType.getSubOptions;
|
||||||
getSubModules = elemType.getSubModules;
|
getSubModules = elemType.getSubModules;
|
||||||
|
@ -288,8 +341,17 @@ rec {
|
||||||
}).config;
|
}).config;
|
||||||
getSubOptions = prefix: (evalModules
|
getSubOptions = prefix: (evalModules
|
||||||
{ modules = opts'; inherit prefix;
|
{ modules = opts'; inherit prefix;
|
||||||
# FIXME: hack to get shit to evaluate.
|
# This is a work-around due to the fact that some sub-modules,
|
||||||
args = { name = ""; }; }).options;
|
# such as the one included in an attribute set, expects a "args"
|
||||||
|
# attribute to be given to the sub-module. As the option
|
||||||
|
# evaluation does not have any specific attribute name, we
|
||||||
|
# provide a default one for the documentation.
|
||||||
|
#
|
||||||
|
# This is mandatory as some option declaration might use the
|
||||||
|
# "name" attribute given as argument of the submodule and use it
|
||||||
|
# as the default of option declarations.
|
||||||
|
args.name = "<name>";
|
||||||
|
}).options;
|
||||||
getSubModules = opts';
|
getSubModules = opts';
|
||||||
substSubModules = m: submodule m;
|
substSubModules = m: submodule m;
|
||||||
functor = (defaultFunctor name) // {
|
functor = (defaultFunctor name) // {
|
||||||
|
|
|
@ -18,6 +18,7 @@ import os
|
||||||
import re
|
import re
|
||||||
import requests
|
import requests
|
||||||
import toolz
|
import toolz
|
||||||
|
from concurrent.futures import ThreadPoolExecutor as pool
|
||||||
|
|
||||||
INDEX = "https://pypi.io/pypi"
|
INDEX = "https://pypi.io/pypi"
|
||||||
"""url of PyPI"""
|
"""url of PyPI"""
|
||||||
|
@ -235,7 +236,8 @@ def main():
|
||||||
|
|
||||||
packages = map(os.path.abspath, args.package)
|
packages = map(os.path.abspath, args.package)
|
||||||
|
|
||||||
count = list(map(_update, packages))
|
with pool() as p:
|
||||||
|
count = list(p.map(_update, packages))
|
||||||
|
|
||||||
logging.info("{} package(s) updated".format(sum(count)))
|
logging.info("{} package(s) updated".format(sum(count)))
|
||||||
|
|
||||||
|
|
|
@ -22,10 +22,6 @@
|
||||||
<listitem><para>A boolean, its values can be <literal>true</literal> or
|
<listitem><para>A boolean, its values can be <literal>true</literal> or
|
||||||
<literal>false</literal>.</para></listitem>
|
<literal>false</literal>.</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
|
||||||
<term><varname>types.int</varname></term>
|
|
||||||
<listitem><para>An integer.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>types.path</varname></term>
|
<term><varname>types.path</varname></term>
|
||||||
<listitem><para>A filesystem path, defined as anything that when coerced to
|
<listitem><para>A filesystem path, defined as anything that when coerced to
|
||||||
|
@ -39,7 +35,59 @@
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
<para>String related types:</para>
|
<para>Integer-related types:</para>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>types.int</varname></term>
|
||||||
|
<listitem><para>A signed integer.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<varname>types.ints.{s8, s16, s32}</varname>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Signed integers with a fixed length (8, 16 or 32 bits).
|
||||||
|
They go from
|
||||||
|
<inlineequation><mathphrase>−2<superscript>n</superscript>/2</mathphrase>
|
||||||
|
</inlineequation> to <inlineequation>
|
||||||
|
<mathphrase>2<superscript>n</superscript>/2−1</mathphrase>
|
||||||
|
</inlineequation>
|
||||||
|
respectively (e.g. <literal>−128</literal> to <literal>127</literal>
|
||||||
|
for 8 bits).
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<varname>types.ints.unsigned</varname>
|
||||||
|
</term>
|
||||||
|
<listitem><para>An unsigned integer (that is >= 0).
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<varname>types.ints.{u8, u16, u32}</varname>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Unsigned integers with a fixed length (8, 16 or 32 bits).
|
||||||
|
They go from
|
||||||
|
<inlineequation><mathphrase>0</mathphrase></inlineequation> to <inlineequation>
|
||||||
|
<mathphrase>2<superscript>n</superscript>−1</mathphrase>
|
||||||
|
</inlineequation>
|
||||||
|
respectively (e.g. <literal>0</literal> to <literal>255</literal>
|
||||||
|
for 8 bits).
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<varname>types.ints.positive</varname>
|
||||||
|
</term>
|
||||||
|
<listitem><para>A positive integer (that is > 0).
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
|
||||||
|
<para>String-related types:</para>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
@ -68,7 +116,7 @@
|
||||||
|
|
||||||
<section><title>Value Types</title>
|
<section><title>Value Types</title>
|
||||||
|
|
||||||
<para>Value types are type that take a value parameter.</para>
|
<para>Value types are types that take a value parameter.</para>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
@ -84,6 +132,17 @@
|
||||||
<replaceable>sep</replaceable>, e.g. <literal>types.separatedString
|
<replaceable>sep</replaceable>, e.g. <literal>types.separatedString
|
||||||
"|"</literal>.</para></listitem>
|
"|"</literal>.</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<varname>types.ints.between</varname>
|
||||||
|
<replaceable>lowest</replaceable>
|
||||||
|
<replaceable>highest</replaceable>
|
||||||
|
</term>
|
||||||
|
<listitem><para>An integer between <replaceable>lowest</replaceable>
|
||||||
|
and <replaceable>highest</replaceable> (both inclusive).
|
||||||
|
Useful for creating types like <literal>types.port</literal>.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>types.submodule</varname> <replaceable>o</replaceable></term>
|
<term><varname>types.submodule</varname> <replaceable>o</replaceable></term>
|
||||||
<listitem><para>A set of sub options <replaceable>o</replaceable>.
|
<listitem><para>A set of sub options <replaceable>o</replaceable>.
|
||||||
|
|
|
@ -16,7 +16,8 @@
|
||||||
hardware.</para></listitem>
|
hardware.</para></listitem>
|
||||||
|
|
||||||
<listitem><para>The NixOS manual is available on virtual console 8
|
<listitem><para>The NixOS manual is available on virtual console 8
|
||||||
(press Alt+F8 to access).</para></listitem>
|
(press Alt+F8 to access) or by running <command>nixos-help</command>.
|
||||||
|
</para></listitem>
|
||||||
|
|
||||||
<listitem><para>You get logged in as <literal>root</literal>
|
<listitem><para>You get logged in as <literal>root</literal>
|
||||||
(with empty password).</para></listitem>
|
(with empty password).</para></listitem>
|
||||||
|
@ -139,6 +140,11 @@
|
||||||
the GRUB boot loader is to be installed. Without it, NixOS cannot
|
the GRUB boot loader is to be installed. Without it, NixOS cannot
|
||||||
boot.</para>
|
boot.</para>
|
||||||
|
|
||||||
|
<para>If there are other operating systems running on the machine before
|
||||||
|
installing NixOS, the
|
||||||
|
<option>boot.loader.grub.useOSProber</option> option can be set to
|
||||||
|
<literal>true</literal> to automatically add them to the grub menu.</para>
|
||||||
|
|
||||||
<para>Another critical option is <option>fileSystems</option>,
|
<para>Another critical option is <option>fileSystems</option>,
|
||||||
specifying the file systems that need to be mounted by NixOS.
|
specifying the file systems that need to be mounted by NixOS.
|
||||||
However, you typically don’t need to set it yourself, because
|
However, you typically don’t need to set it yourself, because
|
||||||
|
|
|
@ -63,6 +63,15 @@ following incompatible changes:</para>
|
||||||
pass literal dollar signs through Postfix, double them.
|
pass literal dollar signs through Postfix, double them.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The <literal>postage</literal> package (for web-based PostgreSQL
|
||||||
|
administration) has been renamed to <literal>pgmanage</literal>. The
|
||||||
|
corresponding module has also been renamed. To migrate please rename all
|
||||||
|
<option>services.postage</option> options to
|
||||||
|
<option>services.pgmanage</option>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -93,7 +93,7 @@ in
|
||||||
hardware.opengl.extraPackages = mkOption {
|
hardware.opengl.extraPackages = mkOption {
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
default = [];
|
default = [];
|
||||||
example = literalExample "with pkgs; [ vaapiIntel libvdpau-va-gl vaapiVdpau ]";
|
example = literalExample "with pkgs; [ vaapiIntel libvdpau-va-gl vaapiVdpau intel-ocl ]";
|
||||||
description = ''
|
description = ''
|
||||||
Additional packages to add to OpenGL drivers. This can be used
|
Additional packages to add to OpenGL drivers. This can be used
|
||||||
to add OpenCL drivers, VA-API/VDPAU drivers etc.
|
to add OpenCL drivers, VA-API/VDPAU drivers etc.
|
||||||
|
|
|
@ -8,6 +8,7 @@ use File::Basename;
|
||||||
use File::Slurp;
|
use File::Slurp;
|
||||||
use File::stat;
|
use File::stat;
|
||||||
|
|
||||||
|
umask(0022);
|
||||||
|
|
||||||
sub uniq {
|
sub uniq {
|
||||||
my %seen;
|
my %seen;
|
||||||
|
|
|
@ -207,11 +207,12 @@
|
||||||
ripple-data-api = 186;
|
ripple-data-api = 186;
|
||||||
mediatomb = 187;
|
mediatomb = 187;
|
||||||
rdnssd = 188;
|
rdnssd = 188;
|
||||||
# ihaskell = 189; # unused
|
ihaskell = 189;
|
||||||
i2p = 190;
|
i2p = 190;
|
||||||
lambdabot = 191;
|
lambdabot = 191;
|
||||||
asterisk = 192;
|
asterisk = 192;
|
||||||
plex = 193;
|
plex = 193;
|
||||||
|
plexpy = 195;
|
||||||
grafana = 196;
|
grafana = 196;
|
||||||
skydns = 197;
|
skydns = 197;
|
||||||
# ripple-rest = 198; # unused, removed 2017-08-12
|
# ripple-rest = 198; # unused, removed 2017-08-12
|
||||||
|
@ -483,7 +484,7 @@
|
||||||
#ripple-data-api = 186; #unused
|
#ripple-data-api = 186; #unused
|
||||||
mediatomb = 187;
|
mediatomb = 187;
|
||||||
#rdnssd = 188; # unused
|
#rdnssd = 188; # unused
|
||||||
# ihaskell = 189; # unused
|
ihaskell = 189;
|
||||||
i2p = 190;
|
i2p = 190;
|
||||||
lambdabot = 191;
|
lambdabot = 191;
|
||||||
asterisk = 192;
|
asterisk = 192;
|
||||||
|
|
|
@ -185,7 +185,7 @@
|
||||||
./services/databases/neo4j.nix
|
./services/databases/neo4j.nix
|
||||||
./services/databases/openldap.nix
|
./services/databases/openldap.nix
|
||||||
./services/databases/opentsdb.nix
|
./services/databases/opentsdb.nix
|
||||||
./services/databases/postage.nix
|
./services/databases/pgmanage.nix
|
||||||
./services/databases/postgresql.nix
|
./services/databases/postgresql.nix
|
||||||
./services/databases/redis.nix
|
./services/databases/redis.nix
|
||||||
./services/databases/riak.nix
|
./services/databases/riak.nix
|
||||||
|
@ -304,7 +304,7 @@
|
||||||
./services/misc/gogs.nix
|
./services/misc/gogs.nix
|
||||||
./services/misc/gollum.nix
|
./services/misc/gollum.nix
|
||||||
./services/misc/gpsd.nix
|
./services/misc/gpsd.nix
|
||||||
#./services/misc/ihaskell.nix
|
./services/misc/ihaskell.nix
|
||||||
./services/misc/irkerd.nix
|
./services/misc/irkerd.nix
|
||||||
./services/misc/jackett.nix
|
./services/misc/jackett.nix
|
||||||
./services/misc/logkeys.nix
|
./services/misc/logkeys.nix
|
||||||
|
@ -328,6 +328,7 @@
|
||||||
./services/misc/parsoid.nix
|
./services/misc/parsoid.nix
|
||||||
./services/misc/phd.nix
|
./services/misc/phd.nix
|
||||||
./services/misc/plex.nix
|
./services/misc/plex.nix
|
||||||
|
./services/misc/plexpy.nix
|
||||||
./services/misc/pykms.nix
|
./services/misc/pykms.nix
|
||||||
./services/misc/radarr.nix
|
./services/misc/radarr.nix
|
||||||
./services/misc/redmine.nix
|
./services/misc/redmine.nix
|
||||||
|
@ -412,6 +413,7 @@
|
||||||
./services/networking/asterisk.nix
|
./services/networking/asterisk.nix
|
||||||
./services/networking/atftpd.nix
|
./services/networking/atftpd.nix
|
||||||
./services/networking/avahi-daemon.nix
|
./services/networking/avahi-daemon.nix
|
||||||
|
./services/networking/babeld.nix
|
||||||
./services/networking/bind.nix
|
./services/networking/bind.nix
|
||||||
./services/networking/autossh.nix
|
./services/networking/autossh.nix
|
||||||
./services/networking/bird.nix
|
./services/networking/bird.nix
|
||||||
|
|
|
@ -148,11 +148,11 @@ in
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
hostNames = [ "myhost" "myhost.mydomain.com" "10.10.1.4" ];
|
hostNames = [ "myhost" "myhost.mydomain.com" "10.10.1.4" ];
|
||||||
publicKeyFile = "./pubkeys/myhost_ssh_host_dsa_key.pub";
|
publicKeyFile = ./pubkeys/myhost_ssh_host_dsa_key.pub;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
hostNames = [ "myhost2" ];
|
hostNames = [ "myhost2" ];
|
||||||
publicKeyFile = "./pubkeys/myhost2_ssh_host_dsa_key.pub";
|
publicKeyFile = ./pubkeys/myhost2_ssh_host_dsa_key.pub;
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -10,7 +10,7 @@ let
|
||||||
#! ${pkgs.stdenv.shell}
|
#! ${pkgs.stdenv.shell}
|
||||||
${cfg.extraSessionCommands}
|
${cfg.extraSessionCommands}
|
||||||
PATH="${sway}/bin:$PATH"
|
PATH="${sway}/bin:$PATH"
|
||||||
exec ${pkgs.dbus.dbus-launch} --exit-with-session "${sway}/bin/sway"
|
exec ${pkgs.dbus.dbus-launch} --exit-with-session sway-setcap
|
||||||
'';
|
'';
|
||||||
swayJoined = pkgs.symlinkJoin {
|
swayJoined = pkgs.symlinkJoin {
|
||||||
name = "sway-wrapped";
|
name = "sway-wrapped";
|
||||||
|
@ -53,7 +53,8 @@ in
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages;
|
environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages;
|
||||||
security.wrappers.sway = {
|
security.wrappers.sway = {
|
||||||
source = "${swayJoined}/bin/sway";
|
program = "sway-setcap";
|
||||||
|
source = "${sway}/bin/sway";
|
||||||
capabilities = "cap_sys_ptrace,cap_sys_tty_config=eip";
|
capabilities = "cap_sys_ptrace,cap_sys_tty_config=eip";
|
||||||
owner = "root";
|
owner = "root";
|
||||||
group = "sway";
|
group = "sway";
|
||||||
|
|
|
@ -139,6 +139,20 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
production = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
If set to true, use Let's Encrypt's production environment
|
||||||
|
instead of the staging environment. The main benefit of the
|
||||||
|
staging environment is to get much higher rate limits.
|
||||||
|
|
||||||
|
See
|
||||||
|
<literal>https://letsencrypt.org/docs/staging-environment</literal>
|
||||||
|
for more detail.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
certs = mkOption {
|
certs = mkOption {
|
||||||
default = { };
|
default = { };
|
||||||
type = with types; attrsOf (submodule certOpts);
|
type = with types; attrsOf (submodule certOpts);
|
||||||
|
@ -177,7 +191,9 @@ in
|
||||||
cmdline = [ "-v" "-d" domain "--default_root" data.webroot "--valid_min" cfg.validMin ]
|
cmdline = [ "-v" "-d" domain "--default_root" data.webroot "--valid_min" cfg.validMin ]
|
||||||
++ optionals (data.email != null) [ "--email" data.email ]
|
++ optionals (data.email != null) [ "--email" data.email ]
|
||||||
++ concatMap (p: [ "-f" p ]) data.plugins
|
++ concatMap (p: [ "-f" p ]) data.plugins
|
||||||
++ concatLists (mapAttrsToList (name: root: [ "-d" (if root == null then name else "${name}:${root}")]) data.extraDomains);
|
++ concatLists (mapAttrsToList (name: root: [ "-d" (if root == null then name else "${name}:${root}")]) data.extraDomains)
|
||||||
|
++ (if cfg.production then []
|
||||||
|
else ["--server" "https://acme-staging.api.letsencrypt.org/directory"]);
|
||||||
acmeService = {
|
acmeService = {
|
||||||
description = "Renew ACME Certificate for ${cert}";
|
description = "Renew ACME Certificate for ${cert}";
|
||||||
after = [ "network.target" "network-online.target" ];
|
after = [ "network.target" "network-online.target" ];
|
||||||
|
|
|
@ -89,8 +89,5 @@ services.nginx = {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>At the moment you still have to restart Nginx after the ACME
|
|
||||||
certs arrive.</para>
|
|
||||||
</section>
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
|
@ -33,8 +33,8 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
runtimePackages = mkOption {
|
runtimePackages = mkOption {
|
||||||
default = [ pkgs.nix ];
|
default = [ pkgs.bash pkgs.nix ];
|
||||||
defaultText = "[ pkgs.nix ]";
|
defaultText = "[ pkgs.bash pkgs.nix ]";
|
||||||
description = "Add programs to the buildkite-agent environment";
|
description = "Add programs to the buildkite-agent environment";
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
};
|
};
|
||||||
|
|
|
@ -67,7 +67,7 @@ in
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
example = literalExample "0.0.0.0";
|
example = literalExample "0.0.0.0";
|
||||||
description = "Address to bind to. The default it to bind to all addresses";
|
description = "Address to bind to. The default is to bind to all addresses";
|
||||||
};
|
};
|
||||||
|
|
||||||
port = mkOption {
|
port = mkOption {
|
||||||
|
|
|
@ -3,16 +3,16 @@
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.postage;
|
cfg = config.services.pgmanage;
|
||||||
|
|
||||||
confFile = pkgs.writeTextFile {
|
confFile = pkgs.writeTextFile {
|
||||||
name = "postage.conf";
|
name = "pgmanage.conf";
|
||||||
text = ''
|
text = ''
|
||||||
connection_file = ${postageConnectionsFile}
|
connection_file = ${pgmanageConnectionsFile}
|
||||||
|
|
||||||
allow_custom_connections = ${builtins.toJSON cfg.allowCustomConnections}
|
allow_custom_connections = ${builtins.toJSON cfg.allowCustomConnections}
|
||||||
|
|
||||||
postage_port = ${toString cfg.port}
|
pgmanage_port = ${toString cfg.port}
|
||||||
|
|
||||||
super_only = ${builtins.toJSON cfg.superOnly}
|
super_only = ${builtins.toJSON cfg.superOnly}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ let
|
||||||
|
|
||||||
login_timeout = ${toString cfg.loginTimeout}
|
login_timeout = ${toString cfg.loginTimeout}
|
||||||
|
|
||||||
web_root = ${cfg.package}/etc/postage/web_root
|
web_root = ${cfg.package}/etc/pgmanage/web_root
|
||||||
|
|
||||||
data_root = ${cfg.dataRoot}
|
data_root = ${cfg.dataRoot}
|
||||||
|
|
||||||
|
@ -33,24 +33,23 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
postageConnectionsFile = pkgs.writeTextFile {
|
pgmanageConnectionsFile = pkgs.writeTextFile {
|
||||||
name = "postage-connections.conf";
|
name = "pgmanage-connections.conf";
|
||||||
text = concatStringsSep "\n"
|
text = concatStringsSep "\n"
|
||||||
(mapAttrsToList (name : conn : "${name}: ${conn}") cfg.connections);
|
(mapAttrsToList (name : conn : "${name}: ${conn}") cfg.connections);
|
||||||
};
|
};
|
||||||
|
|
||||||
postage = "postage";
|
pgmanage = "pgmanage";
|
||||||
in {
|
|
||||||
|
|
||||||
options.services.postage = {
|
pgmanageOptions = {
|
||||||
enable = mkEnableOption "PostgreSQL Administration for the web";
|
enable = mkEnableOption "PostgreSQL Administration for the web";
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.postage;
|
default = pkgs.pgmanage;
|
||||||
defaultText = "pkgs.postage";
|
defaultText = "pkgs.pgmanage";
|
||||||
description = ''
|
description = ''
|
||||||
The postage package to use.
|
The pgmanage package to use.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -62,14 +61,14 @@ in {
|
||||||
"mini-server" = "hostaddr=127.0.0.1 port=5432 dbname=postgres sslmode=require";
|
"mini-server" = "hostaddr=127.0.0.1 port=5432 dbname=postgres sslmode=require";
|
||||||
};
|
};
|
||||||
description = ''
|
description = ''
|
||||||
Postage requires at least one PostgreSQL server be defined.
|
pgmanage requires at least one PostgreSQL server be defined.
|
||||||
</para><para>
|
</para><para>
|
||||||
Detailed information about PostgreSQL connection strings is available at:
|
Detailed information about PostgreSQL connection strings is available at:
|
||||||
<link xlink:href="http://www.postgresql.org/docs/current/static/libpq-connect.html"/>
|
<link xlink:href="http://www.postgresql.org/docs/current/static/libpq-connect.html"/>
|
||||||
</para><para>
|
</para><para>
|
||||||
Note that you should not specify your user name or password. That
|
Note that you should not specify your user name or password. That
|
||||||
information will be entered on the login screen. If you specify a
|
information will be entered on the login screen. If you specify a
|
||||||
username or password, it will be removed by Postage before attempting to
|
username or password, it will be removed by pgmanage before attempting to
|
||||||
connect to a database.
|
connect to a database.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -78,7 +77,7 @@ in {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
This tells Postage whether or not to allow anyone to use a custom
|
This tells pgmanage whether or not to allow anyone to use a custom
|
||||||
connection from the login screen.
|
connection from the login screen.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -87,7 +86,7 @@ in {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
default = 8080;
|
default = 8080;
|
||||||
description = ''
|
description = ''
|
||||||
This tells Postage what port to listen on for browser requests.
|
This tells pgmanage what port to listen on for browser requests.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -95,7 +94,7 @@ in {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = ''
|
||||||
This tells Postage whether or not to set the listening socket to local
|
This tells pgmanage whether or not to set the listening socket to local
|
||||||
addresses only.
|
addresses only.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -104,10 +103,10 @@ in {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = ''
|
||||||
This tells Postage whether or not to only allow super users to
|
This tells pgmanage whether or not to only allow super users to
|
||||||
login. The recommended value is true and will restrict users who are not
|
login. The recommended value is true and will restrict users who are not
|
||||||
super users from logging in to any PostgreSQL instance through
|
super users from logging in to any PostgreSQL instance through
|
||||||
Postage. Note that a connection will be made to PostgreSQL in order to
|
pgmanage. Note that a connection will be made to PostgreSQL in order to
|
||||||
test if the user is a superuser.
|
test if the user is a superuser.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -116,8 +115,8 @@ in {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = ''
|
||||||
This tells Postage to only allow users in a certain PostgreSQL group to
|
This tells pgmanage to only allow users in a certain PostgreSQL group to
|
||||||
login to Postage. Note that a connection will be made to PostgreSQL in
|
login to pgmanage. Note that a connection will be made to PostgreSQL in
|
||||||
order to test if the user is a member of the login group.
|
order to test if the user is a member of the login group.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -133,10 +132,10 @@ in {
|
||||||
|
|
||||||
dataRoot = mkOption {
|
dataRoot = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "/var/lib/postage";
|
default = "/var/lib/pgmanage";
|
||||||
description = ''
|
description = ''
|
||||||
This tells Postage where to put the SQL file history. All tabs are saved
|
This tells pgmanage where to put the SQL file history. All tabs are saved
|
||||||
to this location so that if you get disconnected from Postage you
|
to this location so that if you get disconnected from pgmanage you
|
||||||
don't lose your work.
|
don't lose your work.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -156,15 +155,15 @@ in {
|
||||||
});
|
});
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = ''
|
||||||
These options tell Postage where the TLS Certificate and Key files
|
These options tell pgmanage where the TLS Certificate and Key files
|
||||||
reside. If you use these options then you'll only be able to access
|
reside. If you use these options then you'll only be able to access
|
||||||
Postage through a secure TLS connection. These options are only
|
pgmanage through a secure TLS connection. These options are only
|
||||||
necessary if you wish to connect directly to Postage using a secure TLS
|
necessary if you wish to connect directly to pgmanage using a secure TLS
|
||||||
connection. As an alternative, you can set up Postage in a reverse proxy
|
connection. As an alternative, you can set up pgmanage in a reverse proxy
|
||||||
configuration. This allows your web server to terminate the secure
|
configuration. This allows your web server to terminate the secure
|
||||||
connection and pass on the request to Postage. You can find help to set
|
connection and pass on the request to pgmanage. You can find help to set
|
||||||
up this configuration in:
|
up this configuration in:
|
||||||
<link xlink:href="https://github.com/workflowproducts/postage/blob/master/INSTALL_NGINX.md"/>
|
<link xlink:href="https://github.com/pgManage/pgManage/blob/master/INSTALL_NGINX.md"/>
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -177,29 +176,47 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
systemd.services.postage = {
|
in {
|
||||||
description = "postage - PostgreSQL Administration for the web";
|
|
||||||
|
options.services.pgmanage = pgmanageOptions;
|
||||||
|
|
||||||
|
# This is deprecated and should be removed for NixOS-18.03.
|
||||||
|
options.services.postage = pgmanageOptions;
|
||||||
|
|
||||||
|
config = mkMerge [
|
||||||
|
{ assertions = [
|
||||||
|
{ assertion = !config.services.postage.enable;
|
||||||
|
message =
|
||||||
|
"services.postage is deprecated in favour of pgmanage. " +
|
||||||
|
"They have the same options so just substitute postage for pgmanage." ;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
(mkIf cfg.enable {
|
||||||
|
systemd.services.pgmanage = {
|
||||||
|
description = "pgmanage - PostgreSQL Administration for the web";
|
||||||
wants = [ "postgresql.service" ];
|
wants = [ "postgresql.service" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.service" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = postage;
|
User = pgmanage;
|
||||||
Group = postage;
|
Group = pgmanage;
|
||||||
ExecStart = "${pkgs.postage}/sbin/postage -c ${confFile}" +
|
ExecStart = "${pkgs.pgmanage}/sbin/pgmanage -c ${confFile}" +
|
||||||
optionalString cfg.localOnly " --local-only=true";
|
optionalString cfg.localOnly " --local-only=true";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
users = {
|
users = {
|
||||||
users."${postage}" = {
|
users."${pgmanage}" = {
|
||||||
name = postage;
|
name = pgmanage;
|
||||||
group = postage;
|
group = pgmanage;
|
||||||
home = cfg.dataRoot;
|
home = cfg.dataRoot;
|
||||||
createHome = true;
|
createHome = true;
|
||||||
};
|
};
|
||||||
groups."${postage}" = {
|
groups."${pgmanage}" = {
|
||||||
name = postage;
|
name = pgmanage;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
|
@ -60,11 +60,11 @@ let
|
||||||
manpage_directory = "${pkgs.postfix}/share/man";
|
manpage_directory = "${pkgs.postfix}/share/man";
|
||||||
html_directory = "${pkgs.postfix}/share/postfix/doc/html";
|
html_directory = "${pkgs.postfix}/share/postfix/doc/html";
|
||||||
shlib_directory = false;
|
shlib_directory = false;
|
||||||
relayhost = if cfg.lookupMX || cfg.relayHost == ""
|
relayhost = if cfg.relayHost == "" then "" else
|
||||||
then cfg.relayHost
|
if cfg.lookupMX
|
||||||
else
|
then "${cfg.relayHost}:${toString cfg.relayPort}"
|
||||||
"[${cfg.relayHost}]"
|
else "[${cfg.relayHost}]:${toString cfg.relayPort}";
|
||||||
+ optionalString (cfg.relayPort != null) ":${toString cfg.relayPort}";
|
|
||||||
mail_spool_directory = "/var/spool/mail/";
|
mail_spool_directory = "/var/spool/mail/";
|
||||||
setgid_group = setgidGroup;
|
setgid_group = setgidGroup;
|
||||||
}
|
}
|
||||||
|
@ -461,13 +461,10 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
relayPort = mkOption {
|
relayPort = mkOption {
|
||||||
type = types.nullOr types.int;
|
type = types.int;
|
||||||
default = null;
|
default = 25;
|
||||||
example = 587;
|
|
||||||
description = "
|
description = "
|
||||||
Specify an optional port for outbound mail relay. (Note:
|
SMTP port for relay mail relay.
|
||||||
only used if an explicit <option>relayHost</option> is
|
|
||||||
defined.)
|
|
||||||
";
|
";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -572,7 +572,7 @@ in {
|
||||||
rm -rf ${cfg.statePath}/config ${cfg.statePath}/shell/hooks
|
rm -rf ${cfg.statePath}/config ${cfg.statePath}/shell/hooks
|
||||||
mkdir -p ${cfg.statePath}/config
|
mkdir -p ${cfg.statePath}/config
|
||||||
|
|
||||||
tr -dc A-Za-z0-9 < /dev/urandom | head -c 32 > ${cfg.statePath}/config/gitlab_shell_secret
|
${pkgs.openssl}/bin/openssl rand -hex 32 > ${cfg.statePath}/config/gitlab_shell_secret
|
||||||
|
|
||||||
# The uploads directory is hardcoded somewhere deep in rails. It is
|
# The uploads directory is hardcoded somewhere deep in rails. It is
|
||||||
# symlinked in the gitlab package to /run/gitlab/uploads to make it
|
# symlinked in the gitlab package to /run/gitlab/uploads to make it
|
||||||
|
@ -619,7 +619,7 @@ in {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# enable required pg_trgm extension for gitlab
|
# enable required pg_trgm extension for gitlab
|
||||||
${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql gitlab -c "CREATE EXTENSION IF NOT EXISTS pg_trgm"
|
${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql ${cfg.databaseName} -c "CREATE EXTENSION IF NOT EXISTS pg_trgm"
|
||||||
# Always do the db migrations just to be sure the database is up-to-date
|
# Always do the db migrations just to be sure the database is up-to-date
|
||||||
${gitlab-rake}/bin/gitlab-rake db:migrate RAILS_ENV=production
|
${gitlab-rake}/bin/gitlab-rake db:migrate RAILS_ENV=production
|
||||||
|
|
||||||
|
@ -634,7 +634,7 @@ in {
|
||||||
|
|
||||||
# The gitlab:shell:create_hooks task seems broken for fixing links
|
# The gitlab:shell:create_hooks task seems broken for fixing links
|
||||||
# so we instead delete all the hooks and create them anew
|
# so we instead delete all the hooks and create them anew
|
||||||
rm ${cfg.statePath}/repositories/**/*.git/hooks
|
rm -f ${cfg.statePath}/repositories/**/*.git/hooks
|
||||||
${gitlab-rake}/bin/gitlab-rake gitlab:shell:create_hooks RAILS_ENV=production
|
${gitlab-rake}/bin/gitlab-rake gitlab:shell:create_hooks RAILS_ENV=production
|
||||||
|
|
||||||
# Change permissions in the last step because some of the
|
# Change permissions in the last step because some of the
|
||||||
|
|
|
@ -135,8 +135,9 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.mingetty.helpLine = mkIf cfg.showManual
|
services.mingetty.helpLine = "\nRun `nixos-help` "
|
||||||
"\nPress <Alt-F${toString cfg.ttyNumber}> for the NixOS manual.";
|
+ lib.optionalString cfg.showManual "or press <Alt-F${toString cfg.ttyNumber}> "
|
||||||
|
+ "for the NixOS manual.";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
81
nixos/modules/services/misc/plexpy.nix
Normal file
81
nixos/modules/services/misc/plexpy.nix
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.plexpy;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.plexpy = {
|
||||||
|
enable = mkEnableOption "PlexPy Plex Monitor";
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/var/lib/plexpy";
|
||||||
|
description = "The directory where PlexPy stores its data files.";
|
||||||
|
};
|
||||||
|
|
||||||
|
configFile = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/var/lib/plexpy/config.ini";
|
||||||
|
description = "The location of PlexPy's config file.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 8181;
|
||||||
|
description = "TCP port where PlexPy listens.";
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "plexpy";
|
||||||
|
description = "User account under which PlexPy runs.";
|
||||||
|
};
|
||||||
|
|
||||||
|
group = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "nogroup";
|
||||||
|
description = "Group under which PlexPy runs.";
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.plexpy;
|
||||||
|
defaultText = "pkgs.plexpy";
|
||||||
|
description = ''
|
||||||
|
The PlexPy package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services.plexpy = {
|
||||||
|
description = "PlexPy Plex Monitor";
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
preStart = ''
|
||||||
|
test -d "${cfg.dataDir}" || {
|
||||||
|
echo "Creating initial PlexPy data directory in \"${cfg.dataDir}\"."
|
||||||
|
mkdir -p "${cfg.dataDir}"
|
||||||
|
chown ${cfg.user}:${cfg.group} "${cfg.dataDir}"
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
PermissionsStartOnly = "true";
|
||||||
|
GuessMainPID = "false";
|
||||||
|
ExecStart = "${cfg.package}/bin/plexpy --datadir ${cfg.dataDir} --config ${cfg.configFile} --port ${toString cfg.port} --pidfile ${cfg.dataDir}/plexpy.pid --nolaunch";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.extraUsers = mkIf (cfg.user == "plexpy") {
|
||||||
|
plexpy = { group = cfg.group; uid = config.ids.uids.plexpy; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -22,8 +22,8 @@ let
|
||||||
);
|
);
|
||||||
|
|
||||||
graphiteApiConfig = pkgs.writeText "graphite-api.yaml" ''
|
graphiteApiConfig = pkgs.writeText "graphite-api.yaml" ''
|
||||||
time_zone: ${config.time.timeZone}
|
|
||||||
search_index: ${dataDir}/index
|
search_index: ${dataDir}/index
|
||||||
|
${optionalString (!isNull config.time.timeZone) ''time_zone: ${config.time.timeZone}''}
|
||||||
${optionalString (cfg.api.finders != []) ''finders:''}
|
${optionalString (cfg.api.finders != []) ''finders:''}
|
||||||
${concatMapStringsSep "\n" (f: " - " + f.moduleName) cfg.api.finders}
|
${concatMapStringsSep "\n" (f: " - " + f.moduleName) cfg.api.finders}
|
||||||
${optionalString (cfg.api.functions != []) ''functions:''}
|
${optionalString (cfg.api.functions != []) ''functions:''}
|
||||||
|
@ -467,7 +467,15 @@ in {
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.web.enable {
|
(mkIf cfg.web.enable (let
|
||||||
|
python27' = pkgs.python27.override {
|
||||||
|
packageOverrides = self: super: {
|
||||||
|
django = self.django_1_8;
|
||||||
|
django_tagging = self.django_tagging_0_4_3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pythonPackages = python27'.pkgs;
|
||||||
|
in {
|
||||||
systemd.services.graphiteWeb = {
|
systemd.services.graphiteWeb = {
|
||||||
description = "Graphite Web Interface";
|
description = "Graphite Web Interface";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -477,8 +485,8 @@ in {
|
||||||
PYTHONPATH = let
|
PYTHONPATH = let
|
||||||
penv = pkgs.python.buildEnv.override {
|
penv = pkgs.python.buildEnv.override {
|
||||||
extraLibs = [
|
extraLibs = [
|
||||||
pkgs.python27Packages.graphite_web
|
pythonPackages.graphite_web
|
||||||
pkgs.python27Packages.pysqlite
|
pythonPackages.pysqlite
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
penvPack = "${penv}/${pkgs.python.sitePackages}";
|
penvPack = "${penv}/${pkgs.python.sitePackages}";
|
||||||
|
@ -516,17 +524,17 @@ in {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Only collect static files when graphite_web changes.
|
# Only collect static files when graphite_web changes.
|
||||||
if ! [ "${dataDir}/current_graphite_web" -ef "${pkgs.python27Packages.graphite_web}" ]; then
|
if ! [ "${dataDir}/current_graphite_web" -ef "${pythonPackages.graphite_web}" ]; then
|
||||||
mkdir -p ${staticDir}
|
mkdir -p ${staticDir}
|
||||||
${pkgs.pythonPackages.django_1_8}/bin/django-admin.py collectstatic --noinput --clear
|
${pkgs.pythonPackages.django_1_8}/bin/django-admin.py collectstatic --noinput --clear
|
||||||
chown -R graphite:graphite ${staticDir}
|
chown -R graphite:graphite ${staticDir}
|
||||||
ln -sfT "${pkgs.python27Packages.graphite_web}" "${dataDir}/current_graphite_web"
|
ln -sfT "${pythonPackages.graphite_web}" "${dataDir}/current_graphite_web"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.python27Packages.graphite_web ];
|
environment.systemPackages = [ pythonPackages.graphite_web ];
|
||||||
})
|
}))
|
||||||
|
|
||||||
(mkIf cfg.api.enable {
|
(mkIf cfg.api.enable {
|
||||||
systemd.services.graphiteApi = {
|
systemd.services.graphiteApi = {
|
||||||
|
@ -536,7 +544,7 @@ in {
|
||||||
environment = {
|
environment = {
|
||||||
PYTHONPATH = let
|
PYTHONPATH = let
|
||||||
aenv = pkgs.python.buildEnv.override {
|
aenv = pkgs.python.buildEnv.override {
|
||||||
extraLibs = [ cfg.api.package pkgs.cairo ] ++ cfg.api.finders;
|
extraLibs = [ cfg.api.package pkgs.cairo pkgs.pythonPackages.cffi ] ++ cfg.api.finders;
|
||||||
};
|
};
|
||||||
in "${aenv}/${pkgs.python.sitePackages}";
|
in "${aenv}/${pkgs.python.sitePackages}";
|
||||||
GRAPHITE_API_CONFIG = graphiteApiConfig;
|
GRAPHITE_API_CONFIG = graphiteApiConfig;
|
||||||
|
|
98
nixos/modules/services/networking/babeld.nix
Normal file
98
nixos/modules/services/networking/babeld.nix
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.services.babeld;
|
||||||
|
|
||||||
|
paramsString = params:
|
||||||
|
concatMapStringsSep "" (name: "${name} ${boolToString (getAttr name params)}")
|
||||||
|
(attrNames params);
|
||||||
|
|
||||||
|
interfaceConfig = name:
|
||||||
|
let
|
||||||
|
interface = getAttr name cfg.interfaces;
|
||||||
|
in
|
||||||
|
"interface ${name} ${paramsString interface}\n";
|
||||||
|
|
||||||
|
configFile = with cfg; pkgs.writeText "babeld.conf" (
|
||||||
|
(optionalString (cfg.interfaceDefaults != null) ''
|
||||||
|
default ${paramsString cfg.interfaceDefaults}
|
||||||
|
'')
|
||||||
|
+ (concatMapStrings interfaceConfig (attrNames cfg.interfaces))
|
||||||
|
+ extraConfig);
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
###### interface
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
services.babeld = {
|
||||||
|
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to run the babeld network routing daemon.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
interfaceDefaults = mkOption {
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
A set describing default parameters for babeld interfaces.
|
||||||
|
See <citerefentry><refentrytitle>babeld</refentrytitle><manvolnum>8</manvolnum></citerefentry> for options.
|
||||||
|
'';
|
||||||
|
type = types.nullOr (types.attrsOf types.unspecified);
|
||||||
|
example =
|
||||||
|
{
|
||||||
|
wired = true;
|
||||||
|
"split-horizon" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
interfaces = mkOption {
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
A set describing babeld interfaces.
|
||||||
|
See <citerefentry><refentrytitle>babeld</refentrytitle><manvolnum>8</manvolnum></citerefentry> for options.
|
||||||
|
'';
|
||||||
|
type = types.attrsOf (types.attrsOf types.unspecified);
|
||||||
|
example =
|
||||||
|
{ enp0s2 =
|
||||||
|
{ wired = true;
|
||||||
|
"hello-interval" = 5;
|
||||||
|
"split-horizon" = "auto";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Options that will be copied to babeld.conf.
|
||||||
|
See <citerefentry><refentrytitle>babeld</refentrytitle><manvolnum>8</manvolnum></citerefentry> for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
|
||||||
|
config = mkIf config.services.babeld.enable {
|
||||||
|
|
||||||
|
systemd.services.babeld = {
|
||||||
|
description = "Babel routing daemon";
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig.ExecStart = "${pkgs.babeld}/bin/babeld -c ${configFile}";
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -158,7 +158,7 @@ in
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = "dnschain";
|
User = "dnschain";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
ExecStart = "${pkgs.dnschain}/bin/dnschain";
|
ExecStart = "${pkgs.nodePackages.dnschain}/bin/dnschain";
|
||||||
};
|
};
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
|
|
|
@ -28,7 +28,7 @@ in {
|
||||||
description = "Keybase service";
|
description = "Keybase service";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.keybase}/bin/keybase -d service --auto-forked
|
${pkgs.keybase}/bin/keybase service --auto-forked
|
||||||
'';
|
'';
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
PrivateTmp = true;
|
PrivateTmp = true;
|
||||||
|
|
|
@ -32,6 +32,11 @@ let
|
||||||
ipv6.ip6-privacy=2
|
ipv6.ip6-privacy=2
|
||||||
ethernet.cloned-mac-address=${cfg.ethernet.macAddress}
|
ethernet.cloned-mac-address=${cfg.ethernet.macAddress}
|
||||||
wifi.cloned-mac-address=${cfg.wifi.macAddress}
|
wifi.cloned-mac-address=${cfg.wifi.macAddress}
|
||||||
|
${optionalString (cfg.wifi.powersave != null)
|
||||||
|
''wifi.powersave=${if cfg.wifi.powersave then "3" else "2"}''}
|
||||||
|
|
||||||
|
[device]
|
||||||
|
wifi.scan-rand-mac-address=${if cfg.wifi.scanRandMacAddress then "yes" else "no"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -179,7 +184,27 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
ethernet.macAddress = macAddressOpt;
|
ethernet.macAddress = macAddressOpt;
|
||||||
wifi.macAddress = macAddressOpt;
|
|
||||||
|
wifi = {
|
||||||
|
macAddress = macAddressOpt;
|
||||||
|
|
||||||
|
powersave = mkOption {
|
||||||
|
type = types.nullOr types.bool;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Whether to enable Wi-Fi power saving.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
scanRandMacAddress = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to enable MAC address randomization of a Wi-Fi device
|
||||||
|
during scanning.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
useDnsmasq = mkOption {
|
useDnsmasq = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
|
|
|
@ -32,8 +32,10 @@ let
|
||||||
${caConf}
|
${caConf}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
strongswanConf = {setup, connections, ca, secrets}: toFile "strongswan.conf" ''
|
strongswanConf = {setup, connections, ca, secrets, managePlugins, enabledPlugins}: toFile "strongswan.conf" ''
|
||||||
charon {
|
charon {
|
||||||
|
${if managePlugins then "load_modular = no" else ""}
|
||||||
|
${if managePlugins then ("load = " + (concatStringsSep " " enabledPlugins)) else ""}
|
||||||
plugins {
|
plugins {
|
||||||
stroke {
|
stroke {
|
||||||
secrets_file = ${ipsecSecrets secrets}
|
secrets_file = ${ipsecSecrets secrets}
|
||||||
|
@ -112,6 +114,25 @@ in
|
||||||
file.
|
file.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
managePlugins = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
If set to true, this option will disable automatic plugin loading and
|
||||||
|
then tell strongSwan to enable the plugins specified in the
|
||||||
|
<option>enabledPlugins</option> option.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
enabledPlugins = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
A list of additional plugins to enable if
|
||||||
|
<option>managePlugins</option> is true.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = with cfg; mkIf enable {
|
config = with cfg; mkIf enable {
|
||||||
|
@ -122,7 +143,7 @@ in
|
||||||
wants = [ "keys.target" ];
|
wants = [ "keys.target" ];
|
||||||
after = [ "network-online.target" "keys.target" ];
|
after = [ "network-online.target" "keys.target" ];
|
||||||
environment = {
|
environment = {
|
||||||
STRONGSWAN_CONF = strongswanConf { inherit setup connections ca secrets; };
|
STRONGSWAN_CONF = strongswanConf { inherit setup connections ca secrets managePlugins enabledPlugins; };
|
||||||
};
|
};
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.strongswan}/sbin/ipsec start --nofork";
|
ExecStart = "${pkgs.strongswan}/sbin/ipsec start --nofork";
|
||||||
|
|
|
@ -8,9 +8,9 @@ let
|
||||||
|
|
||||||
stateDir = "/var/lib/unbound";
|
stateDir = "/var/lib/unbound";
|
||||||
|
|
||||||
access = concatMapStrings (x: " access-control: ${x} allow\n") cfg.allowedAccess;
|
access = concatMapStringsSep "\n " (x: "access-control: ${x} allow") cfg.allowedAccess;
|
||||||
|
|
||||||
interfaces = concatMapStrings (x: " interface: ${x}\n") cfg.interfaces;
|
interfaces = concatMapStringsSep "\n " (x: "interface: ${x}") cfg.interfaces;
|
||||||
|
|
||||||
isLocalAddress = x: substring 0 3 x == "::1" || substring 0 9 x == "127.0.0.1";
|
isLocalAddress = x: substring 0 3 x == "::1" || substring 0 9 x == "127.0.0.1";
|
||||||
|
|
||||||
|
|
|
@ -195,6 +195,7 @@ let
|
||||||
description = "WireGuard Tunnel - ${name}";
|
description = "WireGuard Tunnel - ${name}";
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
environment.DEVICE = name;
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
|
|
|
@ -676,6 +676,7 @@ in
|
||||||
''
|
''
|
||||||
; Needed for PHP's mail() function.
|
; Needed for PHP's mail() function.
|
||||||
sendmail_path = sendmail -t -i
|
sendmail_path = sendmail -t -i
|
||||||
|
'' + optionalString (!isNull config.time.timeZone) ''
|
||||||
|
|
||||||
; Apparently PHP doesn't use $TZ.
|
; Apparently PHP doesn't use $TZ.
|
||||||
date.timezone = "${config.time.timeZone}"
|
date.timezone = "${config.time.timeZone}"
|
||||||
|
|
|
@ -13,6 +13,7 @@ let
|
||||||
define('DB_HOST', '${config.dbHost}');
|
define('DB_HOST', '${config.dbHost}');
|
||||||
define('DB_CHARSET', 'utf8');
|
define('DB_CHARSET', 'utf8');
|
||||||
$table_prefix = '${config.tablePrefix}';
|
$table_prefix = '${config.tablePrefix}';
|
||||||
|
define('AUTOMATIC_UPDATER_DISABLED', true);
|
||||||
${config.extraConfig}
|
${config.extraConfig}
|
||||||
if ( !defined('ABSPATH') )
|
if ( !defined('ABSPATH') )
|
||||||
define('ABSPATH', dirname(__FILE__) . '/');
|
define('ABSPATH', dirname(__FILE__) . '/');
|
||||||
|
|
|
@ -41,7 +41,7 @@ in
|
||||||
name = "lxqt";
|
name = "lxqt";
|
||||||
bgSupport = true;
|
bgSupport = true;
|
||||||
start = ''
|
start = ''
|
||||||
exec ${pkgs.lxqt.lxqt-common}/bin/startlxqt
|
exec ${pkgs.lxqt.lxqt-session}/bin/startlxqt
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,11 @@ in
|
||||||
theme = mkDefault "breeze";
|
theme = mkDefault "breeze";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
boot.plymouth = {
|
||||||
|
theme = mkDefault "breeze";
|
||||||
|
themePackages = mkDefault [ pkgs.breeze-plymouth ];
|
||||||
|
};
|
||||||
|
|
||||||
security.pam.services.kde = { allowNullPassword = true; };
|
security.pam.services.kde = { allowNullPassword = true; };
|
||||||
|
|
||||||
# Doing these one by one seems silly, but we currently lack a better
|
# Doing these one by one seems silly, but we currently lack a better
|
||||||
|
|
|
@ -125,6 +125,7 @@ in
|
||||||
"getty@tty1.service"
|
"getty@tty1.service"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
systemd.services."getty@tty1".enable = false;
|
||||||
systemd.services.display-manager.conflicts = [ "getty@tty1.service" ];
|
systemd.services.display-manager.conflicts = [ "getty@tty1.service" ];
|
||||||
systemd.services.display-manager.serviceConfig = {
|
systemd.services.display-manager.serviceConfig = {
|
||||||
# Restart = "always"; - already defined in xserver.nix
|
# Restart = "always"; - already defined in xserver.nix
|
||||||
|
|
|
@ -97,12 +97,26 @@ in
|
||||||
moduleName="$(sed -n 's,ModuleName *= *,,p' ${themesEnv}/share/plymouth/themes/${cfg.theme}/${cfg.theme}.plymouth)"
|
moduleName="$(sed -n 's,ModuleName *= *,,p' ${themesEnv}/share/plymouth/themes/${cfg.theme}/${cfg.theme}.plymouth)"
|
||||||
|
|
||||||
mkdir -p $out/lib/plymouth/renderers
|
mkdir -p $out/lib/plymouth/renderers
|
||||||
cp ${plymouth}/lib/plymouth/{text,details,$moduleName}.so $out/lib/plymouth
|
# module might come from a theme
|
||||||
|
cp ${themesEnv}/lib/plymouth/{text,details,$moduleName}.so $out/lib/plymouth
|
||||||
cp ${plymouth}/lib/plymouth/renderers/{drm,frame-buffer}.so $out/lib/plymouth/renderers
|
cp ${plymouth}/lib/plymouth/renderers/{drm,frame-buffer}.so $out/lib/plymouth/renderers
|
||||||
|
|
||||||
mkdir -p $out/share/plymouth/themes
|
mkdir -p $out/share/plymouth/themes
|
||||||
cp ${plymouth}/share/plymouth/plymouthd.defaults $out/share/plymouth
|
cp ${plymouth}/share/plymouth/plymouthd.defaults $out/share/plymouth
|
||||||
cp -r ${themesEnv}/share/plymouth/themes/{text,details,${cfg.theme}} $out/share/plymouth/themes
|
|
||||||
|
# copy themes into working directory for patching
|
||||||
|
mkdir themes
|
||||||
|
# use -L to copy the directories proper, not the symlinks to them
|
||||||
|
cp -r -L ${themesEnv}/share/plymouth/themes/{text,details,${cfg.theme}} themes
|
||||||
|
|
||||||
|
# patch out any attempted references to the theme or plymouth's themes directory
|
||||||
|
chmod -R +w themes
|
||||||
|
find themes -type f | while read file
|
||||||
|
do
|
||||||
|
sed -i "s,/nix/.*/share/plymouth/themes,$out/share/plymouth/themes,g" $file
|
||||||
|
done
|
||||||
|
|
||||||
|
cp -r themes/* $out/share/plymouth/themes
|
||||||
cp ${cfg.logo} $out/share/plymouth/logo.png
|
cp ${cfg.logo} $out/share/plymouth/logo.png
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,7 @@ let
|
||||||
after = [ "network-pre.target" "systemd-udevd.service" "systemd-sysctl.service" ];
|
after = [ "network-pre.target" "systemd-udevd.service" "systemd-sysctl.service" ];
|
||||||
before = [ "network.target" "shutdown.target" ];
|
before = [ "network.target" "shutdown.target" ];
|
||||||
wants = [ "network.target" ];
|
wants = [ "network.target" ];
|
||||||
|
partOf = map (i: "network-addresses-${i.name}.service") interfaces;
|
||||||
conflicts = [ "shutdown.target" ];
|
conflicts = [ "shutdown.target" ];
|
||||||
wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target";
|
wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target";
|
||||||
|
|
||||||
|
@ -171,8 +172,6 @@ let
|
||||||
"network-link-${i.name}.service"
|
"network-link-${i.name}.service"
|
||||||
"network.target"
|
"network.target"
|
||||||
];
|
];
|
||||||
# propagate stop and reload from network-setup
|
|
||||||
partOf = [ "network-setup.service" ];
|
|
||||||
# order before network-setup because the routes that are configured
|
# order before network-setup because the routes that are configured
|
||||||
# there may need ip addresses configured
|
# there may need ip addresses configured
|
||||||
before = [ "network-setup.service" ];
|
before = [ "network-setup.service" ];
|
||||||
|
|
|
@ -537,7 +537,7 @@ in
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
Wether the container is automatically started at boot-time.
|
Whether the container is automatically started at boot-time.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -596,6 +596,8 @@ in
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{ services.postgresql.enable = true;
|
{ services.postgresql.enable = true;
|
||||||
services.postgresql.package = pkgs.postgresql96;
|
services.postgresql.package = pkgs.postgresql96;
|
||||||
|
|
||||||
|
system.stateVersion = "17.03";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -270,6 +270,10 @@ in rec {
|
||||||
tests.plasma5 = callTest tests/plasma5.nix {};
|
tests.plasma5 = callTest tests/plasma5.nix {};
|
||||||
tests.keymap = callSubTests tests/keymap.nix {};
|
tests.keymap = callSubTests tests/keymap.nix {};
|
||||||
tests.initrdNetwork = callTest tests/initrd-network.nix {};
|
tests.initrdNetwork = callTest tests/initrd-network.nix {};
|
||||||
|
tests.kafka_0_9 = callTest tests/kafka_0_9.nix {};
|
||||||
|
tests.kafka_0_10 = callTest tests/kafka_0_10.nix {};
|
||||||
|
tests.kafka_0_11 = callTest tests/kafka_0_11.nix {};
|
||||||
|
tests.kafka_1_0 = callTest tests/kafka_1_0.nix {};
|
||||||
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
||||||
tests.kernel-latest = callTest tests/kernel-latest.nix {};
|
tests.kernel-latest = callTest tests/kernel-latest.nix {};
|
||||||
tests.kernel-lts = callTest tests/kernel-lts.nix {};
|
tests.kernel-lts = callTest tests/kernel-lts.nix {};
|
||||||
|
@ -306,6 +310,7 @@ in rec {
|
||||||
#tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; });
|
#tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; });
|
||||||
tests.peerflix = callTest tests/peerflix.nix {};
|
tests.peerflix = callTest tests/peerflix.nix {};
|
||||||
tests.postgresql = callSubTests tests/postgresql.nix {};
|
tests.postgresql = callSubTests tests/postgresql.nix {};
|
||||||
|
tests.pgmanage = callTest tests/pgmanage.nix {};
|
||||||
tests.postgis = callTest tests/postgis.nix {};
|
tests.postgis = callTest tests/postgis.nix {};
|
||||||
#tests.pgjwt = callTest tests/pgjwt.nix {};
|
#tests.pgjwt = callTest tests/pgjwt.nix {};
|
||||||
tests.printing = callTest tests/printing.nix {};
|
tests.printing = callTest tests/printing.nix {};
|
||||||
|
@ -329,7 +334,7 @@ in rec {
|
||||||
tests.wordpress = callTest tests/wordpress.nix {};
|
tests.wordpress = callTest tests/wordpress.nix {};
|
||||||
tests.xfce = callTest tests/xfce.nix {};
|
tests.xfce = callTest tests/xfce.nix {};
|
||||||
tests.xmonad = callTest tests/xmonad.nix {};
|
tests.xmonad = callTest tests/xmonad.nix {};
|
||||||
|
tests.zookeeper = callTest tests/zookeeper.nix {};
|
||||||
|
|
||||||
/* Build a bunch of typical closures so that Hydra can keep track of
|
/* Build a bunch of typical closures so that Hydra can keep track of
|
||||||
the evolution of closure sizes. */
|
the evolution of closure sizes. */
|
||||||
|
|
|
@ -9,9 +9,57 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||||
nodes = {
|
nodes = {
|
||||||
gitlab = { config, pkgs, ... }: {
|
gitlab = { config, pkgs, ... }: {
|
||||||
virtualisation.memorySize = 768;
|
virtualisation.memorySize = 768;
|
||||||
services.gitlab.enable = true;
|
|
||||||
services.gitlab.databasePassword = "gitlab";
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = {
|
||||||
|
"localhost" = {
|
||||||
|
locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.gitlab.serviceConfig.TimeoutStartSec = "10min";
|
systemd.services.gitlab.serviceConfig.TimeoutStartSec = "10min";
|
||||||
|
services.gitlab = {
|
||||||
|
enable = true;
|
||||||
|
databasePassword = "dbPassword";
|
||||||
|
secrets = {
|
||||||
|
secret = "secret";
|
||||||
|
otp = "otpsecret";
|
||||||
|
db = "dbsecret";
|
||||||
|
|
||||||
|
# nix-shell -p openssl --run "openssl genrsa 2048"
|
||||||
|
jws = ''
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEA13/qEio76OWUtWO0WIz9lWnsTWOU8Esv4sQHDq9PCEFsLt21
|
||||||
|
PAXrlWhLjjWcxGfsrDwnh7YErGHYL62BMSxMdFJolaknlQK/O/V8UETDe45VoHM+
|
||||||
|
Znk270RfUcfYFgiihnXUZXVmL0om9TsQSk646wCcjCY9LxtxUyKNhvT7KjgYw2aX
|
||||||
|
z34aw7M+Js3T2p1TjZPSC82GtmtKkJEKFMi5EjprLTDE7EdcUzr9Xuw+kQ+gRm9k
|
||||||
|
7FE+JQqSoprwE3Q0v2OAn3UhLMgg0gNFRnsc5l6IAshDzV+H22RPqKKlJjVjjfPY
|
||||||
|
0TQSvYLVApigHbDPH0BoCXfjFfQazbbP3OUHrwIDAQABAoIBAQCMU+tkcMQaYIV5
|
||||||
|
qLdjgkwO467QpivyXcOM8wF1eosIYTHFQvIlZ+WEoSmyLQ8shlADyBgls01Pw1c3
|
||||||
|
lNAv6RzQEmmwKzpvOh61OKH+0whIiOMRXHoh2IUBQZCgfHYlwvGyhUAN4WjtGmhM
|
||||||
|
AG4XNTQNM5S9Xpkw97nP3Qwz+YskbbkrfqtCEVy9ro+4nhbjqPsuO3adbnkva4zR
|
||||||
|
cyurRhrHgHU6LPjn5NHnHH4qw2faY2oAsL8pmpkTbO5IqWDvOcbjNfjVPgVoq26O
|
||||||
|
bbaa1qs4nmc80qQgMjRPJef535xyf3eLsSlDvpf6O8sPrJzVR1zaqEqixpQCZDac
|
||||||
|
+kRiSBrhAoGBAOwHiq0PuyJh6VzBu7ybqX6+gF/wA4Jkwzx6mbfaBgurvU1aospp
|
||||||
|
kisIonAkxSbxllZMnjbkShZEdATYKeT9o5NEhnU4YnHfc5bJZbiWOZAzYGLcY7g8
|
||||||
|
vDQ31pBItyY4pFgPbSpNlbUvUsoPVJ45RasRADDTNCzMzdjFQQXst2V9AoGBAOm7
|
||||||
|
sSpzYfFPLEAhieAkuhtbsX58Boo46djiKVfzGftfp6F9aHTOfzGORU5jrZ16mSbS
|
||||||
|
qkkC6BEFrATX2051dzzXC89fWoJYALrsffE5I3KlKXsCAWSnCP1MMxOfH+Ls61Mr
|
||||||
|
7pK/LKfvJt53mUH4jIdbmmFUDwbg18oBEH+x9PmbAoGAS/+JqXu9N67rIxDGUE6W
|
||||||
|
3tacI0f2+U9Uhe67/DTZaXyc8YFTlXU0uWKIWy+bw5RaYeM9tlL/f/f+m2i25KK+
|
||||||
|
vrZ7zNag7CWU5GJovGyykDnauTpZaYM03mN0VPT08/uc/zXIYqyknbhlIeaZynCK
|
||||||
|
fDB3LUF0NVCknz20WCIGU0kCgYEAkxY0ZXx61Dp4pFr2wwEZxQGs7uXpz64FKyEX
|
||||||
|
12r6nMATY4Lh6y/Px0W6w5vis8lk+5Ny6cNUevHQ0LNuJS+yu6ywl+1vrbrnqroM
|
||||||
|
f3LvpcPeGLSoX8jl1VDQi7aFgG6LoKly1xJLbdsH4NPutB9PgBbbTghx9GgmI88L
|
||||||
|
rPA2M6UCgYBOmkYJocNgxg6B1/n4Tb9fN1Q/XuJrFDE6NxVUoke+IIyMPRH7FC3m
|
||||||
|
VMYzu+b7zTVJjaBb1cmJemxl/xajziWDofJYPefhdbOVU7HXtmJFY0IG3pVxU1zW
|
||||||
|
3bmDj5QAtCUDpuuNa6GEIT0YR4+D/V7o3DmlZ0tVIwKJmVJoQ2f5dw==
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,6 +67,6 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||||
$gitlab->start();
|
$gitlab->start();
|
||||||
$gitlab->waitForUnit("gitlab.service");
|
$gitlab->waitForUnit("gitlab.service");
|
||||||
$gitlab->waitForUnit("gitlab-sidekiq.service");
|
$gitlab->waitForUnit("gitlab-sidekiq.service");
|
||||||
$gitlab->waitUntilSucceeds("curl http://localhost:8080/users/sign_in");
|
$gitlab->waitUntilSucceeds("curl http://localhost:80/users/sign_in");
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,13 +4,16 @@ import ./make-test.nix ({ pkgs, ...} :
|
||||||
nodes = {
|
nodes = {
|
||||||
one =
|
one =
|
||||||
{ config, pkgs, ... }: {
|
{ config, pkgs, ... }: {
|
||||||
|
time.timeZone = "UTC";
|
||||||
services.graphite = {
|
services.graphite = {
|
||||||
web = {
|
web.enable = true;
|
||||||
|
api = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
port = 8082;
|
||||||
};
|
};
|
||||||
carbon = {
|
carbon.enableCache = true;
|
||||||
enableCache = true;
|
seyren.enable = true;
|
||||||
};
|
pager.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -19,7 +22,10 @@ import ./make-test.nix ({ pkgs, ...} :
|
||||||
startAll;
|
startAll;
|
||||||
$one->waitForUnit("default.target");
|
$one->waitForUnit("default.target");
|
||||||
$one->requireActiveUnit("graphiteWeb.service");
|
$one->requireActiveUnit("graphiteWeb.service");
|
||||||
|
$one->requireActiveUnit("graphiteApi.service");
|
||||||
|
$one->requireActiveUnit("graphitePager.service");
|
||||||
$one->requireActiveUnit("carbonCache.service");
|
$one->requireActiveUnit("carbonCache.service");
|
||||||
|
$one->requireActiveUnit("seyren.service");
|
||||||
$one->succeed("echo \"foo 1 `date +%s`\" | nc -q0 localhost 2003");
|
$one->succeed("echo \"foo 1 `date +%s`\" | nc -q0 localhost 2003");
|
||||||
$one->waitUntilSucceeds("curl 'http://localhost:8080/metrics/find/?query=foo&format=treejson' --silent | grep foo")
|
$one->waitUntilSucceeds("curl 'http://localhost:8080/metrics/find/?query=foo&format=treejson' --silent | grep foo")
|
||||||
'';
|
'';
|
||||||
|
|
48
nixos/tests/kafka_0_10.nix
Normal file
48
nixos/tests/kafka_0_10.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||||
|
let
|
||||||
|
kafkaPackage = pkgs.apacheKafka_0_10;
|
||||||
|
in {
|
||||||
|
name = "kafka_0_10";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ nequissimus ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
zookeeper1 = { config, ... }: {
|
||||||
|
services.zookeeper = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||||
|
};
|
||||||
|
kafka = { config, ... }: {
|
||||||
|
services.apache-kafka = {
|
||||||
|
enable = true;
|
||||||
|
extraProperties = ''
|
||||||
|
offsets.topic.replication.factor = 1
|
||||||
|
'';
|
||||||
|
package = kafkaPackage;
|
||||||
|
zookeeper = "zookeeper1:2181";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||||
|
virtualisation.memorySize = 2048;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
|
||||||
|
$zookeeper1->waitForUnit("zookeeper");
|
||||||
|
$zookeeper1->waitForUnit("network.target");
|
||||||
|
$zookeeper1->waitForOpenPort(2181);
|
||||||
|
|
||||||
|
$kafka->waitForUnit("apache-kafka");
|
||||||
|
$kafka->waitForUnit("network.target");
|
||||||
|
$kafka->waitForOpenPort(9092);
|
||||||
|
|
||||||
|
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||||
|
'';
|
||||||
|
})
|
48
nixos/tests/kafka_0_11.nix
Normal file
48
nixos/tests/kafka_0_11.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||||
|
let
|
||||||
|
kafkaPackage = pkgs.apacheKafka_0_11;
|
||||||
|
in {
|
||||||
|
name = "kafka_0_11";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ nequissimus ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
zookeeper1 = { config, ... }: {
|
||||||
|
services.zookeeper = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||||
|
};
|
||||||
|
kafka = { config, ... }: {
|
||||||
|
services.apache-kafka = {
|
||||||
|
enable = true;
|
||||||
|
extraProperties = ''
|
||||||
|
offsets.topic.replication.factor = 1
|
||||||
|
'';
|
||||||
|
package = kafkaPackage;
|
||||||
|
zookeeper = "zookeeper1:2181";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||||
|
virtualisation.memorySize = 2048;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
|
||||||
|
$zookeeper1->waitForUnit("zookeeper");
|
||||||
|
$zookeeper1->waitForUnit("network.target");
|
||||||
|
$zookeeper1->waitForOpenPort(2181);
|
||||||
|
|
||||||
|
$kafka->waitForUnit("apache-kafka");
|
||||||
|
$kafka->waitForUnit("network.target");
|
||||||
|
$kafka->waitForOpenPort(9092);
|
||||||
|
|
||||||
|
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||||
|
'';
|
||||||
|
})
|
48
nixos/tests/kafka_0_9.nix
Normal file
48
nixos/tests/kafka_0_9.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||||
|
let
|
||||||
|
kafkaPackage = pkgs.apacheKafka_0_9;
|
||||||
|
in {
|
||||||
|
name = "kafka_0_9";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ nequissimus ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
zookeeper1 = { config, ... }: {
|
||||||
|
services.zookeeper = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||||
|
};
|
||||||
|
kafka = { config, ... }: {
|
||||||
|
services.apache-kafka = {
|
||||||
|
enable = true;
|
||||||
|
extraProperties = ''
|
||||||
|
offsets.topic.replication.factor = 1
|
||||||
|
'';
|
||||||
|
package = kafkaPackage;
|
||||||
|
zookeeper = "zookeeper1:2181";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||||
|
virtualisation.memorySize = 2048;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
|
||||||
|
$zookeeper1->waitForUnit("zookeeper");
|
||||||
|
$zookeeper1->waitForUnit("network.target");
|
||||||
|
$zookeeper1->waitForOpenPort(2181);
|
||||||
|
|
||||||
|
$kafka->waitForUnit("apache-kafka");
|
||||||
|
$kafka->waitForUnit("network.target");
|
||||||
|
$kafka->waitForOpenPort(9092);
|
||||||
|
|
||||||
|
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --zookeeper zookeeper1:2181 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||||
|
'';
|
||||||
|
})
|
48
nixos/tests/kafka_1_0.nix
Normal file
48
nixos/tests/kafka_1_0.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||||
|
let
|
||||||
|
kafkaPackage = pkgs.apacheKafka_1_0;
|
||||||
|
in {
|
||||||
|
name = "kafka_1_0";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ nequissimus ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
zookeeper1 = { config, ... }: {
|
||||||
|
services.zookeeper = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||||
|
};
|
||||||
|
kafka = { config, ... }: {
|
||||||
|
services.apache-kafka = {
|
||||||
|
enable = true;
|
||||||
|
extraProperties = ''
|
||||||
|
offsets.topic.replication.factor = 1
|
||||||
|
'';
|
||||||
|
package = kafkaPackage;
|
||||||
|
zookeeper = "zookeeper1:2181";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||||
|
virtualisation.memorySize = 2048;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
|
||||||
|
$zookeeper1->waitForUnit("zookeeper");
|
||||||
|
$zookeeper1->waitForUnit("network.target");
|
||||||
|
$zookeeper1->waitForOpenPort(2181);
|
||||||
|
|
||||||
|
$kafka->waitForUnit("apache-kafka");
|
||||||
|
$kafka->waitForUnit("network.target");
|
||||||
|
$kafka->waitForOpenPort(9092);
|
||||||
|
|
||||||
|
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||||
|
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||||
|
'';
|
||||||
|
})
|
39
nixos/tests/pgmanage.nix
Normal file
39
nixos/tests/pgmanage.nix
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
import ./make-test.nix ({ pkgs, ... } :
|
||||||
|
let
|
||||||
|
role = "test";
|
||||||
|
password = "secret";
|
||||||
|
conn = "local";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = "pgmanage";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ basvandijk ];
|
||||||
|
};
|
||||||
|
nodes = {
|
||||||
|
one = { config, pkgs, ... }: {
|
||||||
|
services = {
|
||||||
|
postgresql = {
|
||||||
|
enable = true;
|
||||||
|
initialScript = pkgs.writeText "pg-init-script" ''
|
||||||
|
CREATE ROLE ${role} SUPERUSER LOGIN PASSWORD '${password}';
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
pgmanage = {
|
||||||
|
enable = true;
|
||||||
|
connections = {
|
||||||
|
"${conn}" = "hostaddr=127.0.0.1 port=${toString config.services.postgresql.port} dbname=postgres";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
$one->waitForUnit("default.target");
|
||||||
|
$one->requireActiveUnit("pgmanage.service");
|
||||||
|
|
||||||
|
# Test if we can log in.
|
||||||
|
$one->waitUntilSucceeds("curl 'http://localhost:8080/pgmanage/auth' --data 'action=login&connname=${conn}&username=${role}&password=${password}' --fail");
|
||||||
|
'';
|
||||||
|
})
|
28
nixos/tests/zookeeper.nix
Normal file
28
nixos/tests/zookeeper.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
|
name = "zookeeper";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ nequissimus ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
server = { pkgs, config, ... }: {
|
||||||
|
services.zookeeper = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
|
||||||
|
$server->waitForUnit("zookeeper");
|
||||||
|
$server->waitForUnit("network.target");
|
||||||
|
$server->waitForOpenPort(2181);
|
||||||
|
|
||||||
|
$server->waitUntilSucceeds("${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 create /foo bar");
|
||||||
|
$server->waitUntilSucceeds("${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 set /foo hello");
|
||||||
|
$server->waitUntilSucceeds("${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 get /foo | grep hello");
|
||||||
|
'';
|
||||||
|
})
|
|
@ -7,13 +7,13 @@ with stdenv.lib;
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
|
||||||
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
|
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
|
||||||
version = "0.15.0";
|
version = "0.16.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bitcoin-ABC";
|
owner = "bitcoin-ABC";
|
||||||
repo = "bitcoin-abc";
|
repo = "bitcoin-abc";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1fygn6cc99iasg5g5jyps5ps873hfnn4ln4hsmcwlwiqd591qxyv";
|
sha256 = "0wwcgvd8zgl5qh6z1sa3kdv1lr9cwwbs9j2gaad5mqr9sfwbbxdh";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./fix-bitcoin-qt-build.patch ];
|
patches = [ ./fix-bitcoin-qt-build.patch ];
|
||||||
|
|
|
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
|
||||||
owner = "bitcoinunlimited";
|
owner = "bitcoinunlimited";
|
||||||
repo = "bitcoinunlimited";
|
repo = "bitcoinunlimited";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0rhk6xvzvzyfppg0pgq72nqgm2rmkiw0nhg3rwnzcvvj90nrz3da";
|
sha256 = "17cmyns1908s2rqs0zwr05f3541nqm2pg08n2xn97g2k3yimdg5q";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig autoreconfHook ];
|
nativeBuildInputs = [ pkgconfig autoreconfHook ];
|
||||||
|
|
|
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
|
||||||
owner = "dogecoin";
|
owner = "dogecoin";
|
||||||
repo = "dogecoin";
|
repo = "dogecoin";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "16q3rldj04hkzzjd23h0knszqr5dgixizy4iyc129mz8wa8pbnvy";
|
sha256 = "04rddx20d4fps2w3h1jxa2j8iyqpjv2fh897z0z3r06qjvjzf7rr";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig autoreconfHook ];
|
nativeBuildInputs = [ pkgconfig autoreconfHook ];
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{ stdenv, fetchurl, pkgconfig, wrapGAppsHook, gettext, glib, gtk3
|
{ stdenv, fetchurl, pkgconfig, wrapGAppsHook, gettext, glib, gtk3
|
||||||
, libmowgli, libmcs, dbus_glib, libxml2, xorg, gnome3, alsaLib
|
, libmowgli, dbus_glib, libxml2, xorg, gnome3, alsaLib
|
||||||
, libpulseaudio, libjack2, fluidsynth, libmad, libogg, libvorbis
|
, libpulseaudio, libjack2, fluidsynth, libmad, libogg, libvorbis
|
||||||
, libcdio082, libcddb, flac, ffmpeg, mpg123, libcue, libmms, libbs2b
|
, libcdio082, libcddb, flac, ffmpeg, mpg123, libcue, libmms, libbs2b
|
||||||
, libsndfile, libmodplug, libsamplerate, soxr, lirc, curl, wavpack
|
, libsndfile, libmodplug, libsamplerate, soxr, lirc, curl, wavpack
|
||||||
|
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gettext glib gtk3 libmowgli libmcs dbus_glib libxml2
|
gettext glib gtk3 libmowgli dbus_glib libxml2
|
||||||
xorg.libXcomposite gnome3.defaultIconTheme alsaLib libjack2
|
xorg.libXcomposite gnome3.defaultIconTheme alsaLib libjack2
|
||||||
libpulseaudio fluidsynth libmad libogg libvorbis libcdio082
|
libpulseaudio fluidsynth libmad libogg libvorbis libcdio082
|
||||||
libcddb flac ffmpeg mpg123 libcue libmms libbs2b libsndfile
|
libcddb flac ffmpeg mpg123 libcue libmms libbs2b libsndfile
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
gettext, pkgconfig,
|
gettext, pkgconfig,
|
||||||
qtbase,
|
qtbase,
|
||||||
alsaLib, curl, faad2, ffmpeg, flac, fluidsynth, gdk_pixbuf, lame, libbs2b,
|
alsaLib, curl, faad2, ffmpeg, flac, fluidsynth, gdk_pixbuf, lame, libbs2b,
|
||||||
libcddb, libcdio082, libcue, libjack2, libmad, libmcs, libmms, libmodplug,
|
libcddb, libcdio082, libcue, libjack2, libmad, libmms, libmodplug,
|
||||||
libmowgli, libnotify, libogg, libpulseaudio, libsamplerate, libsidplayfp,
|
libmowgli, libnotify, libogg, libpulseaudio, libsamplerate, libsidplayfp,
|
||||||
libsndfile, libvorbis, libxml2, lirc, mpg123, neon, qtmultimedia, soxr,
|
libsndfile, libvorbis, libxml2, lirc, mpg123, neon, qtmultimedia, soxr,
|
||||||
wavpack
|
wavpack
|
||||||
|
@ -39,7 +39,7 @@ mkDerivation {
|
||||||
|
|
||||||
# Plugin dependencies
|
# Plugin dependencies
|
||||||
alsaLib curl faad2 ffmpeg flac fluidsynth gdk_pixbuf lame libbs2b libcddb
|
alsaLib curl faad2 ffmpeg flac fluidsynth gdk_pixbuf lame libbs2b libcddb
|
||||||
libcdio082 libcue libjack2 libmad libmcs libmms libmodplug libmowgli
|
libcdio082 libcue libjack2 libmad libmms libmodplug libmowgli
|
||||||
libnotify libogg libpulseaudio libsamplerate libsidplayfp libsndfile
|
libnotify libogg libpulseaudio libsamplerate libsidplayfp libsndfile
|
||||||
libvorbis libxml2 lirc mpg123 neon qtmultimedia soxr wavpack
|
libvorbis libxml2 lirc mpg123 neon qtmultimedia soxr wavpack
|
||||||
];
|
];
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "2.1.3";
|
version = "2.2.0";
|
||||||
name = "audacity-${version}";
|
name = "audacity-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
|
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
|
||||||
sha256 = "11mx7gb4dbqrgfp7hm0154x3m76ddnmhf2675q5zkxn7jc5qfc6b";
|
sha256 = "09xpr4bjnainz1xmc35v3qg3dadjr9wv8bmn1p4y91aqyihnhjry";
|
||||||
};
|
};
|
||||||
patches = [
|
patches = [
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
From 184c64718ee68b2738647f4a106b260c47f00437 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sam Parkinson <sam@sam.today>
|
||||||
|
Date: Thu, 26 Oct 2017 14:50:13 +1100
|
||||||
|
Subject: [PATCH] Remove post-install script that hardcodes paths
|
||||||
|
|
||||||
|
---
|
||||||
|
meson.build | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index 25f3e1a..18b43bd 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -21,4 +21,5 @@ subdir('src')
|
||||||
|
# subdir('tests')
|
||||||
|
# TODO: unit tests
|
||||||
|
|
||||||
|
-meson.add_install_script('meson_post_install.sh')
|
||||||
|
+# This does not work for nixos; it hard-codes paths
|
||||||
|
+# meson.add_install_script('meson_post_install.sh')
|
||||||
|
--
|
||||||
|
2.14.2
|
||||||
|
|
72
pkgs/applications/audio/gradio/default.nix
Normal file
72
pkgs/applications/audio/gradio/default.nix
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{ stdenv, fetchFromGitHub, pkgconfig
|
||||||
|
, gcc
|
||||||
|
, python3
|
||||||
|
, gsettings_desktop_schemas
|
||||||
|
, desktop_file_utils
|
||||||
|
, glib
|
||||||
|
, gtk3
|
||||||
|
, intltool
|
||||||
|
, libsoup
|
||||||
|
, json_glib
|
||||||
|
, wrapGAppsHook
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, vala
|
||||||
|
, sqlite
|
||||||
|
, gst_all_1
|
||||||
|
, gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ]
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
version = "6.0.2";
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
name = "gradio-${version}";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "haecker-felix";
|
||||||
|
repo = "gradio";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "05hg26yr7splgpkl8wjxcsdks9sm1is3hcnp7f5mjnp2ch0nn57s";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgconfig
|
||||||
|
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
vala
|
||||||
|
|
||||||
|
python3
|
||||||
|
];
|
||||||
|
buildInputs = [
|
||||||
|
sqlite
|
||||||
|
|
||||||
|
glib
|
||||||
|
intltool
|
||||||
|
libsoup
|
||||||
|
json_glib
|
||||||
|
|
||||||
|
gtk3
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
|
||||||
|
wrapGAppsHook
|
||||||
|
desktop_file_utils
|
||||||
|
gsettings_desktop_schemas
|
||||||
|
] ++ gst_plugins;
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
postInstall = ''
|
||||||
|
${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
|
||||||
|
'';
|
||||||
|
|
||||||
|
patches = [ ./0001-Remove-post-install-script-that-hardcodes-paths.patch ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/haecker-felix/gradio;
|
||||||
|
description = "A GTK3 app for finding and listening to internet radio stations";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ maintainers.samdroid-apps ];
|
||||||
|
};
|
||||||
|
}
|
26
pkgs/applications/audio/greg/default.nix
Normal file
26
pkgs/applications/audio/greg/default.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{ stdenv, fetchFromGitHub, pythonPackages }:
|
||||||
|
|
||||||
|
with pythonPackages; buildPythonApplication rec {
|
||||||
|
pname = "greg";
|
||||||
|
version = "0.4.7";
|
||||||
|
name = pname + "-" + version;
|
||||||
|
|
||||||
|
disabled = !isPy3k;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "manolomartinez";
|
||||||
|
repo = pname;
|
||||||
|
rev = "v" + version;
|
||||||
|
sha256 = "0bdzgh2k1ppgcvqiasxwp3w89q44s4jgwjidlips3ixx1bzm822v";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = with pythonPackages; [ feedparser ];
|
||||||
|
propagatedBuildInputs = buildInputs;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://github.com/manolomartinez/greg";
|
||||||
|
description = "A command-line podcast aggregator";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = with maintainers; [ edwtjo ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,69 +0,0 @@
|
||||||
{ stdenv, fetchFromGitHub, makeWrapper, callPackage, libgroove, python, utillinux, nodejs }:
|
|
||||||
|
|
||||||
with stdenv.lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
nodePackages = callPackage (import ../../../top-level/node-packages.nix) {
|
|
||||||
inherit nodejs;
|
|
||||||
neededNatives = [ libgroove python utillinux ];
|
|
||||||
self = nodePackages;
|
|
||||||
generated = ./package.nix;
|
|
||||||
};
|
|
||||||
|
|
||||||
in nodePackages.buildNodePackage rec {
|
|
||||||
version = "1.5.1";
|
|
||||||
name = "groovebasin-${version}";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "andrewrk";
|
|
||||||
repo = "groovebasin";
|
|
||||||
rev = "${version}";
|
|
||||||
sha256 = "1g7v0qhvgzpb050hf45pibp68qd67hnnry5npw58f4dvaxdd8yhd";
|
|
||||||
};
|
|
||||||
|
|
||||||
deps = (filter (v: nixType v == "derivation") (attrValues nodePackages));
|
|
||||||
|
|
||||||
buildInputs = [ makeWrapper ];
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p "$out/lib/node_modules/groovebasin/public"
|
|
||||||
stylus -o "$out/lib/node_modules/groovebasin/public/" -c --include-css "$out/lib/node_modules/groovebasin/src/client/styles"
|
|
||||||
browserify-lite "$out/lib/node_modules/groovebasin/src/client/app.js" --outfile "$out/lib/node_modules/groovebasin/public/app.js"
|
|
||||||
wrapProgram "$out/bin/groovebasin" --set NODE_PATH "$out/lib/node_modules/groovebasin/node_modules/"
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru.names = ["groovebasin"];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Music player server with a web-based user interface";
|
|
||||||
homepage = http://groovebasin.com/;
|
|
||||||
license = licenses.mit;
|
|
||||||
platforms = platforms.unix;
|
|
||||||
maintainers = [ maintainers.andrewrk ];
|
|
||||||
longDescription = ''
|
|
||||||
Groove Basin runs on a server optionally connected to speakers. Guests can
|
|
||||||
control the music player by connecting with a laptop, tablet, or smart phone.
|
|
||||||
Further, users can stream their music libraries remotely.
|
|
||||||
|
|
||||||
Groove Basin comes with a fast, responsive web interface that supports keyboard
|
|
||||||
shortcuts and drag drop. It also provides the ability to upload songs,
|
|
||||||
download songs, and import songs by URL, including YouTube URLs.
|
|
||||||
|
|
||||||
Groove Basin supports Dynamic Mode which automatically queues random songs,
|
|
||||||
favoring songs that have not been queued recently.
|
|
||||||
|
|
||||||
Groove Basin automatically performs ReplayGain scanning on every song using
|
|
||||||
the EBU R128 loudness standard, and automatically switches between track
|
|
||||||
and album mode.
|
|
||||||
|
|
||||||
Groove Basin supports the MPD protocol, which means it is compatible with MPD
|
|
||||||
clients. There is also a more powerful Groove Basin protocol which you can
|
|
||||||
use if the MPD protocol does not meet your needs.
|
|
||||||
|
|
||||||
Groove Basin supports Last.fm scrobbling.
|
|
||||||
'';
|
|
||||||
# groovebasin was built with nodejs 0.10 which reached end of LTS
|
|
||||||
# in October 216, it doesn't built with nodejs 4.x
|
|
||||||
broken = true;
|
|
||||||
};
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load diff
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
pythonPackages.buildPythonApplication rec {
|
pythonPackages.buildPythonApplication rec {
|
||||||
name = "mopidy-iris-${version}";
|
name = "mopidy-iris-${version}";
|
||||||
version = "3.4.9";
|
version = "3.6.1";
|
||||||
|
|
||||||
src = pythonPackages.fetchPypi {
|
src = pythonPackages.fetchPypi {
|
||||||
inherit version;
|
inherit version;
|
||||||
pname = "Mopidy-Iris";
|
pname = "Mopidy-Iris";
|
||||||
sha256 = "0acr8ss5d0jgcy1qsjb12h0n6kr6qdp9zrbbk9vv3m3s6kcm8vgb";
|
sha256 = "1mfi3qx7pvfq4rz0py39lnbzv7sq703b6k6mypzhj1gdzbisfn46";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{stdenv, fetchurl, libao, libmad, libid3tag, zlib, alsaLib}:
|
{stdenv, fetchurl, libao, libmad, libid3tag, zlib, alsaLib
|
||||||
|
# Specify default libao output plugin to use (e.g. "alsa", "pulse" …).
|
||||||
|
# If null, it will use the libao system default.
|
||||||
|
, defaultAudio ? null
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "mpg321-${version}";
|
name = "mpg321-${version}";
|
||||||
|
@ -11,9 +15,10 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
hardeningDisable = [ "format" ];
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags =
|
||||||
("--enable-alsa=" + (if stdenv.isLinux then "yes" else "no"))
|
[ ("--enable-alsa=" + (if stdenv.isLinux then "yes" else "no")) ]
|
||||||
];
|
++ (stdenv.lib.optional (defaultAudio != null)
|
||||||
|
"--with-default-audio=${defaultAudio}");
|
||||||
|
|
||||||
buildInputs = [libao libid3tag libmad zlib]
|
buildInputs = [libao libid3tag libmad zlib]
|
||||||
++ stdenv.lib.optional stdenv.isLinux alsaLib;
|
++ stdenv.lib.optional stdenv.isLinux alsaLib;
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, glib, ncurses
|
{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, glib, ncurses
|
||||||
, mpd_clientlib, gettext }:
|
, mpd_clientlib, gettext }:
|
||||||
|
|
||||||
let
|
stdenv.mkDerivation rec {
|
||||||
rpath = stdenv.lib.makeLibraryPath [
|
|
||||||
glib ncurses mpd_clientlib
|
|
||||||
];
|
|
||||||
in stdenv.mkDerivation rec {
|
|
||||||
name = "ncmpc-${version}";
|
name = "ncmpc-${version}";
|
||||||
version = "0.28";
|
version = "0.28";
|
||||||
|
|
||||||
|
@ -19,12 +15,6 @@ in stdenv.mkDerivation rec {
|
||||||
buildInputs = [ glib ncurses mpd_clientlib ];
|
buildInputs = [ glib ncurses mpd_clientlib ];
|
||||||
nativeBuildInputs = [ meson ninja pkgconfig gettext ];
|
nativeBuildInputs = [ meson ninja pkgconfig gettext ];
|
||||||
|
|
||||||
postFixup = ''
|
|
||||||
for elf in "$out"/bin/*; do
|
|
||||||
patchelf --set-rpath '${rpath}':"$out/lib" "$elf"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Curses-based interface for MPD (music player daemon)";
|
description = "Curses-based interface for MPD (music player daemon)";
|
||||||
homepage = http://www.musicpd.org/clients/ncmpc/;
|
homepage = http://www.musicpd.org/clients/ncmpc/;
|
||||||
|
|
|
@ -1,20 +1,19 @@
|
||||||
{ stdenv, fetchFromGitHub, python2Packages, makeWrapper, chromaprint }:
|
{ stdenv, fetchFromGitHub, python2Packages, makeWrapper, chromaprint }:
|
||||||
|
|
||||||
let
|
python2Packages.buildPythonApplication rec {
|
||||||
pname = "puddletag";
|
name = "puddletag-${version}";
|
||||||
|
|
||||||
in python2Packages.buildPythonApplication rec {
|
|
||||||
name = "${pname}-${version}";
|
|
||||||
version = "1.2.0";
|
version = "1.2.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "keithgg";
|
owner = "keithgg";
|
||||||
repo = pname;
|
repo = "puddletag";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1g6wa91awy17z5b704yi9kfynnvfm9lkrvpfvwccscr1h8s3qmiz";
|
sha256 = "1g6wa91awy17z5b704yi9kfynnvfm9lkrvpfvwccscr1h8s3qmiz";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourceRoot = "${pname}-v${version}-src/source";
|
setSourceRoot = ''
|
||||||
|
sourceRoot=$(echo */source)
|
||||||
|
'';
|
||||||
|
|
||||||
disabled = python2Packages.isPy3k; # work to support python 3 has not begun
|
disabled = python2Packages.isPy3k; # work to support python 3 has not begun
|
||||||
|
|
||||||
|
@ -29,17 +28,21 @@ in python2Packages.buildPythonApplication rec {
|
||||||
dontStrip = true; # we are not generating any binaries
|
dontStrip = true; # we are not generating any binaries
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
siteDir=$(toPythonPath $out)
|
siteDir=$(toPythonPath $out)
|
||||||
mkdir -p $siteDir
|
mkdir -p $siteDir
|
||||||
PYTHONPATH=$PYTHONPATH:$siteDir
|
PYTHONPATH=$PYTHONPATH:$siteDir
|
||||||
${python2Packages.python.interpreter} setup.py install --prefix $out
|
${python2Packages.python.interpreter} setup.py install --prefix $out
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = https://puddletag.net;
|
homepage = https://puddletag.net;
|
||||||
description = "An audio tag editor similar to the Windows program, Mp3tag";
|
description = "An audio tag editor similar to the Windows program, Mp3tag";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
platforms = platforms.linux;
|
|
||||||
maintainers = with maintainers; [ peterhoeg ];
|
maintainers = with maintainers; [ peterhoeg ];
|
||||||
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,64 +1,44 @@
|
||||||
{ stdenv, fetchurl, python2Packages, intltool
|
{ stdenv, fetchurl, python2Packages, wrapGAppsHook, gettext, intltool, libsoup, gnome3,
|
||||||
, gst-python, withGstPlugins ? false, gst-plugins-base ? null
|
tag ? "",
|
||||||
, gst-plugins-good ? null, gst-plugins-ugly ? null, gst-plugins-bad ? null }:
|
gst_all_1, withGstPlugins ? true,
|
||||||
|
xineBackend ? false, xineLib,
|
||||||
|
withDbusPython ? false, withPyInotify ? false, withMusicBrainzNgs ? false, withPahoMqtt ? false,
|
||||||
|
webkitgtk ? null,
|
||||||
|
keybinder3 ? null, gtksourceview ? null, libmodplug ? null, kakasi ? null, libappindicator-gtk3 ? null }:
|
||||||
|
|
||||||
assert withGstPlugins -> gst-plugins-base != null
|
let optionals = stdenv.lib.optionals; in
|
||||||
|| gst-plugins-good != null
|
python2Packages.buildPythonApplication rec {
|
||||||
|| gst-plugins-ugly != null
|
name = "quodlibet${tag}-${version}";
|
||||||
|| gst-plugins-bad != null;
|
version = "3.9.1";
|
||||||
|
|
||||||
let
|
|
||||||
version = "2.6.3";
|
|
||||||
inherit (python2Packages) buildPythonApplication python mutagen pygtk pygobject2 dbus-python;
|
|
||||||
in buildPythonApplication {
|
|
||||||
# call the package quodlibet and just quodlibet
|
|
||||||
name = "quodlibet${stdenv.lib.optionalString (!withGstPlugins) "-without-gst-plugins"}-${version}";
|
|
||||||
|
|
||||||
# XXX, tests fail
|
# XXX, tests fail
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
srcs = [
|
src = fetchurl {
|
||||||
(fetchurl {
|
url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
|
||||||
url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-${version}.tar.gz";
|
sha256 = "d2b42df5d439213973dc97149fddc779a6c90cec389c24baf1c0bdcc39ffe591";
|
||||||
sha256 = "0ilasi4b0ay8r6v6ba209wsm80fq2nmzigzc5kvphrk71jwypx6z";
|
};
|
||||||
})
|
|
||||||
(fetchurl {
|
|
||||||
url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-plugins-${version}.tar.gz";
|
|
||||||
sha256 = "1rv08rhdjad8sjhplqsspcf4vkazgkxyshsqmbfbrrk5kvv57ybc";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
preConfigure = ''
|
nativeBuildInputs = [ wrapGAppsHook gettext intltool ];
|
||||||
# TODO: for now don't a apply gdist overrides, will be needed for shipping icons, gtk, etc
|
# ++ (with python2Packages; [ pytest pyflakes pycodestyle polib ]); # test deps
|
||||||
sed -i /distclass/d setup.py
|
|
||||||
'';
|
|
||||||
|
|
||||||
sourceRoot = "quodlibet-${version}";
|
buildInputs = [ gnome3.defaultIconTheme libsoup webkitgtk keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi ]
|
||||||
|
++ (if xineBackend then [ xineLib ] else with gst_all_1;
|
||||||
|
[ gstreamer gst-plugins-base ] ++ optionals withGstPlugins [ gst-plugins-good gst-plugins-ugly gst-plugins-bad ]);
|
||||||
|
|
||||||
postUnpack = ''
|
propagatedBuildInputs = with python2Packages;
|
||||||
# the patch searches for plugins in directory ../plugins
|
[ pygobject3 pycairo mutagen pygtk gst-python feedparser faulthandler futures ]
|
||||||
# so link the appropriate directory there
|
++ optionals withDbusPython [ dbus-python ]
|
||||||
ln -sf quodlibet-plugins-${version} plugins
|
++ optionals withPyInotify [ pyinotify ]
|
||||||
'';
|
++ optionals withMusicBrainzNgs [ musicbrainzngs ]
|
||||||
|
++ optionals stdenv.isDarwin [ pyobjc ]
|
||||||
|
++ optionals withPahoMqtt [ paho-mqtt ];
|
||||||
|
|
||||||
patches = [ ./quodlibet-package-plugins.patch ];
|
makeWrapperArgs = optionals (kakasi != null) [ "--prefix PATH : ${kakasi}/bin" ];
|
||||||
|
|
||||||
buildInputs = stdenv.lib.optionals withGstPlugins [
|
|
||||||
gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
|
|
||||||
];
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
mutagen pygtk pygobject2 dbus-python gst-python intltool
|
|
||||||
];
|
|
||||||
|
|
||||||
postInstall = stdenv.lib.optionalString withGstPlugins ''
|
|
||||||
# Wrap quodlibet so it finds the GStreamer plug-ins
|
|
||||||
wrapProgram "$out/bin/quodlibet" --prefix \
|
|
||||||
GST_PLUGIN_SYSTEM_PATH ":" "$GST_PLUGIN_SYSTEM_PATH" \
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "GTK+-based audio player written in Python, using the Mutagen tagging library";
|
description = "GTK+-based audio player written in Python, using the Mutagen tagging library";
|
||||||
|
license = stdenv.lib.licenses.gpl2;
|
||||||
|
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
Quod Libet is a GTK+-based audio player written in Python, using
|
Quod Libet is a GTK+-based audio player written in Python, using
|
||||||
|
@ -74,7 +54,7 @@ in buildPythonApplication {
|
||||||
& internet radio, and all major audio formats.
|
& internet radio, and all major audio formats.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
maintainers = [ stdenv.lib.maintainers.coroa ];
|
maintainers = with stdenv.lib.maintainers; [ coroa sauyon ];
|
||||||
homepage = https://quodlibet.readthedocs.io/en/latest/;
|
homepage = https://quodlibet.readthedocs.io/en/latest/;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
diff -Naur quodlibet-2.5.orig/setup.py quodlibet-2.5.new/setup.py
|
|
||||||
--- quodlibet-2.5.orig/setup.py 2012-12-19 08:47:41.000000000 +0000
|
|
||||||
+++ quodlibet-2.5.new/setup.py 2013-04-22 19:27:07.152631051 +0000
|
|
||||||
@@ -337,5 +338,14 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
+ else:
|
|
||||||
+ from os.path import join
|
|
||||||
+
|
|
||||||
+ data_files = []
|
|
||||||
+ for type in ["playorder", "songsmenu", "editing", "events", "gstreamer"]:
|
|
||||||
+ data_files.append((join('quodlibet', 'plugins', type),
|
|
||||||
+ glob.glob(join('..', 'plugins', type, '*.py'))))
|
|
||||||
+ setup_kwargs.update({ 'data_files': data_files });
|
|
||||||
+
|
|
||||||
setup(**setup_kwargs)
|
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "zam-plugins-${version}";
|
name = "zam-plugins-${version}";
|
||||||
version = "3.8";
|
version = "3.9";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://github.com/zamaudio/zam-plugins.git";
|
url = "https://github.com/zamaudio/zam-plugins.git";
|
||||||
deepClone = true;
|
deepClone = true;
|
||||||
rev = "830ab2e9dd1db8cf56d12c71057157e5d8e9fd74";
|
rev = "4976cf204074c1dfaf344821e83e8d896b35107d";
|
||||||
sha256 = "1hyly5inis59cvh0r7lyi203h8v5jh84ca9jpaljm53cvw6d93px";
|
sha256 = "1xgwl51sf2hgc5ikcnycyxaw9vy82lrcswn07b6av6i67qclm8f8";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
|
@ -7,15 +7,15 @@
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
ver_branch = "1.22";
|
ver_branch = "1.24";
|
||||||
version = "1.22.0";
|
version = "1.24.0";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "lightdm-${version}";
|
name = "lightdm-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.xz";
|
url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.xz";
|
||||||
sha256 = "0a5bvfl2h7r873al6q7c819h0kg564k9fh51rl6489z6lyvazfg4";
|
sha256 = "18j33bm54i8k7ncxcs69zqi4105s62n58jrydqn3ikrb71s9nl6d";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig intltool ];
|
nativeBuildInputs = [ pkgconfig intltool ];
|
||||||
|
|
|
@ -6,11 +6,11 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in rec {
|
in rec {
|
||||||
stable = mkStudio rec {
|
stable = mkStudio {
|
||||||
pname = "android-studio";
|
pname = "android-studio";
|
||||||
version = "2.3.3.0";
|
version = "3.0.0.18"; # "Android Studio 3.0"
|
||||||
build = "162.4069837";
|
build = "171.4408382";
|
||||||
sha256Hash = "0zzis9m2xp44xwkj0zvcqw5rh3iyd3finyi5nqhgira1fkacz0qk";
|
sha256Hash = "18npm7ckdybj6vc2vndr0wd50da19m9z2j7wld2mdidnl5ggk4br";
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "The Official IDE for Android (stable version)";
|
description = "The Official IDE for Android (stable version)";
|
||||||
|
@ -25,16 +25,16 @@ in rec {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
preview = mkStudio rec {
|
preview = mkStudio {
|
||||||
pname = "android-studio-preview";
|
pname = "android-studio-preview";
|
||||||
version = "3.0.0.17"; # "Android Studio 3.0 RC 2"
|
version = "3.1.0.0"; # "Android Studio 3.1 Canary 1"
|
||||||
build = "171.4402976";
|
build = "171.4415322";
|
||||||
sha256Hash = "18f5cq1dcmyjxaq520kqjac332bpp35pis02yplh6gzp65i4bvvf";
|
sha256Hash = "08xgwv6mg2zxys9dqjfz66h60g640ni3snyb89ij0fkmd28rbxgj";
|
||||||
|
|
||||||
meta = stable.meta // {
|
meta = stable.meta // {
|
||||||
description = "The Official IDE for Android (preview version)";
|
description = "The Official IDE for Android (preview version)";
|
||||||
homepage = https://developer.android.com/studio/preview/index.html;
|
homepage = https://developer.android.com/studio/preview/index.html;
|
||||||
maintainers = with stdenv.lib.maintainers; [ primeos tomsmeets ];
|
maintainers = with stdenv.lib.maintainers; [ primeos ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "atom-${version}";
|
name = "atom-${version}";
|
||||||
version = "1.21.1";
|
version = "1.21.2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
||||||
sha256 = "13mpj3wvcgsxz9q6lai36lkfgd7rabcjrrih1j5309kd1dqaswnn";
|
sha256 = "0snhhp8rjmk750snyzkqzwvi7f915pbc6qpa3vf0f57syf47m7vl";
|
||||||
name = "${name}.deb";
|
name = "${name}.deb";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -106,16 +106,16 @@ rec {
|
||||||
|
|
||||||
anyedittools = buildEclipsePlugin rec {
|
anyedittools = buildEclipsePlugin rec {
|
||||||
name = "anyedit-${version}";
|
name = "anyedit-${version}";
|
||||||
version = "2.7.0.201705171641";
|
version = "2.7.1.201709201439";
|
||||||
|
|
||||||
srcFeature = fetchurl {
|
srcFeature = fetchurl {
|
||||||
url = "http://andrei.gmxhome.de/eclipse/features/AnyEditTools_${version}.jar";
|
url = "http://andrei.gmxhome.de/eclipse/features/AnyEditTools_${version}.jar";
|
||||||
sha256 = "07k029nw5ibxpjc0siy06ihylbqrxllf59yz8c544gra8lc079c9";
|
sha256 = "1wqzl7wq85m9gil8rnvly45ps0a2m0svw613pg6djs5i7amhnayh";
|
||||||
};
|
};
|
||||||
|
|
||||||
srcPlugin = fetchurl {
|
srcPlugin = fetchurl {
|
||||||
url = "https://github.com/iloveeclipse/anyedittools/releases/download/2.7.0/de.loskutov.anyedit.AnyEditTools_${version}.jar";
|
url = "https://github.com/iloveeclipse/anyedittools/releases/download/2.7.1/de.loskutov.anyedit.AnyEditTools_${version}.jar";
|
||||||
sha256 = "0wbm8zfjh7gxrw5sy9m3siddiazh5czgxp7zyzxwzkdqyqzqs70h";
|
sha256 = "03iyb6j2srq74iigmg7dk098c2svyv0ygdfql5jqr44a32n07k8q";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -394,7 +394,7 @@ rec {
|
||||||
sha256 = "1xfj4j27d1h4bdf2v7f78zi8lz4zkkj7s9kskmsqx5jcs2d459yp";
|
sha256 = "1xfj4j27d1h4bdf2v7f78zi8lz4zkkj7s9kskmsqx5jcs2d459yp";
|
||||||
extraPostFetch =
|
extraPostFetch =
|
||||||
''
|
''
|
||||||
mv "$out/${repo}-${rev}/releases/local-repo"/* "$out/"
|
mv "$out/${repo}-${rev}/releases/local-repo/"* "$out/"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -424,6 +424,29 @@ rec {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
spotbugs = buildEclipsePlugin rec {
|
||||||
|
name = "spotbugs-${version}";
|
||||||
|
version = "3.1.0.r201710241414-11c9895";
|
||||||
|
|
||||||
|
srcFeature = fetchurl {
|
||||||
|
url = "https://spotbugs.github.io/eclipse/features/com.github.spotbugs.plugin.eclipse_${version}.jar";
|
||||||
|
sha256 = "084dj2bid5issh28j32hi5w9vx5xs829h7d5lbz5hqj1fyn9h6bs";
|
||||||
|
};
|
||||||
|
|
||||||
|
srcPlugin = fetchurl {
|
||||||
|
url = "https://spotbugs.github.io/eclipse/plugins/com.github.spotbugs.plugin.eclipse_${version}.jar";
|
||||||
|
sha256 = "1mqpl3gx06f54w13jm01qd8fbniab3x989mi3lysx078vrp23jas";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://spotbugs.github.io/;
|
||||||
|
description = "Plugin that uses static analysis to look for bugs in Java code";
|
||||||
|
license = licenses.lgpl21;
|
||||||
|
platforms = platforms.all;
|
||||||
|
maintainers = [ maintainers.rycee ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
testng = buildEclipsePlugin rec {
|
testng = buildEclipsePlugin rec {
|
||||||
name = "testng-${version}";
|
name = "testng-${version}";
|
||||||
version = "6.9.13.201609291640";
|
version = "6.9.13.201609291640";
|
||||||
|
|
|
@ -95,10 +95,10 @@
|
||||||
ahungry-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
ahungry-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ahungry-theme";
|
pname = "ahungry-theme";
|
||||||
version = "1.6.0";
|
version = "1.8.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ahungry-theme-1.6.0.tar";
|
url = "https://elpa.gnu.org/packages/ahungry-theme-1.8.0.tar";
|
||||||
sha256 = "1b0x7g753gn7mym8286b937zmxv50jgdish2h6wc05w1g1lygwsz";
|
sha256 = "14dhnrlbjzrxk5ligf0z2im5bgnxpjqqzqcrmqg5355xrgpbpb7v";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -700,10 +700,10 @@
|
||||||
ebdb = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }:
|
ebdb = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ebdb";
|
pname = "ebdb";
|
||||||
version = "0.3.4";
|
version = "0.4.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ebdb-0.3.4.tar";
|
url = "https://elpa.gnu.org/packages/ebdb-0.4.1.tar";
|
||||||
sha256 = "1jj7s0646wqg9ykmpi52cc6m6m0gk2inqc2h6h7cr7gr4v7n2l00";
|
sha256 = "0gv1q1xkhjab0l77c92znn6x0dfdbnj6hc48axmrx6a7zwbm3g2r";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs seq ];
|
packageRequires = [ cl-lib emacs seq ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -945,10 +945,10 @@
|
||||||
gnorb = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
gnorb = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "gnorb";
|
pname = "gnorb";
|
||||||
version = "1.3.0";
|
version = "1.3.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/gnorb-1.3.0.tar";
|
url = "https://elpa.gnu.org/packages/gnorb-1.3.1.tar";
|
||||||
sha256 = "0c256473llp7ahl1wbm6m236cj2lhp9ms1clmxpsfv51ds27ljqv";
|
sha256 = "1g6xldkc6l6zlzd1slqizbbd5b9k4pbr66nrf5svidgiy7mlifw5";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib ];
|
packageRequires = [ cl-lib ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1556,10 +1556,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
version = "20171016";
|
version = "20171030";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/org-20171016.tar";
|
url = "https://elpa.gnu.org/packages/org-20171030.tar";
|
||||||
sha256 = "1196kv83p953nd9c5gxkn8ndw2kmm2kfw34dldap6m89khqflz5a";
|
sha256 = "1lszws6b5s4r7w871cyigs433dflf6w0y33fj6rzrq8240d5092i";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
|
20
pkgs/applications/editors/emacs-modes/gn/default.nix
Normal file
20
pkgs/applications/editors/emacs-modes/gn/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ stdenv, fetchgit, emacs }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "gn-mode-2017-09-21";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://chromium.googlesource.com/chromium/src/tools/gn";
|
||||||
|
rev = "34f2780efb3fe14fe361ec161ad58440de5a6b36";
|
||||||
|
sha256 = "10cisqz3l6ny3471yi7y1z8v622lpl65zh0liqr6absvmy63g866";
|
||||||
|
};
|
||||||
|
buildInputs = [ emacs ];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
emacs --batch -f batch-byte-compile misc/emacs/gn-mode.el
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/emacs/site-lisp/
|
||||||
|
cp misc/emacs/gn-mode.el* $out/share/emacs/site-lisp/
|
||||||
|
'';
|
||||||
|
}
|
|
@ -2,27 +2,28 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
modules = [
|
modules = [
|
||||||
{ name = "icicles.el"; sha256 = "175g8w620vy73pp3zyasfjspgljk6g0lki71kdnvw5z88w3s9d1n"; }
|
{ name = "icicles.el"; sha256 = "10w1lghh9jqxxm5cszi2qyk24vnvazfywmyyz1v7zf6cyiwbndrz"; }
|
||||||
{ name = "icicles-chg.el"; sha256 = "1bx5xdhirvnrjqk4pk0sjp9bpj1syymsjnckklsw04gv6y0x8zik"; }
|
{ name = "icicles-chg.el"; sha256 = "020yg4hv120mcy7qvn76j85q6hl7mfcfv66w55c6izc9lbrvvnv8"; }
|
||||||
{ name = "icicles-cmd1.el"; sha256 = "1ff0mndin9zxrswwwq3a7b1s879rr6gy8rzxanr7kxg1ppciafad"; }
|
{ name = "icicles-cmd1.el"; sha256 = "1715x1vkiax93890gfjbzslxsn4swsv37spvyx7chy4s1mym9kfw"; }
|
||||||
{ name = "icicles-cmd2.el"; sha256 = "1a44l86jacp9nsy4z260azz6y672drjw3w5a0jsc8w26fgsrnx1k"; }
|
{ name = "icicles-cmd2.el"; sha256 = "187k0gmn34fn6w1dw9hjf4i788y01vk47z7ac11ar4bddwh97ddx"; }
|
||||||
{ name = "icicles-doc1.el"; sha256 = "0s3r4z3y06hd1nxp18wd0b8b88z2a7ryy0j8sx5fzibbmp58ars1"; }
|
{ name = "icicles-doc1.el"; sha256 = "1bw5dkymn2xdrfrp80am0gqi0szs0xihny4qmgzgx6hfbng351qh"; }
|
||||||
{ name = "icicles-doc2.el"; sha256 = "0c10jg91qxyrg1zwiyi4m57dbw3yf43jdrpi4nnby3pkzh6i37ic"; }
|
{ name = "icicles-doc2.el"; sha256 = "0zd94m1a8mwwbrbcrahxxx8q34w8cg5lna4yww4m1gliyklww86s"; }
|
||||||
{ name = "icicles-face.el"; sha256 = "0n0vcbhwgd2lyj7anq1zpwja28xry018qxbm8sprxkh6y3vlw8d2"; }
|
{ name = "icicles-face.el"; sha256 = "1mlz8dq7bgzp2cf5j37i25yw90ry657d2m8r93rdj67h7l4wyxhj"; }
|
||||||
{ name = "icicles-fn.el"; sha256 = "1i10593a7hp465bxd86h7h7gwrdyqxx0d13in53z4jnab8icp3d4"; }
|
{ name = "icicles-fn.el"; sha256 = "1cdghvgsr0b7pdq4lmnfm6kwwcqbk4wqf168kf2sjajbpa24ix96"; }
|
||||||
{ name = "icicles-mac.el"; sha256 = "1piq0jk8nz0hz9wwci7dkxnfxscdpygjzpj5zg3310vs22l7rrsz"; }
|
{ name = "icicles-mac.el"; sha256 = "1w5sgzbp8hyjzrmqd8bwivszaayzh8dkyqa0d751adiwjfs9sq9m"; }
|
||||||
{ name = "icicles-mcmd.el"; sha256 = "0c4325yp84i46605nlxmjm6n0f4fh69shsihvd0wb9ryg0a8qa65"; }
|
{ name = "icicles-mcmd.el"; sha256 = "1lf2galn3g52hfz61avlr4ifyn5b42dfbmyq78cpzlq7hzc928v2"; }
|
||||||
{ name = "icicles-mode.el"; sha256 = "069wx5clqpsq2c9aavgd9xihvlad3g00iwwrc3cpl47v64dvlipq"; }
|
{ name = "icicles-mode.el"; sha256 = "0gci04j6vx0vqsh4skarznklam1xibj7pjvy67kaip8b6a4zx9ip"; }
|
||||||
{ name = "icicles-opt.el"; sha256 = "16487l3361ca8l6il2c0z892843sc5l9v4gr7lx5fxbmrlsswvvn"; }
|
{ name = "icicles-opt.el"; sha256 = "17g35ancml0mvywagzhjrgmlr4rhm1wgb5wg3fsqhhldib9qlz56"; }
|
||||||
{ name = "icicles-var.el"; sha256 = "1a9cwxpi10x44fngxa7qnrg8hqfvdjb8s8k47gnn1rbh63blkkry"; }
|
{ name = "icicles-var.el"; sha256 = "0ydixg41h09yncp8g2nv8zsyv8avg1hj2f3mgrmd2kf0n27bw2nv"; }
|
||||||
];
|
];
|
||||||
|
|
||||||
forAll = f: map f modules;
|
forAll = f: map f modules;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation rec {
|
||||||
name = "icicles-2014-11-06";
|
version = "2017-10-28";
|
||||||
|
name = "icicles-${version}";
|
||||||
|
|
||||||
srcs = forAll ({name, sha256}: fetchurl { url = "http://www.emacswiki.org/emacs-en/download/${name}"; inherit sha256; });
|
srcs = forAll ({name, sha256}: fetchurl { url = "http://www.emacswiki.org/emacs/download/${name}"; inherit sha256; });
|
||||||
|
|
||||||
buildInputs = [ emacs ];
|
buildInputs = [ emacs ];
|
||||||
|
|
||||||
|
@ -30,11 +31,13 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
buildPhase = "emacs --batch -L . -f batch-byte-compile *.el";
|
buildPhase = "emacs --batch -L . -f batch-byte-compile *.el";
|
||||||
|
|
||||||
installPhase = "mkdir -p $out/share/emacs/site-lisp; cp *.el *.elc $out/share/emacs/site-lisp/";
|
installPhase = "mkdir -p $out/share/emacs/site-lisp/emacswiki/${name}/; cp *.el *.elc $out/share/emacs/site-lisp/emacswiki/${name}/";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = http://www.emacswiki.org/emacs/Icicles;
|
homepage = http://www.emacswiki.org/emacs/Icicles;
|
||||||
description = "Enhance Emacs minibuffer input with cycling and powerful completion";
|
description = "Enhance Emacs minibuffer input with cycling and powerful completion";
|
||||||
license = stdenv.lib.licenses.gpl2Plus;
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
platforms = emacs.meta.platforms;
|
||||||
|
maintainers = with stdenv.lib.maintainers; [ scolobb ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -548,12 +548,12 @@
|
||||||
ac-php = callPackage ({ ac-php-core, auto-complete, fetchFromGitHub, fetchurl, lib, melpaBuild, yasnippet }:
|
ac-php = callPackage ({ ac-php-core, auto-complete, fetchFromGitHub, fetchurl, lib, melpaBuild, yasnippet }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "ac-php";
|
pname = "ac-php";
|
||||||
version = "1.8";
|
version = "1.8.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "xcwen";
|
owner = "xcwen";
|
||||||
repo = "ac-php";
|
repo = "ac-php";
|
||||||
rev = "7a50b7debd149a30b84f0e2e57a4662926d96a24";
|
rev = "317ad1d023db6b2fe67444a2c075e656c35f5094";
|
||||||
sha256 = "15kmzkkgrhwind66kiyc2kpl27jrbzcs79i3w5s7fzzjjg9h18lb";
|
sha256 = "1wyf93faq6z6wgcs3lxc6gv75bmxchg6kd98dza61zdyc0rj60wa";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/ac-php";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/ac-php";
|
||||||
|
@ -569,12 +569,12 @@
|
||||||
ac-php-core = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, php-mode, popup, s, xcscope }:
|
ac-php-core = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, php-mode, popup, s, xcscope }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "ac-php-core";
|
pname = "ac-php-core";
|
||||||
version = "1.8";
|
version = "1.8.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "xcwen";
|
owner = "xcwen";
|
||||||
repo = "ac-php";
|
repo = "ac-php";
|
||||||
rev = "7a50b7debd149a30b84f0e2e57a4662926d96a24";
|
rev = "317ad1d023db6b2fe67444a2c075e656c35f5094";
|
||||||
sha256 = "15kmzkkgrhwind66kiyc2kpl27jrbzcs79i3w5s7fzzjjg9h18lb";
|
sha256 = "1wyf93faq6z6wgcs3lxc6gv75bmxchg6kd98dza61zdyc0rj60wa";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/ac-php-core";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/ac-php-core";
|
||||||
|
@ -989,12 +989,12 @@
|
||||||
aes = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
aes = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "aes";
|
pname = "aes";
|
||||||
version = "0.8";
|
version = "0.9";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Sauermann";
|
owner = "Sauermann";
|
||||||
repo = "emacs-aes";
|
repo = "emacs-aes";
|
||||||
rev = "d78796facc034b09f379cda5f27090f3139305ec";
|
rev = "b7d5da89c3443292e4f0b1c9d254d459933cf5af";
|
||||||
sha256 = "1y9bw2vkl952pha2dsi18swyr94mihgwlcg5m8hg4d5bfg2fzcb2";
|
sha256 = "0nz1lf77qr3vm90rm02d4inw8glav722rxsiqds76m4xsjrq02m7";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/33ca3106852f82624b36c7e3f03f5c0c620f304f/recipes/aes";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/33ca3106852f82624b36c7e3f03f5c0c620f304f/recipes/aes";
|
||||||
|
@ -1073,12 +1073,12 @@
|
||||||
ahungry-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
ahungry-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "ahungry-theme";
|
pname = "ahungry-theme";
|
||||||
version = "1.6.0";
|
version = "1.8.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ahungry";
|
owner = "ahungry";
|
||||||
repo = "color-theme-ahungry";
|
repo = "color-theme-ahungry";
|
||||||
rev = "2b06d75096d6a1c06682b70e229f2c932e9eac2c";
|
rev = "32ce7765c95559f6a0552cdaeedb6eb97bb7a476";
|
||||||
sha256 = "1jxss4gnlg2vkgf10v1kj1c7isbh7vh040iqrzjkrhclf4qiag5d";
|
sha256 = "0c1xwqknhjx6y29fwca949r8d2fqb17mca5qc79pdxdlp3l606fg";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/520295978fd7de3f4266dd69cc30d0b4fdf09db0/recipes/ahungry-theme";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/520295978fd7de3f4266dd69cc30d0b4fdf09db0/recipes/ahungry-theme";
|
||||||
|
@ -3331,6 +3331,27 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
build-status = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "build-status";
|
||||||
|
version = "0.0.2";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "sshaw";
|
||||||
|
repo = "build-status";
|
||||||
|
rev = "c29a0146c5d0be274f5e17921e01698f572c23a1";
|
||||||
|
sha256 = "03f0h7sp0sr9kjyhvcx7i34lvc26f5x8nikfidihgzhrqpprv2b6";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/23bbe012f313cf0cf4c45a66eb0bee9361ced564/recipes/build-status";
|
||||||
|
sha256 = "0ckyf0asll50gifx1v0qqzpimjms8i1rgw9bnqiyj861qn5hch92";
|
||||||
|
name = "build-status";
|
||||||
|
};
|
||||||
|
packageRequires = [ cl-lib ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/build-status";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
bundler = callPackage ({ fetchFromGitHub, fetchurl, inf-ruby, lib, melpaBuild }:
|
bundler = callPackage ({ fetchFromGitHub, fetchurl, inf-ruby, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "bundler";
|
pname = "bundler";
|
||||||
|
@ -3670,12 +3691,12 @@
|
||||||
caml = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
caml = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "caml";
|
pname = "caml";
|
||||||
version = "4.6.0beta2";
|
version = "4.6.0pre1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ocaml";
|
owner = "ocaml";
|
||||||
repo = "ocaml";
|
repo = "ocaml";
|
||||||
rev = "817604da4d38362b6b2bd4c7787a5add6741cd21";
|
rev = "500625015d40f716e19278209faaa44216dcff58";
|
||||||
sha256 = "1d49kiv9nfr624924qwmf0mfsvja28mvliipaylfbslyb3f7jpkl";
|
sha256 = "1s10wirx080yl0gd2n09lw5kj8yy1mbiipmcr8gpfyc8dq7kfjna";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/d5a3263cdcc229b11a3e96edbf632d56f32c47aa/recipes/caml";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/d5a3263cdcc229b11a3e96edbf632d56f32c47aa/recipes/caml";
|
||||||
|
@ -4235,12 +4256,12 @@
|
||||||
circadian = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
circadian = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "circadian";
|
pname = "circadian";
|
||||||
version = "0.2.3";
|
version = "0.3.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "GuidoSchmidt";
|
owner = "GuidoSchmidt";
|
||||||
repo = "circadian.el";
|
repo = "circadian.el";
|
||||||
rev = "0034de1551de9f420f42267f3ec081351c2b5d7f";
|
rev = "feec308591b43e7869d7a018d5c6fc7e943d53ee";
|
||||||
sha256 = "1khczk5lsiicyjra7g5m3dcl1rc6g43zbypigkj3izx2dsa47n5d";
|
sha256 = "0j8an9ny3jk9nmlpi360n064m20nhah9p8rj6wb9xbvnfrri5zjk";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/3440905a20bc91bb2637a87c04ff8410379f150d/recipes/circadian";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/3440905a20bc91bb2637a87c04ff8410379f150d/recipes/circadian";
|
||||||
|
@ -4667,12 +4688,12 @@
|
||||||
cmake-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
cmake-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "cmake-mode";
|
pname = "cmake-mode";
|
||||||
version = "3.10.0pre3";
|
version = "3.10.0pre4";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Kitware";
|
owner = "Kitware";
|
||||||
repo = "CMake";
|
repo = "CMake";
|
||||||
rev = "319622a49fb300cd8a7efd8378421a32204510de";
|
rev = "45da558742bad36be518e8d95dee0d0ec3793a64";
|
||||||
sha256 = "19n0s0kd051xh3av9nd5ncpccx6bmvay6115g0kqgmi8wbw7587q";
|
sha256 = "0qq7dhwcl290ymza5imc16cg3f9crxym1q6b4i7w9fax8x2vlc1m";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/598723893ae4bc2e60f527a072efe6ed9d4e2488/recipes/cmake-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/598723893ae4bc2e60f527a072efe6ed9d4e2488/recipes/cmake-mode";
|
||||||
|
@ -5294,6 +5315,27 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
company-lsp = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, lsp-mode, melpaBuild, s }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "company-lsp";
|
||||||
|
version = "1.0.0";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "tigersoldier";
|
||||||
|
repo = "company-lsp";
|
||||||
|
rev = "86fda23d29b732ba3987bf20901034da1515b077";
|
||||||
|
sha256 = "068lg2yrpnzq8cg73irnx7i41giww7m0ysnl2inc7hikhmm3a95y";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/5125f53307c1af3d9ccf2bae3c25e7d23dfe1932/recipes/company-lsp";
|
||||||
|
sha256 = "09nbi6vxw8l26gfgsc1k3bx4m8i1px1b0jxaywszky5bv4fdy03l";
|
||||||
|
name = "company-lsp";
|
||||||
|
};
|
||||||
|
packageRequires = [ company emacs lsp-mode s ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/company-lsp";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
company-math = callPackage ({ company, fetchFromGitHub, fetchurl, lib, math-symbol-lists, melpaBuild }:
|
company-math = callPackage ({ company, fetchFromGitHub, fetchurl, lib, math-symbol-lists, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "company-math";
|
pname = "company-math";
|
||||||
|
@ -5360,12 +5402,12 @@
|
||||||
company-php = callPackage ({ ac-php-core, cl-lib ? null, company, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
company-php = callPackage ({ ac-php-core, cl-lib ? null, company, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "company-php";
|
pname = "company-php";
|
||||||
version = "1.8";
|
version = "1.8.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "xcwen";
|
owner = "xcwen";
|
||||||
repo = "ac-php";
|
repo = "ac-php";
|
||||||
rev = "7a50b7debd149a30b84f0e2e57a4662926d96a24";
|
rev = "317ad1d023db6b2fe67444a2c075e656c35f5094";
|
||||||
sha256 = "15kmzkkgrhwind66kiyc2kpl27jrbzcs79i3w5s7fzzjjg9h18lb";
|
sha256 = "1wyf93faq6z6wgcs3lxc6gv75bmxchg6kd98dza61zdyc0rj60wa";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/company-php";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/company-php";
|
||||||
|
@ -5660,12 +5702,12 @@
|
||||||
conda = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, pythonic, s }:
|
conda = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, pythonic, s }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "conda";
|
pname = "conda";
|
||||||
version = "0.0.7";
|
version = "0.0.8";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "necaris";
|
owner = "necaris";
|
||||||
repo = "conda.el";
|
repo = "conda.el";
|
||||||
rev = "6ba9ef5d72ef613f478e07e2ebf57b47066beee7";
|
rev = "526be691824f4a32299f560a883913697bc4d847";
|
||||||
sha256 = "0mp6jzyvz3m41vb4kwwikyvcjgc8qgryyx71n1m50jr2i23s9nk2";
|
sha256 = "1jix3md6b02fypjm4y05av7acjkqryd1vqqz9wgxyinydlagrvh7";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/fcf762e34837975f5440a1d81a7f09699778123e/recipes/conda";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/fcf762e34837975f5440a1d81a7f09699778123e/recipes/conda";
|
||||||
|
@ -6329,6 +6371,27 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
cwl-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, yaml-mode }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "cwl-mode";
|
||||||
|
version = "0.2.4";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "tom-tan";
|
||||||
|
repo = "cwl-mode";
|
||||||
|
rev = "c5110c1e035535a1133a7107c0d2d55e5fe3c5b9";
|
||||||
|
sha256 = "088998r78bpy77pb2rhbr6a2fks5mcy3qyvyzlqwwl0v2gnscl59";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/2309764cd56d9631dd97981a78b50b9fe793a280/recipes/cwl-mode";
|
||||||
|
sha256 = "0x8akxxmphpgsc2m78h6b0fs6vvcfvmi1q2jrz8hwlmai8f7zi9j";
|
||||||
|
name = "cwl-mode";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs yaml-mode ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/cwl-mode";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
cyberpunk-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
cyberpunk-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "cyberpunk-theme";
|
pname = "cyberpunk-theme";
|
||||||
|
@ -6374,12 +6437,12 @@
|
||||||
cython-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
cython-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "cython-mode";
|
pname = "cython-mode";
|
||||||
version = "0.27.1";
|
version = "0.27.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cython";
|
owner = "cython";
|
||||||
repo = "cython";
|
repo = "cython";
|
||||||
rev = "32538fc162be830bf01ff96e43a020bc4924a1ee";
|
rev = "41b4a28d7c7c505d58502c9cf69bde2e33091de0";
|
||||||
sha256 = "03v4ig9zlh8dz9s0c31f5hz2wfpvjydiidb0zgghnrshlqacpyj3";
|
sha256 = "04k534xyr8816821y0lf2dq24bzvb40v99ijdwgy5qhv4rjxbr18";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/be9bfabe3f79153cb859efc7c3051db244a63879/recipes/cython-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/be9bfabe3f79153cb859efc7c3051db244a63879/recipes/cython-mode";
|
||||||
|
@ -8057,15 +8120,36 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
eacl = callPackage ({ emacs, fetchFromGitHub, fetchurl, ivy, lib, melpaBuild }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "eacl";
|
||||||
|
version = "1.0.2";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "redguardtoo";
|
||||||
|
repo = "eacl";
|
||||||
|
rev = "c7a8d705295dc51cc306cb4c2d8773e24c4c74f4";
|
||||||
|
sha256 = "1f3liqrw55v9wnf7g475iabx4pf7gbg2x82mqrf22hhkvxzi2b2b";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/8223bec7eed97f0bad300af9caa4c8207322d39a/recipes/eacl";
|
||||||
|
sha256 = "16afsf3diz498jb63q85lm5ifvm487clfl838qzagl1l4aywhlwr";
|
||||||
|
name = "eacl";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ivy ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/eacl";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
easy-hugo = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
easy-hugo = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "easy-hugo";
|
pname = "easy-hugo";
|
||||||
version = "2.0.15";
|
version = "2.0.16";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "masasam";
|
owner = "masasam";
|
||||||
repo = "emacs-easy-hugo";
|
repo = "emacs-easy-hugo";
|
||||||
rev = "0b55c207c6552223857de03bf8aec8be3344ed26";
|
rev = "d55472bdb08850fb3b2b27a373630c68f6cd2ac0";
|
||||||
sha256 = "103ivy1gmb22xacxj2b99zmilqy20nbzmwvmg5i6aqnya1vs97q0";
|
sha256 = "168wz1638arypqz6i0mzj1pw6mzgp6x10i2wz2vpgkw5p79zw46i";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/easy-hugo";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/easy-hugo";
|
||||||
|
@ -9139,12 +9223,12 @@
|
||||||
elpy = callPackage ({ company, fetchFromGitHub, fetchurl, find-file-in-project, highlight-indentation, lib, melpaBuild, pyvenv, s, yasnippet }:
|
elpy = callPackage ({ company, fetchFromGitHub, fetchurl, find-file-in-project, highlight-indentation, lib, melpaBuild, pyvenv, s, yasnippet }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "elpy";
|
pname = "elpy";
|
||||||
version = "1.16.1";
|
version = "1.17.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jorgenschaefer";
|
owner = "jorgenschaefer";
|
||||||
repo = "elpy";
|
repo = "elpy";
|
||||||
rev = "1e65cb6e988df088c299572464335b6f149addcd";
|
rev = "99f0b6401bff25d40b9f58123533271f7870a286";
|
||||||
sha256 = "01mfrn6mn8h9fkpkqg2shp21864ffjr7q5h3rpbnk6wpa3pmjc1m";
|
sha256 = "06n0vr8y5s8y7q9v96z030l1i9n29p622p36biyi5cjcmgf5h09j";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy";
|
||||||
|
@ -9440,12 +9524,12 @@
|
||||||
embrace = callPackage ({ cl-lib ? null, expand-region, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
embrace = callPackage ({ cl-lib ? null, expand-region, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "embrace";
|
pname = "embrace";
|
||||||
version = "0.1.3";
|
version = "0.1.4";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cute-jumper";
|
owner = "cute-jumper";
|
||||||
repo = "embrace.el";
|
repo = "embrace.el";
|
||||||
rev = "a57b4be5d60daf8c176f9bd35770540c2d3963c9";
|
rev = "dd5da196e5bcc5e6d87e1937eca0c21da4334ef2";
|
||||||
sha256 = "0sn81a7f8g5i4q74byfkj0jlg4aj0rxpfvx9sqv8azcg6wq2f65l";
|
sha256 = "1m0qyipkp5ydgcav8d0m58fbj1gilipbj7g8mg40iajr8wfqcjdc";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/e8f07e3b5ba4ec4b0b79fba5a2cca5a3986218b6/recipes/embrace";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/e8f07e3b5ba4ec4b0b79fba5a2cca5a3986218b6/recipes/embrace";
|
||||||
|
@ -9479,20 +9563,21 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
emms = callPackage ({ fetchgit, fetchurl, lib, melpaBuild }: melpaBuild {
|
emms = callPackage ({ cl-lib ? null, fetchgit, fetchurl, lib, melpaBuild }:
|
||||||
|
melpaBuild {
|
||||||
pname = "emms";
|
pname = "emms";
|
||||||
version = "4.3";
|
version = "4.4";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://git.savannah.gnu.org/git/emms.git";
|
url = "https://git.savannah.gnu.org/git/emms.git";
|
||||||
rev = "4cb3ae341847e8e8586373a95a458a453469812d";
|
rev = "88fecd0234da595843ce6be4d3f9f2b755ff612d";
|
||||||
sha256 = "0bmxlrk2p51bw5lgh2arkcz1v9bw6rpflwk778rdzn0rhzhvhp5b";
|
sha256 = "0ycm2lggljhzrb10r3c322c7bb580gk125x9nvpvjrvsp74p8im0";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/caaa21f235c4864f6008fb454d0a970a2fd22a86/recipes/emms";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/caaa21f235c4864f6008fb454d0a970a2fd22a86/recipes/emms";
|
||||||
sha256 = "1xpry8h96gvjnc0v8x0vk5dnmlq1r7m3ljpampdwv9pfwl95fh94";
|
sha256 = "1xpry8h96gvjnc0v8x0vk5dnmlq1r7m3ljpampdwv9pfwl95fh94";
|
||||||
name = "emms";
|
name = "emms";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [ cl-lib ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://melpa.org/#/emms";
|
homepage = "https://melpa.org/#/emms";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
|
@ -10064,12 +10149,12 @@
|
||||||
erlang = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
erlang = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "erlang";
|
pname = "erlang";
|
||||||
version = "20.1.2";
|
version = "20.1.3";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "erlang";
|
owner = "erlang";
|
||||||
repo = "otp";
|
repo = "otp";
|
||||||
rev = "919ef5de2858e606d4a9be3e0e995b0802c76e33";
|
rev = "a98379d0519c28f9bc9b673ed2c09fb1ad52456e";
|
||||||
sha256 = "0y76ci80wmzrxvj90bhiz6cvwbis34kcc6dzas9xxsj92b6sh7sk";
|
sha256 = "1672yqqh7ql88c6ifv555wvqrj8nyn5a2nph43n2nc43h7hhz17c";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang";
|
||||||
|
@ -12585,6 +12670,27 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
flycheck-nimsuggest = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, nim-mode }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "flycheck-nimsuggest";
|
||||||
|
version = "0.8.1";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "yuutayamada";
|
||||||
|
repo = "flycheck-nimsuggest";
|
||||||
|
rev = "8b1c69e9aa924368bc4dadd4cde818ff158cd3f0";
|
||||||
|
sha256 = "0vnwy7b3xs2smbr6ah6yk8hq7vvsciq7d6m1qr91nfnazdgvxmvg";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/cb4170f002dbcd1906e81836f3ce035b1e81c379/recipes/flycheck-nimsuggest";
|
||||||
|
sha256 = "099mlzramm6z66zyjb6ypn7qb0hpvwbbgk9ydsanj8sni0dd66hv";
|
||||||
|
name = "flycheck-nimsuggest";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs flycheck nim-mode ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/flycheck-nimsuggest";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
flycheck-objc-clang = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild }:
|
flycheck-objc-clang = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "flycheck-objc-clang";
|
pname = "flycheck-objc-clang";
|
||||||
|
@ -19471,12 +19577,12 @@
|
||||||
import-js = callPackage ({ emacs, fetchFromGitHub, fetchurl, grizzl, lib, melpaBuild }:
|
import-js = callPackage ({ emacs, fetchFromGitHub, fetchurl, grizzl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "import-js";
|
pname = "import-js";
|
||||||
version = "1.0.0";
|
version = "2.0.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Galooshi";
|
owner = "Galooshi";
|
||||||
repo = "emacs-import-js";
|
repo = "emacs-import-js";
|
||||||
rev = "15d395126f57408d770a72db2e5f43271f90fa52";
|
rev = "0a1032894445062b87dbe4e2c8cdba35ac25c250";
|
||||||
sha256 = "1ipbfacjx9vqqhvsf9sgfci8vqx0plks510w1gsjj0xwrpqn1f6l";
|
sha256 = "0vx2k4k8ig1k74ifxaxvhbkmfmba683qza7f9pp08daa43mgr1r3";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/6f26b8281f9bd05e3c8f2ef21838275711e622c9/recipes/import-js";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/6f26b8281f9bd05e3c8f2ef21838275711e622c9/recipes/import-js";
|
||||||
|
@ -19992,6 +20098,27 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
iter2 = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "iter2";
|
||||||
|
version = "0.9.4";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "doublep";
|
||||||
|
repo = "iter2";
|
||||||
|
rev = "a0e41b2f55d50c08c59ffcc6e83a977c141bcc55";
|
||||||
|
sha256 = "0ccr9qjhc35wi07yckd9y26synihhsg8zwkxgqyzkx7avxkqfyhn";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/d94316660051ee0ba0c12e380e6203986440368f/recipes/iter2";
|
||||||
|
sha256 = "0kl3z2wwpvk2ddsb3798g41pv0xycsf9dclhv00snpzsr61d9v65";
|
||||||
|
name = "iter2";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/iter2";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
ivy = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
ivy = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "ivy";
|
pname = "ivy";
|
||||||
|
@ -20452,6 +20579,27 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
jetbrains = callPackage ({ cl-lib ? null, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "jetbrains";
|
||||||
|
version = "0.0.2";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "emacs-php";
|
||||||
|
repo = "jetbrains.el";
|
||||||
|
rev = "38e136079f3f2ddbe0e8b7dec01cf6b515e897d8";
|
||||||
|
sha256 = "1ji64qip5raf0lbv7fv36rd4fwa33zn0xi7sa0zrgf0kcsr0qasb";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/00dd4626e261d9831fc62d866d50b7257ee418c4/recipes/jetbrains";
|
||||||
|
sha256 = "0254dkzf2x5dj3j549xjash0lsadkn0bdcyjkjlrv8hqvdr1f1m7";
|
||||||
|
name = "jetbrains";
|
||||||
|
};
|
||||||
|
packageRequires = [ cl-lib emacs f ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/jetbrains";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
jinja2-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
jinja2-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "jinja2-mode";
|
pname = "jinja2-mode";
|
||||||
|
@ -20518,12 +20666,12 @@
|
||||||
js-auto-format-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
js-auto-format-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "js-auto-format-mode";
|
pname = "js-auto-format-mode";
|
||||||
version = "1.0.1";
|
version = "1.0.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ybiquitous";
|
owner = "ybiquitous";
|
||||||
repo = "js-auto-format-mode";
|
repo = "js-auto-format-mode";
|
||||||
rev = "705e300a2c880f6dbfa830d6c69818b7a3a95c09";
|
rev = "e0b7ae9d1d70fa74abd91bb6f901bd46db5a22eb";
|
||||||
sha256 = "1a3dwcknjydaxnyhaycgbmlncj92qkp3m5flmi6fyqjx11lz26ag";
|
sha256 = "1z5vi8681afm7jsqwifnb35sja1s4b2j123b3pn0bv1j6b8iaq9j";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/2d3be16771b5b5fde639da3ee97890620354ee7a/recipes/js-auto-format-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/2d3be16771b5b5fde639da3ee97890620354ee7a/recipes/js-auto-format-mode";
|
||||||
|
@ -20956,24 +21104,24 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
kaolin-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
kaolin-themes = callPackage ({ autothemer, cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "kaolin-theme";
|
pname = "kaolin-themes";
|
||||||
version = "0.9";
|
version = "1.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ogdenwebb";
|
owner = "ogdenwebb";
|
||||||
repo = "kaolin-theme";
|
repo = "emacs-kaolin-themes";
|
||||||
rev = "d43ba0e8e6b13b08e4d74de20c6e594ebb225501";
|
rev = "720762a42ad4cb4b325f78a9d41af380b8783501";
|
||||||
sha256 = "0gg19rh5q1gl6ylwrmjq0dqh6p5fkms1av6bbgry6fqv8220xf8n";
|
sha256 = "104prgkjqnnv1bqgpcl0di1q9sqkfnj4ibqvrk6ls32hw75shvdh";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/a67c2a3ad82efcb32ba4943c7ac10fe2768d9d51/recipes/kaolin-theme";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/043a4e3bd5301ef8f4df2cbda0b3f4111eb399e4/recipes/kaolin-themes";
|
||||||
sha256 = "009064hhn39f9w9qxa3m0kwqhj5a12j7hg4916j9hslpwy5ghc0c";
|
sha256 = "1pd2v54d578f1wbwvqzplkdz1qvy8w8s6na511b0v5y9sksgm2xw";
|
||||||
name = "kaolin-theme";
|
name = "kaolin-themes";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ autothemer cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://melpa.org/#/kaolin-theme";
|
homepage = "https://melpa.org/#/kaolin-themes";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
@ -24629,6 +24777,27 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
nim-mode = callPackage ({ commenter, emacs, epc, fetchFromGitHub, fetchurl, flycheck, let-alist, lib, melpaBuild }:
|
||||||
|
melpaBuild {
|
||||||
|
pname = "nim-mode";
|
||||||
|
version = "0.4.1";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "nim-lang";
|
||||||
|
repo = "nim-mode";
|
||||||
|
rev = "86abed21b9b718ac65cc167f208e0bd5b92c79ed";
|
||||||
|
sha256 = "0h1paf9z6xvkay97ns74w2w9plwi46md5f2kik4jvjy74p57gxal";
|
||||||
|
};
|
||||||
|
recipeFile = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/dc2ccb5f24b9d55c77eaa7952a9e6a2e0ed7be24/recipes/nim-mode";
|
||||||
|
sha256 = "1kzn3kkkj7jzs7fqhvib196sl3vp7kbhb4icqzmvvmv366lkaib6";
|
||||||
|
name = "nim-mode";
|
||||||
|
};
|
||||||
|
packageRequires = [ commenter emacs epc flycheck let-alist ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://melpa.org/#/nim-mode";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
ninja-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
ninja-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "ninja-mode";
|
pname = "ninja-mode";
|
||||||
|
@ -24682,8 +24851,8 @@
|
||||||
sha256 = "1zpqpq6hd83prk80921nbjrvcmk0dykqrrr1mw3b29ppjma5zjiz";
|
sha256 = "1zpqpq6hd83prk80921nbjrvcmk0dykqrrr1mw3b29ppjma5zjiz";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/4c885d9d9f1a37f05c715f89fae51efb580faced/recipes/nix-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/e1870d786dbfac3b14386c8030e06f2d13ab9da6/recipes/nix-mode";
|
||||||
sha256 = "15xgqgrkypcplnfvl5j6w8abayzz8q0nw2wav01sdyx39ym005k3";
|
sha256 = "10f3ly4860lkxzykw4fbvhn3i0c2hgj77jfjbhlk2c1jz9x4yyy5";
|
||||||
name = "nix-mode";
|
name = "nix-mode";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
|
@ -25472,8 +25641,8 @@
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "OmniSharp";
|
owner = "OmniSharp";
|
||||||
repo = "omnisharp-emacs";
|
repo = "omnisharp-emacs";
|
||||||
rev = "d7a63cd5f592c131615a3b6523fc2b2a04a9f00a";
|
rev = "906e29a702237f039f24c215fdb561a728a3df1b";
|
||||||
sha256 = "0cvsys9jyb0zbkj5q01q2fgjmcqvb12dxgfy049fl7a2gd9n55fj";
|
sha256 = "1l1rzl7y5j2wmlgx7ivivwvwvbn4h7pg5s7yqsk65n9kb59ha8s8";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/e327c483be04de32638b420c5b4e043d12a2cd01/recipes/omnisharp";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/e327c483be04de32638b420c5b4e043d12a2cd01/recipes/omnisharp";
|
||||||
|
@ -26109,12 +26278,12 @@
|
||||||
org-mru-clock = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
org-mru-clock = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "org-mru-clock";
|
pname = "org-mru-clock";
|
||||||
version = "0.1.1";
|
version = "0.1.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "unhammer";
|
owner = "unhammer";
|
||||||
repo = "org-mru-clock";
|
repo = "org-mru-clock";
|
||||||
rev = "096a7c514ab8487ec63def6281cf4dce24e3a626";
|
rev = "10f6a7021c82dc6795f4020e89889a5a72eb8832";
|
||||||
sha256 = "1hmyqvi1dj5yrlish8kw4sdh3yy0b0w33smw4cbjagp4rs29p3fp";
|
sha256 = "00f4l5w6p0l1x5ghpvbp5934m9m012fabvzb7apazwdr5c7xbd7q";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/b36bf1c1faa4d7e38254416a293e56af96214136/recipes/org-mru-clock";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/b36bf1c1faa4d7e38254416a293e56af96214136/recipes/org-mru-clock";
|
||||||
|
@ -27136,12 +27305,12 @@
|
||||||
ox-hugo = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, org }:
|
ox-hugo = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, org }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "ox-hugo";
|
pname = "ox-hugo";
|
||||||
version = "0.3.1";
|
version = "0.4.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kaushalmodi";
|
owner = "kaushalmodi";
|
||||||
repo = "ox-hugo";
|
repo = "ox-hugo";
|
||||||
rev = "16cf5d595644ee4e05b05b351e0c4fdd5df0ac44";
|
rev = "c32359c71e7926c7f13039069d8d7481dfb9bc82";
|
||||||
sha256 = "1n5xbgwv9x2b9zmv7nw0x64qbll4ycjf2dp09rdj3m4bmcg2gv42";
|
sha256 = "1nw2dp6rn3hnnzzffvpr6yz7c154338h9i5ixxgh5vjxm9phzdml";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/1e1240bb7b5bb8773f804b987901566a20e3e8a9/recipes/ox-hugo";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/1e1240bb7b5bb8773f804b987901566a20e3e8a9/recipes/ox-hugo";
|
||||||
|
@ -28705,12 +28874,12 @@
|
||||||
pocket-reader = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, kv, lib, melpaBuild, org-web-tools, ov, pocket-lib, rainbow-identifiers, s }:
|
pocket-reader = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, kv, lib, melpaBuild, org-web-tools, ov, pocket-lib, rainbow-identifiers, s }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "pocket-reader";
|
pname = "pocket-reader";
|
||||||
version = "0.1";
|
version = "0.1.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "alphapapa";
|
owner = "alphapapa";
|
||||||
repo = "pocket-reader.el";
|
repo = "pocket-reader.el";
|
||||||
rev = "93ef3a0737e93fb2e73f230fbb38f0b9f6f9d9bd";
|
rev = "e65a7e7529ece4fb7a738c062e73d5c07ace9574";
|
||||||
sha256 = "02l1yd0s7dnq6wj7lldbbxqq1libdcczygc2lzx4rdc5jnr4lnsh";
|
sha256 = "0bqxsvhmwvf0gpjmmh7pmzyw4lpcarj2prm52bgncch8x1f0gvnp";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/835a7bf2f72987183e9d15ada7ae747fb5715c11/recipes/pocket-reader";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/835a7bf2f72987183e9d15ada7ae747fb5715c11/recipes/pocket-reader";
|
||||||
|
@ -30957,22 +31126,22 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
rg = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s, seq }:
|
rg = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "rg";
|
pname = "rg";
|
||||||
version = "1.3.1";
|
version = "1.4.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "dajva";
|
owner = "dajva";
|
||||||
repo = "rg.el";
|
repo = "rg.el";
|
||||||
rev = "081685a8c624220ece68d6dca8d60016585b04ff";
|
rev = "5de611eae7787ecbc285fe7e31e412b9281a4e14";
|
||||||
sha256 = "094fy48h0mmih3g9dq7xhhdqq3dx3jbrg1x9qcq2szl3danndl6z";
|
sha256 = "18mhcipj5yywd5648pwm955wx3ipsnp9nwjyyl270qnn56hwkb6g";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/9ce1f721867383a841957370946f283f996fa76f/recipes/rg";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/9ce1f721867383a841957370946f283f996fa76f/recipes/rg";
|
||||||
sha256 = "0i78qvqdznh1z3b0mnzihv07j8b9r86dc1lsa1qlzacv6a2i9sbm";
|
sha256 = "0i78qvqdznh1z3b0mnzihv07j8b9r86dc1lsa1qlzacv6a2i9sbm";
|
||||||
name = "rg";
|
name = "rg";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs s seq ];
|
packageRequires = [ cl-lib emacs s ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://melpa.org/#/rg";
|
homepage = "https://melpa.org/#/rg";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
|
@ -33457,12 +33626,12 @@
|
||||||
sparql-mode = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
sparql-mode = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "sparql-mode";
|
pname = "sparql-mode";
|
||||||
version = "2.1.1";
|
version = "3.0.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ljos";
|
owner = "ljos";
|
||||||
repo = "sparql-mode";
|
repo = "sparql-mode";
|
||||||
rev = "262c46a282ce54ca4745b863cf323d9bf69e2faa";
|
rev = "e220a0c0c478fee0be3622442651981cdd82090c";
|
||||||
sha256 = "02ai86c15x0fbgg2bw6a9k3k825gkhl3hy9abq62dfgdwc0cqxmn";
|
sha256 = "1k1ih6y9yq1fx13863yacx69v6f77b8xhkrx5i2dpm4h7wki1dg4";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c3d729130a41903bb01465d0f01c34fbc508b56e/recipes/sparql-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/c3d729130a41903bb01465d0f01c34fbc508b56e/recipes/sparql-mode";
|
||||||
|
@ -35135,12 +35304,12 @@
|
||||||
tickscript-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
tickscript-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "tickscript-mode";
|
pname = "tickscript-mode";
|
||||||
version = "0.3.1";
|
version = "0.4";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "msherry";
|
owner = "msherry";
|
||||||
repo = "tickscript-mode";
|
repo = "tickscript-mode";
|
||||||
rev = "eb6eafee2df253a0f1356f260cc7f435ab68aea2";
|
rev = "9acf389dd055ae77c92170802769838810472490";
|
||||||
sha256 = "04pd1dvvs914f98yaq5n0nv1jbjr2sjgi3a288vpismrmxfybcch";
|
sha256 = "1v60y244papzrirwqk9c2wcwgz4qp9h7m3887kvgr5ffn5imjss8";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c60ee1839f728c5041bde1fe4fa62c4d41c746ef/recipes/tickscript-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/c60ee1839f728c5041bde1fe4fa62c4d41c746ef/recipes/tickscript-mode";
|
||||||
|
@ -37237,22 +37406,22 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
winum = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
winum = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "winum";
|
pname = "winum";
|
||||||
version = "1.0.2";
|
version = "2.0.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "deb0ch";
|
owner = "deb0ch";
|
||||||
repo = "emacs-winum";
|
repo = "emacs-winum";
|
||||||
rev = "8e886302c7e1d8fd521a95e0f00d6efab295a883";
|
rev = "c56d1cdb8d1723eb4c0d7a7eb3ecd2697739146c";
|
||||||
sha256 = "19rf806v3yv6qy6p8mf54g1whdrh7vc107z31kqaqdwq681fhi37";
|
sha256 = "09jd5srlnd4060hs719qil84ssmnvq196bz7ywaswgapv1gs1h6r";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c1caa7a54a910a44322fdee300e8cce6ddcde071/recipes/winum";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/c1caa7a54a910a44322fdee300e8cce6ddcde071/recipes/winum";
|
||||||
sha256 = "0yyvjmvqif6glh9ri6049nxcmgib9mxdhy6816kjhsaqr570f9pw";
|
sha256 = "0yyvjmvqif6glh9ri6049nxcmgib9mxdhy6816kjhsaqr570f9pw";
|
||||||
name = "winum";
|
name = "winum";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib ];
|
packageRequires = [ cl-lib dash ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://melpa.org/#/winum";
|
homepage = "https://melpa.org/#/winum";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
|
@ -38018,8 +38187,8 @@
|
||||||
version = "1.80";
|
version = "1.80";
|
||||||
src = fetchhg {
|
src = fetchhg {
|
||||||
url = "https://www.yatex.org/hgrepos/yatex/";
|
url = "https://www.yatex.org/hgrepos/yatex/";
|
||||||
rev = "ca7cf34e959c";
|
rev = "16763e5b7481";
|
||||||
sha256 = "19pczpzl0wvkdassskcssq5qrpica0bffqxxi8sqp1j35px6v4ma";
|
sha256 = "1mrcc9amz0kflm570bd2cprhin0z8lr668k2s56mj6shixb61dwh";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/e28710244a1bef8f56156fe1c271520896a9c694/recipes/yatex";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/e28710244a1bef8f56156fe1c271520896a9c694/recipes/yatex";
|
||||||
|
@ -38276,12 +38445,12 @@
|
||||||
zoom = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
zoom = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "zoom";
|
pname = "zoom";
|
||||||
version = "0.1.0";
|
version = "0.2.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cyrus-and";
|
owner = "cyrus-and";
|
||||||
repo = "zoom";
|
repo = "zoom";
|
||||||
rev = "ed8aca43820678ff6e7b8ed697cba8dbb3a6136e";
|
rev = "d92ea444df6f6bb6cae92242f3269582d1b8ab40";
|
||||||
sha256 = "1na1syvbayqwbsvd1d0ajyzjvhg8q3s3mqrx82ffcbxr0ijyzzj8";
|
sha256 = "08riz3dd19c1dixm3c6j5dkkwjpgcib05pxq611w8z0mgsn0hsc5";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/3fe094c99756ad29eda9bc51f31bb70c4ddc4131/recipes/zoom";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/3fe094c99756ad29eda9bc51f31bb70c4ddc4131/recipes/zoom";
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{ callPackage }: {
|
{ callPackage }: {
|
||||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
version = "20171016";
|
version = "20171030";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://orgmode.org/elpa/org-20171016.tar";
|
url = "http://orgmode.org/elpa/org-20171030.tar";
|
||||||
sha256 = "1v89wl8xlxavvv2kdd5vms0rwpqaw2x73q0162ybxmrzf4a5f5mw";
|
sha256 = "1g2dyzy1844lli2hhfjnbskn1mskccgaaf0mxb1cm0zhhas8bnfd";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -14,10 +14,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org-plus-contrib";
|
pname = "org-plus-contrib";
|
||||||
version = "20171016";
|
version = "20171030";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://orgmode.org/elpa/org-plus-contrib-20171016.tar";
|
url = "http://orgmode.org/elpa/org-plus-contrib-20171030.tar";
|
||||||
sha256 = "0xy2xrndlhs4kyvh6mmv24dnh3fn5p63d2gaimnrypf1p8znwzh4";
|
sha256 = "0pq2hs5d2i6s036pcs0jn6ld2p1ap08dmbjf17hsh899741mg9cj";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -32,7 +32,7 @@ let
|
||||||
build_dir=$PWD
|
build_dir=$PWD
|
||||||
cd $TMPDIR
|
cd $TMPDIR
|
||||||
|
|
||||||
local_path=$(basename ${store_path} .zip | sed -e 's/^[a-z0-9]*-//')
|
local_path=$(basename ${url} .zip)
|
||||||
|
|
||||||
cp -r ${store_path} $local_path
|
cp -r ${store_path} $local_path
|
||||||
chmod u+rwX -R $local_path
|
chmod u+rwX -R $local_path
|
||||||
|
|
|
@ -3,18 +3,18 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "typora-${version}";
|
name = "typora-${version}";
|
||||||
version = "0.9.31";
|
version = "0.9.38";
|
||||||
|
|
||||||
src =
|
src =
|
||||||
if stdenv.system == "x86_64-linux" then
|
if stdenv.system == "x86_64-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "https://www.typora.io/linux/typora_${version}_amd64.deb";
|
url = "https://www.typora.io/linux/typora_${version}_amd64.deb";
|
||||||
sha256 = "786b5164d9c63ecc23eb427c5ff393285ce8fd540c5bfdd5c1464655fac87a42";
|
sha256 = "bf6a069c5da4a7dc289bdb3c8d27e7a81daeaee99488d4d3b512c6b673780557";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "https://www.typora.io/linux/typora_${version}_i386.deb";
|
url = "https://www.typora.io/linux/typora_${version}_i386.deb";
|
||||||
sha256 = "a8fe53f8984d9f8c4e06c14affbb616be58a91cd2b475b9681fb18a6e21930d1";
|
sha256 = "edd092e96ebf69503cf6b39b77a61ec5e3185f8a1447da0bed063fa11861c1b9";
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -57,8 +57,10 @@ stdenv.mkDerivation rec {
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
dpkg -x $src $out
|
dpkg -x $src $out
|
||||||
cp -av $out/usr/* $out
|
mv $out/usr/bin $out
|
||||||
|
mv $out/usr/share $out
|
||||||
rm $out/bin/typora
|
rm $out/bin/typora
|
||||||
|
rmdir $out/usr
|
||||||
|
|
||||||
# Otherwise it looks "suspicious"
|
# Otherwise it looks "suspicious"
|
||||||
chmod -R g-w $out
|
chmod -R g-w $out
|
||||||
|
@ -81,9 +83,8 @@ stdenv.mkDerivation rec {
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "A minimal Markdown reading & writing app";
|
description = "A minimal Markdown reading & writing app";
|
||||||
homepage = https://typora.io;
|
homepage = https://typora.io;
|
||||||
license = licenses.free;
|
license = licenses.unfree;
|
||||||
maintainers = with stdenv.lib.maintainers; [ jensbin ];
|
maintainers = with maintainers; [ jensbin ];
|
||||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{ lib, fetchFromGitHub }:
|
{ lib, fetchFromGitHub }:
|
||||||
rec {
|
rec {
|
||||||
version = "8.0.1150";
|
version = "8.0.1257";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vim";
|
owner = "vim";
|
||||||
repo = "vim";
|
repo = "vim";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1k1qkmb2jbymqikrp99q1yjagdf508xzabrw7b08dlh926b2v23j";
|
sha256 = "1y4c7wn5gr7n4c2ni36kadr26aldydxlf06yj7nsmw22ywwg78ig";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
|
@ -14,8 +14,8 @@ let
|
||||||
else throw "ImageMagick is not supported on this platform.";
|
else throw "ImageMagick is not supported on this platform.";
|
||||||
|
|
||||||
cfg = {
|
cfg = {
|
||||||
version = "7.0.7-8";
|
version = "7.0.7-9";
|
||||||
sha256 = "0h2jbaxrxrmdcr5crf1d93sc60v4zfqrrl3w79md6h11wf57ksbp";
|
sha256 = "0p0879chcfrghcamwgxxcmaaj04xv0z91ris7hxi37qdw8c7836w";
|
||||||
patches = [];
|
patches = [];
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
|
@ -14,8 +14,8 @@ let
|
||||||
else throw "ImageMagick is not supported on this platform.";
|
else throw "ImageMagick is not supported on this platform.";
|
||||||
|
|
||||||
cfg = {
|
cfg = {
|
||||||
version = "6.9.9-20";
|
version = "6.9.9-21";
|
||||||
sha256 = "1pz8clmhnq26vdsp1j21czq3nfbvrmfdz30k7na7w4vh7wqxsrx1";
|
sha256 = "0241g3c207rawn61bz8rc5gz55k5mi2b0n3zlwa0jv9xczlkd6a9";
|
||||||
patches = [];
|
patches = [];
|
||||||
}
|
}
|
||||||
# Freeze version on mingw so we don't need to port the patch too often.
|
# Freeze version on mingw so we don't need to port the patch too often.
|
||||||
|
|
|
@ -4,13 +4,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "ahoviewer-${version}";
|
name = "ahoviewer-${version}";
|
||||||
version = "1.4.8";
|
version = "1.4.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ahodesuka";
|
owner = "ahodesuka";
|
||||||
repo = "ahoviewer";
|
repo = "ahoviewer";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0fsak22hpi2r8zqysswdyngaf3n635qvclqh1p0g0wrkfza4dbc4";
|
sha256 = "194h3k5zvd8gjrbs91qba7d9h7i30yh4rjk4w3aa1vwvv0qm2amx";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = https://github.com/ahodesuka/ahoviewer;
|
homepage = https://github.com/ahodesuka/ahoviewer;
|
||||||
description = "A GTK2 image viewer, manga reader, and booru browser";
|
description = "A GTK2 image viewer, manga reader, and booru browser";
|
||||||
maintainers = [ maintainers.skrzyp ];
|
maintainers = with maintainers; [ skrzyp xzfc ];
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
platforms = platforms.allBut [ "darwin" "cygwin" ];
|
platforms = platforms.allBut [ "darwin" "cygwin" ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -66,5 +66,59 @@ stdenv.mkDerivation rec {
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
maintainers = with maintainers; [ hodapp ];
|
maintainers = with maintainers; [ hodapp ];
|
||||||
license = licenses.gpl2;
|
license = licenses.gpl2;
|
||||||
|
knownVulnerabilities = [
|
||||||
|
"CVE-2013-1953"
|
||||||
|
"CVE-2016-7392"
|
||||||
|
"CVE-2017-9151"
|
||||||
|
"CVE-2017-9152"
|
||||||
|
"CVE-2017-9153"
|
||||||
|
"CVE-2017-9154"
|
||||||
|
"CVE-2017-9155"
|
||||||
|
"CVE-2017-9156"
|
||||||
|
"CVE-2017-9157"
|
||||||
|
"CVE-2017-9158"
|
||||||
|
"CVE-2017-9159"
|
||||||
|
"CVE-2017-9160"
|
||||||
|
"CVE-2017-9161"
|
||||||
|
"CVE-2017-9162"
|
||||||
|
"CVE-2017-9163"
|
||||||
|
"CVE-2017-9164"
|
||||||
|
"CVE-2017-9165"
|
||||||
|
"CVE-2017-9166"
|
||||||
|
"CVE-2017-9167"
|
||||||
|
"CVE-2017-9168"
|
||||||
|
"CVE-2017-9169"
|
||||||
|
"CVE-2017-9170"
|
||||||
|
"CVE-2017-9171"
|
||||||
|
"CVE-2017-9172"
|
||||||
|
"CVE-2017-9173"
|
||||||
|
"CVE-2017-9174"
|
||||||
|
"CVE-2017-9175"
|
||||||
|
"CVE-2017-9176"
|
||||||
|
"CVE-2017-9177"
|
||||||
|
"CVE-2017-9178"
|
||||||
|
"CVE-2017-9179"
|
||||||
|
"CVE-2017-9180"
|
||||||
|
"CVE-2017-9181"
|
||||||
|
"CVE-2017-9182"
|
||||||
|
"CVE-2017-9183"
|
||||||
|
"CVE-2017-9184"
|
||||||
|
"CVE-2017-9185"
|
||||||
|
"CVE-2017-9186"
|
||||||
|
"CVE-2017-9187"
|
||||||
|
"CVE-2017-9188"
|
||||||
|
"CVE-2017-9189"
|
||||||
|
"CVE-2017-9190"
|
||||||
|
"CVE-2017-9191"
|
||||||
|
"CVE-2017-9192"
|
||||||
|
"CVE-2017-9193"
|
||||||
|
"CVE-2017-9194"
|
||||||
|
"CVE-2017-9195"
|
||||||
|
"CVE-2017-9196"
|
||||||
|
"CVE-2017-9197"
|
||||||
|
"CVE-2017-9198"
|
||||||
|
"CVE-2017-9199"
|
||||||
|
"CVE-2017-9200"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ mkDerivation, lib, fetchurl, cmake, extra-cmake-modules, wrapGAppsHook
|
{ mkDerivation, lib, fetchurl, cmake, doxygen, extra-cmake-modules, wrapGAppsHook
|
||||||
|
|
||||||
# For `digitaglinktree`
|
# For `digitaglinktree`
|
||||||
, perl, sqlite
|
, perl, sqlite
|
||||||
|
@ -33,8 +33,8 @@
|
||||||
, liblqr1
|
, liblqr1
|
||||||
, libqtav
|
, libqtav
|
||||||
, libusb1
|
, libusb1
|
||||||
, mesa
|
|
||||||
, marble
|
, marble
|
||||||
|
, mesa
|
||||||
, mysql
|
, mysql
|
||||||
, opencv3
|
, opencv3
|
||||||
, pcre
|
, pcre
|
||||||
|
@ -53,11 +53,11 @@ mkDerivation rec {
|
||||||
version = "5.7.0";
|
version = "5.7.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.kde.org/stable/digikam/${name}.tar.xz";
|
url = "mirror://kde/stable/digikam/${name}.tar.xz";
|
||||||
sha256 = "1xah079g47fih8l9qy1ifppfvmq5yms5y1z54nvxdyz8nsszy19n";
|
sha256 = "1xah079g47fih8l9qy1ifppfvmq5yms5y1z54nvxdyz8nsszy19n";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake extra-cmake-modules kdoctools wrapGAppsHook ];
|
nativeBuildInputs = [ cmake doxygen extra-cmake-modules kdoctools wrapGAppsHook ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
bison
|
bison
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue