Merge master into staging-next
This commit is contained in:
commit
b2ab860db3
|
@ -1,12 +1,13 @@
|
|||
<book xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<info>
|
||||
<title>Nixpkgs Contributors Guide</title>
|
||||
<title>Nixpkgs Users and Contributors Guide</title>
|
||||
<subtitle>Version <xi:include href=".version" parse="text" />
|
||||
</subtitle>
|
||||
</info>
|
||||
<xi:include href="introduction.chapter.xml" />
|
||||
<xi:include href="quick-start.xml" />
|
||||
<xi:include href="package-specific-user-notes.xml" />
|
||||
<xi:include href="stdenv.xml" />
|
||||
<xi:include href="multiple-output.xml" />
|
||||
<xi:include href="cross-compilation.xml" />
|
||||
|
|
|
@ -352,312 +352,6 @@ packageOverrides = pkgs: {
|
|||
</screen>
|
||||
</para>
|
||||
</section>
|
||||
<section xml:id="sec-steam">
|
||||
<title>Steam</title>
|
||||
|
||||
<section xml:id="sec-steam-nix">
|
||||
<title>Steam in Nix</title>
|
||||
|
||||
<para>
|
||||
Steam is distributed as a <filename>.deb</filename> file, for now only as
|
||||
an i686 package (the amd64 package only has documentation). When unpacked,
|
||||
it has a script called <filename>steam</filename> that in ubuntu (their
|
||||
target distro) would go to <filename>/usr/bin </filename>. When run for the
|
||||
first time, this script copies some files to the user's home, which include
|
||||
another script that is the ultimate responsible for launching the steam
|
||||
binary, which is also in $HOME.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Nix problems and constraints:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
We don't have <filename>/bin/bash</filename> and many scripts point
|
||||
there. Similarly for <filename>/usr/bin/python</filename> .
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
We don't have the dynamic loader in <filename>/lib </filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <filename>steam.sh</filename> script in $HOME can not be patched, as
|
||||
it is checked and rewritten by steam.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The steam binary cannot be patched, it's also checked.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The current approach to deploy Steam in NixOS is composing a FHS-compatible
|
||||
chroot environment, as documented
|
||||
<link xlink:href="http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html">here</link>.
|
||||
This allows us to have binaries in the expected paths without disrupting
|
||||
the system, and to avoid patching them to work in a non FHS environment.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-play">
|
||||
<title>How to play</title>
|
||||
|
||||
<para>
|
||||
For 64-bit systems it's important to have
|
||||
<programlisting>hardware.opengl.driSupport32Bit = true;</programlisting>
|
||||
in your <filename>/etc/nixos/configuration.nix</filename>. You'll also need
|
||||
<programlisting>hardware.pulseaudio.support32Bit = true;</programlisting>
|
||||
if you are using PulseAudio - this will enable 32bit ALSA apps integration.
|
||||
To use the Steam controller or other Steam supported controllers such as
|
||||
the DualShock 4 or Nintendo Switch Pro, you need to add
|
||||
<programlisting>hardware.steam-hardware.enable = true;</programlisting>
|
||||
to your configuration.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-troub">
|
||||
<title>Troubleshooting</title>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Steam fails to start. What do I do?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Try to run
|
||||
<programlisting>strace steam</programlisting>
|
||||
to see what is causing steam to fail.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Using the FOSS Radeon or nouveau (nvidia) drivers
|
||||
</term>
|
||||
<listitem>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>newStdcpp</literal> parameter was removed since NixOS
|
||||
17.09 and should not be needed anymore.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Steam ships statically linked with a version of libcrypto that
|
||||
conflics with the one dynamically loaded by radeonsi_dri.so. If you
|
||||
get the error
|
||||
<programlisting>steam.sh: line 713: 7842 Segmentation fault (core dumped)</programlisting>
|
||||
have a look at
|
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/pull/20269">this
|
||||
pull request</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Java
|
||||
</term>
|
||||
<listitem>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
There is no java in steam chrootenv by default. If you get a message
|
||||
like
|
||||
<programlisting>/home/foo/.local/share/Steam/SteamApps/common/towns/towns.sh: line 1: java: command not found</programlisting>
|
||||
You need to add
|
||||
<programlisting> steam.override { withJava = true; };</programlisting>
|
||||
to your configuration.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-run">
|
||||
<title>steam-run</title>
|
||||
|
||||
<para>
|
||||
The FHS-compatible chroot used for steam can also be used to run other
|
||||
linux games that expect a FHS environment. To do it, add
|
||||
<programlisting>pkgs.(steam.override {
|
||||
nativeOnly = true;
|
||||
newStdcpp = true;
|
||||
}).run</programlisting>
|
||||
to your configuration, rebuild, and run the game with
|
||||
<programlisting>steam-run ./foo</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
<section xml:id="sec-emacs">
|
||||
<title>Emacs</title>
|
||||
|
||||
<section xml:id="sec-emacs-config">
|
||||
<title>Configuring Emacs</title>
|
||||
|
||||
<para>
|
||||
The Emacs package comes with some extra helpers to make it easier to
|
||||
configure. <varname>emacsWithPackages</varname> allows you to manage
|
||||
packages from ELPA. This means that you will not have to install that
|
||||
packages from within Emacs. For instance, if you wanted to use
|
||||
<literal>company</literal>, <literal>counsel</literal>,
|
||||
<literal>flycheck</literal>, <literal>ivy</literal>,
|
||||
<literal>magit</literal>, <literal>projectile</literal>, and
|
||||
<literal>use-package</literal> you could use this as a
|
||||
<filename>~/.config/nixpkgs/config.nix</filename> override:
|
||||
</para>
|
||||
|
||||
<screen>
|
||||
{
|
||||
packageOverrides = pkgs: with pkgs; {
|
||||
myEmacs = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [
|
||||
company
|
||||
counsel
|
||||
flycheck
|
||||
ivy
|
||||
magit
|
||||
projectile
|
||||
use-package
|
||||
]));
|
||||
}
|
||||
}
|
||||
</screen>
|
||||
|
||||
<para>
|
||||
You can install it like any other packages via <command>nix-env -iA
|
||||
myEmacs</command>. However, this will only install those packages. It will
|
||||
not <literal>configure</literal> them for us. To do this, we need to
|
||||
provide a configuration file. Luckily, it is possible to do this from
|
||||
within Nix! By modifying the above example, we can make Emacs load a custom
|
||||
config file. The key is to create a package that provide a
|
||||
<filename>default.el</filename> file in
|
||||
<filename>/share/emacs/site-start/</filename>. Emacs knows to load this
|
||||
file automatically when it starts.
|
||||
</para>
|
||||
|
||||
<screen>
|
||||
{
|
||||
packageOverrides = pkgs: with pkgs; rec {
|
||||
myEmacsConfig = writeText "default.el" ''
|
||||
;; initialize package
|
||||
|
||||
(require 'package)
|
||||
(package-initialize 'noactivate)
|
||||
(eval-when-compile
|
||||
(require 'use-package))
|
||||
|
||||
;; load some packages
|
||||
|
||||
(use-package company
|
||||
:bind ("<C-tab>" . company-complete)
|
||||
:diminish company-mode
|
||||
:commands (company-mode global-company-mode)
|
||||
:defer 1
|
||||
:config
|
||||
(global-company-mode))
|
||||
|
||||
(use-package counsel
|
||||
:commands (counsel-descbinds)
|
||||
:bind (([remap execute-extended-command] . counsel-M-x)
|
||||
("C-x C-f" . counsel-find-file)
|
||||
("C-c g" . counsel-git)
|
||||
("C-c j" . counsel-git-grep)
|
||||
("C-c k" . counsel-ag)
|
||||
("C-x l" . counsel-locate)
|
||||
("M-y" . counsel-yank-pop)))
|
||||
|
||||
(use-package flycheck
|
||||
:defer 2
|
||||
:config (global-flycheck-mode))
|
||||
|
||||
(use-package ivy
|
||||
:defer 1
|
||||
:bind (("C-c C-r" . ivy-resume)
|
||||
("C-x C-b" . ivy-switch-buffer)
|
||||
:map ivy-minibuffer-map
|
||||
("C-j" . ivy-call))
|
||||
:diminish ivy-mode
|
||||
:commands ivy-mode
|
||||
:config
|
||||
(ivy-mode 1))
|
||||
|
||||
(use-package magit
|
||||
:defer
|
||||
:if (executable-find "git")
|
||||
:bind (("C-x g" . magit-status)
|
||||
("C-x G" . magit-dispatch-popup))
|
||||
:init
|
||||
(setq magit-completing-read-function 'ivy-completing-read))
|
||||
|
||||
(use-package projectile
|
||||
:commands projectile-mode
|
||||
:bind-keymap ("C-c p" . projectile-command-map)
|
||||
:defer 5
|
||||
:config
|
||||
(projectile-global-mode))
|
||||
'';
|
||||
myEmacs = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [
|
||||
(runCommand "default.el" {} ''
|
||||
mkdir -p $out/share/emacs/site-lisp
|
||||
cp ${myEmacsConfig} $out/share/emacs/site-lisp/default.el
|
||||
'')
|
||||
company
|
||||
counsel
|
||||
flycheck
|
||||
ivy
|
||||
magit
|
||||
projectile
|
||||
use-package
|
||||
]));
|
||||
};
|
||||
}
|
||||
</screen>
|
||||
|
||||
<para>
|
||||
This provides a fairly full Emacs start file. It will load in addition to
|
||||
the user's presonal config. You can always disable it by passing
|
||||
<command>-q</command> to the Emacs command.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Sometimes <varname>emacsWithPackages</varname> is not enough, as this
|
||||
package set has some priorities imposed on packages (with the lowest
|
||||
priority assigned to Melpa Unstable, and the highest for packages manually
|
||||
defined in <filename>pkgs/top-level/emacs-packages.nix</filename>). But you
|
||||
can't control this priorities when some package is installed as a
|
||||
dependency. You can override it on per-package-basis, providing all the
|
||||
required dependencies manually - but it's tedious and there is always a
|
||||
possibility that an unwanted dependency will sneak in through some other
|
||||
package. To completely override such a package you can use
|
||||
<varname>overrideScope'</varname>.
|
||||
</para>
|
||||
|
||||
<screen>
|
||||
overrides = self: super: rec {
|
||||
haskell-mode = self.melpaPackages.haskell-mode;
|
||||
...
|
||||
};
|
||||
((emacsPackagesNgGen emacs).overrideScope' overrides).emacsWithPackages (p: with p; [
|
||||
# here both these package will use haskell-mode of our own choice
|
||||
ghc-mod
|
||||
dante
|
||||
])
|
||||
</screen>
|
||||
</section>
|
||||
</section>
|
||||
<section xml:id="sec-weechat">
|
||||
<title>Weechat</title>
|
||||
|
||||
|
@ -762,64 +456,6 @@ stdenv.mkDerivation {
|
|||
}</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
<section xml:id="sec-citrix">
|
||||
<title>Citrix Receiver</title>
|
||||
|
||||
<para>
|
||||
The <link xlink:href="https://www.citrix.com/products/receiver/">Citrix
|
||||
Receiver</link> is a remote desktop viewer which provides access to
|
||||
<link xlink:href="https://www.citrix.com/products/xenapp-xendesktop/">XenDesktop</link>
|
||||
installations.
|
||||
</para>
|
||||
|
||||
<section xml:id="sec-citrix-base">
|
||||
<title>Basic usage</title>
|
||||
|
||||
<para>
|
||||
The tarball archive needs to be downloaded manually as the licenses
|
||||
agreements of the vendor need to be accepted first. This is available at
|
||||
the
|
||||
<link xlink:href="https://www.citrix.com/downloads/citrix-receiver/">download
|
||||
page at citrix.com</link>. Then run <literal>nix-prefetch-url
|
||||
file://$PWD/linuxx64-$version.tar.gz</literal>. With the archive available
|
||||
in the store the package can be built and installed with Nix.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>Note: it's recommended to install <literal>Citrix
|
||||
Receiver</literal> using <literal>nix-env -i</literal> or globally to
|
||||
ensure that the <literal>.desktop</literal> files are installed properly
|
||||
into <literal>$XDG_CONFIG_DIRS</literal>. Otherwise it won't be possible to
|
||||
open <literal>.ica</literal> files automatically from the browser to start
|
||||
a Citrix connection.</emphasis>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-citrix-custom-certs">
|
||||
<title>Custom certificates</title>
|
||||
|
||||
<para>
|
||||
The <literal>Citrix Receiver</literal> in <literal>nixpkgs</literal> trusts
|
||||
several certificates
|
||||
<link xlink:href="https://curl.haxx.se/docs/caextract.html">from the
|
||||
Mozilla database</link> by default. However several companies using Citrix
|
||||
might require their own corporate certificate. On distros with imperative
|
||||
packaging these certs can be stored easily in
|
||||
<link xlink:href="https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/"><literal>$ICAROOT</literal></link>,
|
||||
however this directory is a store path in <literal>nixpkgs</literal>. In
|
||||
order to work around this issue the package provides a simple mechanism to
|
||||
add custom certificates without rebuilding the entire package using
|
||||
<literal>symlinkJoin</literal>:
|
||||
<programlisting>
|
||||
<![CDATA[with import <nixpkgs> { config.allowUnfree = true; };
|
||||
let extraCerts = [ ./custom-cert-1.pem ./custom-cert-2.pem /* ... */ ]; in
|
||||
citrix_receiver.override {
|
||||
inherit extraCerts;
|
||||
}]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
<section xml:id="sec-ibus-typing-booster">
|
||||
<title>ibus-engines.typing-booster</title>
|
||||
|
||||
|
@ -858,7 +494,7 @@ citrix_receiver.override {
|
|||
<para>
|
||||
The IBus engine is based on <literal>hunspell</literal> to support
|
||||
completion in many languages. By default the dictionaries
|
||||
<literal>de-de</literal>, <literal>en-us</literal>,
|
||||
<literal>de-de</literal>, <literal>en-us</literal>, <literal>fr-moderne</literal>
|
||||
<literal>es-es</literal>, <literal>it-it</literal>,
|
||||
<literal>sv-se</literal> and <literal>sv-fi</literal> are in use. To add
|
||||
another dictionary, the package can be overridden like this:
|
||||
|
@ -887,33 +523,6 @@ citrix_receiver.override {
|
|||
On NixOS it can be installed using the following expression:
|
||||
<programlisting>{ pkgs, ... }: {
|
||||
fonts.fonts = with pkgs; [ noto-fonts-emoji ];
|
||||
}</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
<section xml:id="dlib">
|
||||
<title>DLib</title>
|
||||
|
||||
<para>
|
||||
<link xlink:href="http://dlib.net/">DLib</link> is a modern, C++-based toolkit which
|
||||
provides several machine learning algorithms.
|
||||
</para>
|
||||
|
||||
<section xml:id="compiling-without-avx-support">
|
||||
<title>Compiling without AVX support</title>
|
||||
|
||||
<para>
|
||||
Especially older CPUs don't support
|
||||
<link xlink:href="https://en.wikipedia.org/wiki/Advanced_Vector_Extensions">AVX</link>
|
||||
(<abbrev>Advanced Vector Extensions</abbrev>) instructions that are used by DLib to
|
||||
optimize their algorithms.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
On the affected hardware errors like <literal>Illegal instruction</literal> will occur.
|
||||
In those cases AVX support needs to be disabled:
|
||||
<programlisting>self: super: {
|
||||
dlib = super.dlib.override { avxSupport = false; };
|
||||
}</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
|
|
469
doc/package-specific-user-notes.xml
Normal file
469
doc/package-specific-user-notes.xml
Normal file
|
@ -0,0 +1,469 @@
|
|||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="package-specific-user-notes">
|
||||
<title>Package-specific usage notes</title>
|
||||
<para>
|
||||
These chapters includes some notes
|
||||
that apply to specific packages and should
|
||||
answer some of the frequently asked questions
|
||||
related to Nixpkgs use.
|
||||
|
||||
Some useful information related to package use
|
||||
can be found in <link linkend="chap-package-notes">package-specific development notes</link>.
|
||||
|
||||
</para>
|
||||
<section xml:id="opengl">
|
||||
<title>OpenGL</title>
|
||||
|
||||
<para>
|
||||
Packages that use OpenGL have NixOS desktop as their primary target. The
|
||||
current solution for loading the GPU-specific drivers is based on
|
||||
<literal>libglvnd</literal> and looks for the driver implementation in
|
||||
<literal>LD_LIBRARY_PATH</literal>. If you are using a non-NixOS
|
||||
GNU/Linux/X11 desktop with free software video drivers, consider launching
|
||||
OpenGL-dependent programs from Nixpkgs with Nixpkgs versions of
|
||||
<literal>libglvnd</literal> and <literal>mesa_drivers</literal> in
|
||||
<literal>LD_LIBRARY_PATH</literal>. For proprietary video drivers you might
|
||||
have luck with also adding the corresponding video driver package.
|
||||
</para>
|
||||
</section>
|
||||
<section xml:id="locales">
|
||||
<title>Locales</title>
|
||||
|
||||
<para>
|
||||
To allow simultaneous use of packages linked against different versions of
|
||||
<literal>glibc</literal> with different locale archive formats Nixpkgs
|
||||
patches <literal>glibc</literal> to rely on
|
||||
<literal>LOCALE_ARCHIVE</literal> environment variable.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
On non-NixOS distributions this variable is obviously not set. This can
|
||||
cause regressions in language support or even crashes in some
|
||||
Nixpkgs-provided programs. The simplest way to mitigate this problem is
|
||||
exporting the <literal>LOCALE_ARCHIVE</literal> variable pointing to
|
||||
<literal>${glibcLocales}/lib/locale/locale-archive</literal>. The drawback
|
||||
(and the reason this is not the default) is the relatively large (a hundred
|
||||
MiB) size of the full set of locales. It is possible to build a custom set
|
||||
of locales by overriding parameters <literal>allLocales</literal> and
|
||||
<literal>locales</literal> of the package.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-emacs">
|
||||
<title>Emacs</title>
|
||||
|
||||
<section xml:id="sec-emacs-config">
|
||||
<title>Configuring Emacs</title>
|
||||
|
||||
<para>
|
||||
The Emacs package comes with some extra helpers to make it easier to
|
||||
configure. <varname>emacsWithPackages</varname> allows you to manage
|
||||
packages from ELPA. This means that you will not have to install that
|
||||
packages from within Emacs. For instance, if you wanted to use
|
||||
<literal>company</literal>, <literal>counsel</literal>,
|
||||
<literal>flycheck</literal>, <literal>ivy</literal>,
|
||||
<literal>magit</literal>, <literal>projectile</literal>, and
|
||||
<literal>use-package</literal> you could use this as a
|
||||
<filename>~/.config/nixpkgs/config.nix</filename> override:
|
||||
</para>
|
||||
|
||||
<screen>
|
||||
{
|
||||
packageOverrides = pkgs: with pkgs; {
|
||||
myEmacs = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [
|
||||
company
|
||||
counsel
|
||||
flycheck
|
||||
ivy
|
||||
magit
|
||||
projectile
|
||||
use-package
|
||||
]));
|
||||
}
|
||||
}
|
||||
</screen>
|
||||
|
||||
<para>
|
||||
You can install it like any other packages via <command>nix-env -iA
|
||||
myEmacs</command>. However, this will only install those packages. It will
|
||||
not <literal>configure</literal> them for us. To do this, we need to
|
||||
provide a configuration file. Luckily, it is possible to do this from
|
||||
within Nix! By modifying the above example, we can make Emacs load a custom
|
||||
config file. The key is to create a package that provide a
|
||||
<filename>default.el</filename> file in
|
||||
<filename>/share/emacs/site-start/</filename>. Emacs knows to load this
|
||||
file automatically when it starts.
|
||||
</para>
|
||||
|
||||
<screen>
|
||||
{
|
||||
packageOverrides = pkgs: with pkgs; rec {
|
||||
myEmacsConfig = writeText "default.el" ''
|
||||
;; initialize package
|
||||
|
||||
(require 'package)
|
||||
(package-initialize 'noactivate)
|
||||
(eval-when-compile
|
||||
(require 'use-package))
|
||||
|
||||
;; load some packages
|
||||
|
||||
(use-package company
|
||||
:bind ("<C-tab>" . company-complete)
|
||||
:diminish company-mode
|
||||
:commands (company-mode global-company-mode)
|
||||
:defer 1
|
||||
:config
|
||||
(global-company-mode))
|
||||
|
||||
(use-package counsel
|
||||
:commands (counsel-descbinds)
|
||||
:bind (([remap execute-extended-command] . counsel-M-x)
|
||||
("C-x C-f" . counsel-find-file)
|
||||
("C-c g" . counsel-git)
|
||||
("C-c j" . counsel-git-grep)
|
||||
("C-c k" . counsel-ag)
|
||||
("C-x l" . counsel-locate)
|
||||
("M-y" . counsel-yank-pop)))
|
||||
|
||||
(use-package flycheck
|
||||
:defer 2
|
||||
:config (global-flycheck-mode))
|
||||
|
||||
(use-package ivy
|
||||
:defer 1
|
||||
:bind (("C-c C-r" . ivy-resume)
|
||||
("C-x C-b" . ivy-switch-buffer)
|
||||
:map ivy-minibuffer-map
|
||||
("C-j" . ivy-call))
|
||||
:diminish ivy-mode
|
||||
:commands ivy-mode
|
||||
:config
|
||||
(ivy-mode 1))
|
||||
|
||||
(use-package magit
|
||||
:defer
|
||||
:if (executable-find "git")
|
||||
:bind (("C-x g" . magit-status)
|
||||
("C-x G" . magit-dispatch-popup))
|
||||
:init
|
||||
(setq magit-completing-read-function 'ivy-completing-read))
|
||||
|
||||
(use-package projectile
|
||||
:commands projectile-mode
|
||||
:bind-keymap ("C-c p" . projectile-command-map)
|
||||
:defer 5
|
||||
:config
|
||||
(projectile-global-mode))
|
||||
'';
|
||||
myEmacs = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [
|
||||
(runCommand "default.el" {} ''
|
||||
mkdir -p $out/share/emacs/site-lisp
|
||||
cp ${myEmacsConfig} $out/share/emacs/site-lisp/default.el
|
||||
'')
|
||||
company
|
||||
counsel
|
||||
flycheck
|
||||
ivy
|
||||
magit
|
||||
projectile
|
||||
use-package
|
||||
]));
|
||||
};
|
||||
}
|
||||
</screen>
|
||||
|
||||
<para>
|
||||
This provides a fairly full Emacs start file. It will load in addition to
|
||||
the user's presonal config. You can always disable it by passing
|
||||
<command>-q</command> to the Emacs command.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Sometimes <varname>emacsWithPackages</varname> is not enough, as this
|
||||
package set has some priorities imposed on packages (with the lowest
|
||||
priority assigned to Melpa Unstable, and the highest for packages manually
|
||||
defined in <filename>pkgs/top-level/emacs-packages.nix</filename>). But you
|
||||
can't control this priorities when some package is installed as a
|
||||
dependency. You can override it on per-package-basis, providing all the
|
||||
required dependencies manually - but it's tedious and there is always a
|
||||
possibility that an unwanted dependency will sneak in through some other
|
||||
package. To completely override such a package you can use
|
||||
<varname>overrideScope'</varname>.
|
||||
</para>
|
||||
|
||||
<screen>
|
||||
overrides = self: super: rec {
|
||||
haskell-mode = self.melpaPackages.haskell-mode;
|
||||
...
|
||||
};
|
||||
((emacsPackagesNgGen emacs).overrideScope' overrides).emacsWithPackages (p: with p; [
|
||||
# here both these package will use haskell-mode of our own choice
|
||||
ghc-mod
|
||||
dante
|
||||
])
|
||||
</screen>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="dlib">
|
||||
<title>DLib</title>
|
||||
|
||||
<para>
|
||||
<link xlink:href="http://dlib.net/">DLib</link> is a modern, C++-based toolkit which
|
||||
provides several machine learning algorithms.
|
||||
</para>
|
||||
|
||||
<section xml:id="compiling-without-avx-support">
|
||||
<title>Compiling without AVX support</title>
|
||||
|
||||
<para>
|
||||
Especially older CPUs don't support
|
||||
<link xlink:href="https://en.wikipedia.org/wiki/Advanced_Vector_Extensions">AVX</link>
|
||||
(<abbrev>Advanced Vector Extensions</abbrev>) instructions that are used by DLib to
|
||||
optimize their algorithms.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
On the affected hardware errors like <literal>Illegal instruction</literal> will occur.
|
||||
In those cases AVX support needs to be disabled:
|
||||
<programlisting>self: super: {
|
||||
dlib = super.dlib.override { avxSupport = false; };
|
||||
}</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="unfree-software">
|
||||
<title>Unfree software</title>
|
||||
|
||||
<para>
|
||||
All users of Nixpkgs are free software users, and many users (and
|
||||
developers) of Nixpkgs want to limit and tightly control their exposure to
|
||||
unfree software. At the same time, many users need (or want)
|
||||
to run some specific
|
||||
pieces of proprietary software. Nixpkgs includes some expressions for unfree
|
||||
software packages. By default unfree software cannot be installed and
|
||||
doesn’t show up in searches. To allow installing unfree software in a
|
||||
single Nix invocation one can export
|
||||
<literal>NIXPKGS_ALLOW_UNFREE=1</literal>. For a persistent solution, users
|
||||
can set <literal>allowUnfree</literal> in the Nixpkgs configuration.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Fine-grained control is possible by defining
|
||||
<literal>allowUnfreePredicate</literal> function in config; it takes the
|
||||
<literal>mkDerivation</literal> parameter attrset and returns
|
||||
<literal>true</literal> for unfree packages that should be allowed.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam">
|
||||
<title>Steam</title>
|
||||
|
||||
<section xml:id="sec-steam-nix">
|
||||
<title>Steam in Nix</title>
|
||||
|
||||
<para>
|
||||
Steam is distributed as a <filename>.deb</filename> file, for now only as
|
||||
an i686 package (the amd64 package only has documentation). When unpacked,
|
||||
it has a script called <filename>steam</filename> that in Ubuntu (their
|
||||
target distro) would go to <filename>/usr/bin </filename>. When run for the
|
||||
first time, this script copies some files to the user's home, which include
|
||||
another script that is the ultimate responsible for launching the steam
|
||||
binary, which is also in $HOME.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Nix problems and constraints:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
We don't have <filename>/bin/bash</filename> and many scripts point
|
||||
there. Similarly for <filename>/usr/bin/python</filename> .
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
We don't have the dynamic loader in <filename>/lib </filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <filename>steam.sh</filename> script in $HOME can not be patched, as
|
||||
it is checked and rewritten by steam.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The steam binary cannot be patched, it's also checked.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The current approach to deploy Steam in NixOS is composing a FHS-compatible
|
||||
chroot environment, as documented
|
||||
<link xlink:href="http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html">here</link>.
|
||||
This allows us to have binaries in the expected paths without disrupting
|
||||
the system, and to avoid patching them to work in a non FHS environment.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-play">
|
||||
<title>How to play</title>
|
||||
|
||||
<para>
|
||||
For 64-bit systems it's important to have
|
||||
<programlisting>hardware.opengl.driSupport32Bit = true;</programlisting>
|
||||
in your <filename>/etc/nixos/configuration.nix</filename>. You'll also need
|
||||
<programlisting>hardware.pulseaudio.support32Bit = true;</programlisting>
|
||||
if you are using PulseAudio - this will enable 32bit ALSA apps integration.
|
||||
To use the Steam controller or other Steam supported controllers such as
|
||||
the DualShock 4 or Nintendo Switch Pro, you need to add
|
||||
<programlisting>hardware.steam-hardware.enable = true;</programlisting>
|
||||
to your configuration.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-troub">
|
||||
<title>Troubleshooting</title>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Steam fails to start. What do I do?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Try to run
|
||||
<programlisting>strace steam</programlisting>
|
||||
to see what is causing steam to fail.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Using the FOSS Radeon or nouveau (nvidia) drivers
|
||||
</term>
|
||||
<listitem>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>newStdcpp</literal> parameter was removed since NixOS
|
||||
17.09 and should not be needed anymore.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Steam ships statically linked with a version of libcrypto that
|
||||
conflics with the one dynamically loaded by radeonsi_dri.so. If you
|
||||
get the error
|
||||
<programlisting>steam.sh: line 713: 7842 Segmentation fault (core dumped)</programlisting>
|
||||
have a look at
|
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/pull/20269">this
|
||||
pull request</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Java
|
||||
</term>
|
||||
<listitem>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
There is no java in steam chrootenv by default. If you get a message
|
||||
like
|
||||
<programlisting>/home/foo/.local/share/Steam/SteamApps/common/towns/towns.sh: line 1: java: command not found</programlisting>
|
||||
You need to add
|
||||
<programlisting> steam.override { withJava = true; };</programlisting>
|
||||
to your configuration.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-run">
|
||||
<title>steam-run</title>
|
||||
|
||||
<para>
|
||||
The FHS-compatible chroot used for steam can also be used to run other
|
||||
linux games that expect a FHS environment. To do it, add
|
||||
<programlisting>pkgs.(steam.override {
|
||||
nativeOnly = true;
|
||||
newStdcpp = true;
|
||||
}).run</programlisting>
|
||||
to your configuration, rebuild, and run the game with
|
||||
<programlisting>steam-run ./foo</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-citrix">
|
||||
<title>Citrix Receiver</title>
|
||||
|
||||
<para>
|
||||
The <link xlink:href="https://www.citrix.com/products/receiver/">Citrix
|
||||
Receiver</link> is a remote desktop viewer which provides access to
|
||||
<link xlink:href="https://www.citrix.com/products/xenapp-xendesktop/">XenDesktop</link>
|
||||
installations.
|
||||
</para>
|
||||
|
||||
<section xml:id="sec-citrix-base">
|
||||
<title>Basic usage</title>
|
||||
|
||||
<para>
|
||||
The tarball archive needs to be downloaded manually as the license
|
||||
agreements of the vendor need to be accepted first. This is available at
|
||||
the
|
||||
<link xlink:href="https://www.citrix.com/downloads/citrix-receiver/">download
|
||||
page at citrix.com</link>. Then run <literal>nix-prefetch-url
|
||||
file://$PWD/linuxx64-$version.tar.gz</literal>. With the archive available
|
||||
in the store the package can be built and installed with Nix.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>Note: it's recommended to install <literal>Citrix
|
||||
Receiver</literal> using <literal>nix-env -i</literal> or globally to
|
||||
ensure that the <literal>.desktop</literal> files are installed properly
|
||||
into <literal>$XDG_CONFIG_DIRS</literal>. Otherwise it won't be possible to
|
||||
open <literal>.ica</literal> files automatically from the browser to start
|
||||
a Citrix connection.</emphasis>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-citrix-custom-certs">
|
||||
<title>Custom certificates</title>
|
||||
|
||||
<para>
|
||||
The <literal>Citrix Receiver</literal> in <literal>nixpkgs</literal> trusts
|
||||
several certificates
|
||||
<link xlink:href="https://curl.haxx.se/docs/caextract.html">from the
|
||||
Mozilla database</link> by default. However several companies using Citrix
|
||||
might require their own corporate certificate. On distros with imperative
|
||||
packaging these certs can be stored easily in
|
||||
<link xlink:href="https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/"><literal>$ICAROOT</literal></link>,
|
||||
however this directory is a store path in <literal>nixpkgs</literal>. In
|
||||
order to work around this issue the package provides a simple mechanism to
|
||||
add custom certificates without rebuilding the entire package using
|
||||
<literal>symlinkJoin</literal>:
|
||||
<programlisting>
|
||||
<![CDATA[with import <nixpkgs> { config.allowUnfree = true; };
|
||||
let extraCerts = [ ./custom-cert-1.pem ./custom-cert-2.pem /* ... */ ]; in
|
||||
citrix_receiver.override {
|
||||
inherit extraCerts;
|
||||
}]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
|
@ -375,6 +375,11 @@
|
|||
github = "ankhers";
|
||||
name = "Justin Wood";
|
||||
};
|
||||
anpryl = {
|
||||
email = "anpryl@gmail.com";
|
||||
github = "anpryl";
|
||||
name = "Anatolii Prylutskyi";
|
||||
};
|
||||
anton-dessiatov = {
|
||||
email = "anton.dessiatov@gmail.com";
|
||||
github = "anton-dessiatov";
|
||||
|
@ -881,6 +886,11 @@
|
|||
github = "ceedubs";
|
||||
name = "Cody Allen";
|
||||
};
|
||||
cf6b88f = {
|
||||
email = "elmo.todurov@eesti.ee";
|
||||
github = "cf6b88f";
|
||||
name = "Elmo Todurov";
|
||||
};
|
||||
cfouche = {
|
||||
email = "chaddai.fouche@gmail.com";
|
||||
github = "Chaddai";
|
||||
|
@ -1746,13 +1756,13 @@
|
|||
github = "fps";
|
||||
name = "Florian Paul Schmidt";
|
||||
};
|
||||
|
||||
|
||||
fragamus = {
|
||||
email = "innovative.engineer@gmail.com";
|
||||
github = "fragamus";
|
||||
name = "Michael Gough";
|
||||
};
|
||||
|
||||
|
||||
fredeb = {
|
||||
email = "im@fredeb.dev";
|
||||
github = "fredeeb";
|
||||
|
@ -2486,6 +2496,11 @@
|
|||
github = "jtojnar";
|
||||
name = "Jan Tojnar";
|
||||
};
|
||||
juaningan = {
|
||||
email = "juaningan@gmail.com";
|
||||
github = "juaningan";
|
||||
name = "Juan Rodal";
|
||||
};
|
||||
juliendehos = {
|
||||
email = "dehos@lisic.univ-littoral.fr";
|
||||
github = "juliendehos";
|
||||
|
@ -4377,6 +4392,11 @@
|
|||
github = "samdroid-apps";
|
||||
name = "Sam Parkinson";
|
||||
};
|
||||
samrose = {
|
||||
email = "samuel.rose@gmail.com";
|
||||
github = "samrose";
|
||||
name = "Sam Rose";
|
||||
};
|
||||
samueldr = {
|
||||
email = "samuel@dionne-riel.com";
|
||||
github = "samueldr";
|
||||
|
@ -4397,6 +4417,11 @@
|
|||
github = "sargon";
|
||||
name = "Daniel Ehlers";
|
||||
};
|
||||
saschagrunert = {
|
||||
email = "mail@saschagrunert.de";
|
||||
github = "saschagrunert";
|
||||
name = "Sascha Grunert";
|
||||
};
|
||||
sauyon = {
|
||||
email = "s@uyon.co";
|
||||
github = "sauyon";
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
version="5.0"
|
||||
xml:id="sec-release-19.03">
|
||||
<title>Release 19.03 (“Koi”, 2019/03/??)</title>
|
||||
<title>Release 19.03 (“Koi”, 2019/04/11)</title>
|
||||
|
||||
<section xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
|
@ -18,6 +18,11 @@
|
|||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
End of support is planned for end of October 2019, handing over to 19.09.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The default Python 3 interpreter is now CPython 3.7 instead of CPython
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para />
|
||||
<para>
|
||||
End of support is planned for end of April 2020, handing over to 20.03.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
@ -154,6 +156,12 @@
|
|||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>hunspellDicts.fr-any</literal> dictionary now ships with <literal>fr_FR.{aff,dic}</literal>
|
||||
which is linked to <literal>fr-toutesvariantes.{aff,dic}</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -63,8 +63,7 @@ in {
|
|||
b43Firmware_5_1_138
|
||||
b43Firmware_6_30_163_46
|
||||
b43FirmwareCutter
|
||||
facetimehd-firmware
|
||||
];
|
||||
] ++ optional (pkgs.stdenv.hostPlatform.isi686 || pkgs.stdenv.hostPlatform.isx86_64) facetimehd-firmware;
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ let
|
|||
nixos-generate-config = makeProg {
|
||||
name = "nixos-generate-config";
|
||||
src = ./nixos-generate-config.pl;
|
||||
path = [ pkgs.btrfs-progs ];
|
||||
path = lib.optionals (lib.elem "btrfs" config.boot.supportedFilesystems) [ pkgs.btrfs-progs ];
|
||||
perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/${pkgs.perl.libPrefix}";
|
||||
inherit (config.system.nixos) release;
|
||||
};
|
||||
|
|
|
@ -536,6 +536,7 @@
|
|||
./services/networking/avahi-daemon.nix
|
||||
./services/networking/babeld.nix
|
||||
./services/networking/bind.nix
|
||||
./services/networking/bitcoind.nix
|
||||
./services/networking/autossh.nix
|
||||
./services/networking/bird.nix
|
||||
./services/networking/bitlbee.nix
|
||||
|
|
|
@ -8,12 +8,13 @@ let
|
|||
|
||||
mongodb = cfg.package;
|
||||
|
||||
mongoCnf = pkgs.writeText "mongodb.conf"
|
||||
mongoCnf = cfg: pkgs.writeText "mongodb.conf"
|
||||
''
|
||||
net.bindIp: ${cfg.bind_ip}
|
||||
${optionalString cfg.quiet "systemLog.quiet: true"}
|
||||
systemLog.destination: syslog
|
||||
storage.dbPath: ${cfg.dbpath}
|
||||
${optionalString cfg.enableAuth "security.authorization: enabled"}
|
||||
${optionalString (cfg.replSetName != "") "replication.replSetName: ${cfg.replSetName}"}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
@ -59,6 +60,18 @@ in
|
|||
description = "quieter output";
|
||||
};
|
||||
|
||||
enableAuth = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable client authentication. Creates a default superuser with username root!";
|
||||
};
|
||||
|
||||
initialRootPassword = mkOption {
|
||||
type = types.nullOr types.string;
|
||||
default = null;
|
||||
description = "Password for the root user if auth is enabled.";
|
||||
};
|
||||
|
||||
dbpath = mkOption {
|
||||
default = "/var/db/mongodb";
|
||||
description = "Location where MongoDB stores its files";
|
||||
|
@ -84,6 +97,14 @@ in
|
|||
'';
|
||||
description = "MongoDB extra configuration in YAML format";
|
||||
};
|
||||
|
||||
initialScript = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
A file containing MongoDB statements to execute on first startup.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -92,6 +113,11 @@ in
|
|||
###### implementation
|
||||
|
||||
config = mkIf config.services.mongodb.enable {
|
||||
assertions = [
|
||||
{ assertion = !cfg.enableAuth || cfg.initialRootPassword != null;
|
||||
message = "`enableAuth` requires `initialRootPassword` to be set.";
|
||||
}
|
||||
];
|
||||
|
||||
users.users.mongodb = mkIf (cfg.user == "mongodb")
|
||||
{ name = "mongodb";
|
||||
|
@ -108,7 +134,7 @@ in
|
|||
after = [ "network.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${mongodb}/bin/mongod --config ${mongoCnf} --fork --pidfilepath ${cfg.pidFile}";
|
||||
ExecStart = "${mongodb}/bin/mongod --config ${mongoCnf cfg} --fork --pidfilepath ${cfg.pidFile}";
|
||||
User = cfg.user;
|
||||
PIDFile = cfg.pidFile;
|
||||
Type = "forking";
|
||||
|
@ -116,15 +142,50 @@ in
|
|||
PermissionsStartOnly = true;
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
preStart = let
|
||||
cfg_ = cfg // { enableAuth = false; bind_ip = "127.0.0.1"; };
|
||||
in ''
|
||||
rm ${cfg.dbpath}/mongod.lock || true
|
||||
if ! test -e ${cfg.dbpath}; then
|
||||
install -d -m0700 -o ${cfg.user} ${cfg.dbpath}
|
||||
# See postStart!
|
||||
touch ${cfg.dbpath}/.first_startup
|
||||
fi
|
||||
if ! test -e ${cfg.pidFile}; then
|
||||
install -D -o ${cfg.user} /dev/null ${cfg.pidFile}
|
||||
fi '' + lib.optionalString cfg.enableAuth ''
|
||||
|
||||
if ! test -e "${cfg.dbpath}/.auth_setup_complete"; then
|
||||
systemd-run --unit=mongodb-for-setup --uid=${cfg.user} ${mongodb}/bin/mongod --config ${mongoCnf cfg_}
|
||||
# wait for mongodb
|
||||
while ! ${mongodb}/bin/mongo --eval "db.version()" > /dev/null 2>&1; do sleep 0.1; done
|
||||
|
||||
${mongodb}/bin/mongo <<EOF
|
||||
use admin
|
||||
db.createUser(
|
||||
{
|
||||
user: "root",
|
||||
pwd: "${cfg.initialRootPassword}",
|
||||
roles: [
|
||||
{ role: "userAdminAnyDatabase", db: "admin" },
|
||||
{ role: "dbAdminAnyDatabase", db: "admin" },
|
||||
{ role: "readWriteAnyDatabase", db: "admin" }
|
||||
]
|
||||
}
|
||||
)
|
||||
EOF
|
||||
touch "${cfg.dbpath}/.auth_setup_complete"
|
||||
systemctl stop mongodb-for-setup
|
||||
fi
|
||||
'';
|
||||
postStart = ''
|
||||
if test -e "${cfg.dbpath}/.first_startup"; then
|
||||
${optionalString (cfg.initialScript != null) ''
|
||||
${mongodb}/bin/mongo -u root -p ${cfg.initialRootPassword} admin "${cfg.initialScript}"
|
||||
''}
|
||||
rm -f "${cfg.dbpath}/.first_startup"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -133,7 +133,7 @@ in
|
|||
};
|
||||
|
||||
initialScript = mkOption {
|
||||
type = types.nullOr types.lines;
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "A file containing SQL statements to be executed on the first startup. Can be used for granting certain permissions on the database";
|
||||
};
|
||||
|
@ -360,9 +360,11 @@ in
|
|||
echo "Creating initial database: ${database.name}"
|
||||
( echo 'create database `${database.name}`;'
|
||||
|
||||
${optionalString (database ? "schema") ''
|
||||
${optionalString (database.schema != null) ''
|
||||
echo 'use `${database.name}`;'
|
||||
|
||||
# TODO: this silently falls through if database.schema does not exist,
|
||||
# we should catch this somehow and exit, but can't do it here because we're in a subshell.
|
||||
if [ -f "${database.schema}" ]
|
||||
then
|
||||
cat ${database.schema}
|
||||
|
@ -399,7 +401,9 @@ in
|
|||
${optionalString (cfg.initialScript != null)
|
||||
''
|
||||
# Execute initial script
|
||||
cat ${cfg.initialScript} | ${mysql}/bin/mysql -u root -N
|
||||
# using toString to avoid copying the file to nix store if given as path instead of string,
|
||||
# as it might contain credentials
|
||||
cat ${toString cfg.initialScript} | ${mysql}/bin/mysql -u root -N
|
||||
''}
|
||||
|
||||
${optionalString (cfg.rootPassword != null)
|
||||
|
|
|
@ -105,6 +105,80 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
ensureDatabases = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
Ensures that the specified databases exist.
|
||||
This option will never delete existing databases, especially not when the value of this
|
||||
option is changed. This means that databases created once through this option or
|
||||
otherwise have to be removed manually.
|
||||
'';
|
||||
example = [
|
||||
"gitea"
|
||||
"nextcloud"
|
||||
];
|
||||
};
|
||||
|
||||
ensureUsers = mkOption {
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Name of the user to ensure.
|
||||
'';
|
||||
};
|
||||
ensurePermissions = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = {};
|
||||
description = ''
|
||||
Permissions to ensure for the user, specified as an attribute set.
|
||||
The attribute names specify the database and tables to grant the permissions for.
|
||||
The attribute values specify the permissions to grant. You may specify one or
|
||||
multiple comma-separated SQL privileges here.
|
||||
|
||||
For more information on how to specify the target
|
||||
and on which privileges exist, see the
|
||||
<link xlink:href="https://www.postgresql.org/docs/current/sql-grant.html">GRANT syntax</link>.
|
||||
The attributes are used as <code>GRANT ''${attrName} ON ''${attrValue}</code>.
|
||||
'';
|
||||
example = literalExample ''
|
||||
{
|
||||
"DATABASE nextcloud" = "ALL PRIVILEGES";
|
||||
"ALL TABLES IN SCHEMA public" = "ALL PRIVILEGES";
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
default = [];
|
||||
description = ''
|
||||
Ensures that the specified users exist and have at least the ensured permissions.
|
||||
The PostgreSQL users will be identified using peer authentication. This authenticates the Unix user with the
|
||||
same name only, and that without the need for a password.
|
||||
This option will never delete existing users or remove permissions, especially not when the value of this
|
||||
option is changed. This means that users created and permissions assigned once through this option or
|
||||
otherwise have to be removed manually.
|
||||
'';
|
||||
example = literalExample ''
|
||||
[
|
||||
{
|
||||
name = "nextcloud";
|
||||
ensurePermissions = {
|
||||
"DATABASE nextcloud" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "superuser";
|
||||
ensurePermissions = {
|
||||
"ALL TABLES IN SCHEMA public" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
||||
enableTCPIP = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
|
@ -256,17 +330,30 @@ in
|
|||
# Wait for PostgreSQL to be ready to accept connections.
|
||||
postStart =
|
||||
''
|
||||
while ! ${pkgs.sudo}/bin/sudo -u ${cfg.superUser} psql --port=${toString cfg.port} -d postgres -c "" 2> /dev/null; do
|
||||
PSQL="${pkgs.sudo}/bin/sudo -u ${cfg.superUser} psql --port=${toString cfg.port}"
|
||||
|
||||
while ! $PSQL -d postgres -c "" 2> /dev/null; do
|
||||
if ! kill -0 "$MAINPID"; then exit 1; fi
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
if test -e "${cfg.dataDir}/.first_startup"; then
|
||||
${optionalString (cfg.initialScript != null) ''
|
||||
${pkgs.sudo}/bin/sudo -u ${cfg.superUser} psql -f "${cfg.initialScript}" --port=${toString cfg.port} -d postgres
|
||||
$PSQL -f "${cfg.initialScript}" -d postgres
|
||||
''}
|
||||
rm -f "${cfg.dataDir}/.first_startup"
|
||||
fi
|
||||
'' + optionalString (cfg.ensureDatabases != []) ''
|
||||
${concatMapStrings (database: ''
|
||||
$PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${database}'" | grep -q 1 || $PSQL -tAc "CREATE DATABASE ${database}"
|
||||
'') cfg.ensureDatabases}
|
||||
'' + ''
|
||||
${concatMapStrings (user: ''
|
||||
$PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${user.name}'" | grep -q 1 || $PSQL -tAc "CREATE USER ${user.name}"
|
||||
${concatStringsSep "\n" (mapAttrsToList (database: permission: ''
|
||||
$PSQL -tAc "GRANT ${permission} ON ${database} TO ${user.name}"
|
||||
'') user.ensurePermissions)}
|
||||
'') cfg.ensureUsers}
|
||||
'';
|
||||
|
||||
unitConfig.RequiresMountsFor = "${cfg.dataDir}";
|
||||
|
|
195
nixos/modules/services/networking/bitcoind.nix
Normal file
195
nixos/modules/services/networking/bitcoind.nix
Normal file
|
@ -0,0 +1,195 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.bitcoind;
|
||||
pidFile = "${cfg.dataDir}/bitcoind.pid";
|
||||
configFile = pkgs.writeText "bitcoin.conf" ''
|
||||
${optionalString cfg.testnet "testnet=1"}
|
||||
${optionalString (cfg.dbCache != null) "dbcache=${toString cfg.dbCache}"}
|
||||
${optionalString (cfg.prune != null) "prune=${toString cfg.prune}"}
|
||||
|
||||
# Connection options
|
||||
${optionalString (cfg.port != null) "port=${toString cfg.port}"}
|
||||
|
||||
# RPC server options
|
||||
${optionalString (cfg.rpc.port != null) "rpcport=${toString cfg.rpc.port}"}
|
||||
${concatMapStringsSep "\n"
|
||||
(rpcUser: "rpcauth=${rpcUser.name}:${rpcUser.passwordHMAC}")
|
||||
(attrValues cfg.rpc.users)
|
||||
}
|
||||
|
||||
# Extra config options (from bitcoind nixos service)
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
cmdlineOptions = escapeShellArgs [
|
||||
"-conf=${cfg.configFile}"
|
||||
"-datadir=${cfg.dataDir}"
|
||||
"-pid=${pidFile}"
|
||||
];
|
||||
hexStr = types.strMatching "[0-9a-f]+";
|
||||
rpcUserOpts = { name, ... }: {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "alice";
|
||||
description = ''
|
||||
Username for JSON-RPC connections.
|
||||
'';
|
||||
};
|
||||
passwordHMAC = mkOption {
|
||||
type = with types; uniq (strMatching "[0-9a-f]+\\$[0-9a-f]{64}");
|
||||
example = "f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae";
|
||||
description = ''
|
||||
Password HMAC-SHA-256 for JSON-RPC connections. Must be a string of the
|
||||
format <SALT-HEX>$<HMAC-HEX>.
|
||||
'';
|
||||
};
|
||||
};
|
||||
config = {
|
||||
name = mkDefault name;
|
||||
};
|
||||
};
|
||||
in {
|
||||
options = {
|
||||
|
||||
services.bitcoind = {
|
||||
enable = mkEnableOption "Bitcoin daemon";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.altcoins.bitcoind;
|
||||
defaultText = "pkgs.altcoins.bitcoind";
|
||||
description = "The package providing bitcoin binaries.";
|
||||
};
|
||||
configFile = mkOption {
|
||||
type = types.path;
|
||||
default = configFile;
|
||||
example = "/etc/bitcoind.conf";
|
||||
description = "The configuration file path to supply bitcoind.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example = ''
|
||||
par=16
|
||||
rpcthreads=16
|
||||
logips=1
|
||||
'';
|
||||
description = "Additional configurations to be appended to <filename>bitcoin.conf</filename>.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/bitcoind";
|
||||
description = "The data directory for bitcoind.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "bitcoin";
|
||||
description = "The user as which to run bitcoind.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = "The group as which to run bitcoind.";
|
||||
};
|
||||
|
||||
rpc = {
|
||||
port = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
default = null;
|
||||
description = "Override the default port on which to listen for JSON-RPC connections.";
|
||||
};
|
||||
users = mkOption {
|
||||
default = {};
|
||||
example = literalExample ''
|
||||
{
|
||||
alice.passwordHMAC = "f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae";
|
||||
bob.passwordHMAC = "b2dd077cb54591a2f3139e69a897ac$4e71f08d48b4347cf8eff3815c0e25ae2e9a4340474079f55705f40574f4ec99";
|
||||
}
|
||||
'';
|
||||
type = with types; loaOf (submodule rpcUserOpts);
|
||||
description = ''
|
||||
RPC user information for JSON-RPC connnections.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
testnet = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to use the test chain.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
default = null;
|
||||
description = "Override the default port on which to listen for connections.";
|
||||
};
|
||||
dbCache = mkOption {
|
||||
type = types.nullOr (types.ints.between 4 16384);
|
||||
default = null;
|
||||
example = 4000;
|
||||
description = "Override the default database cache size in megabytes.";
|
||||
};
|
||||
prune = mkOption {
|
||||
type = types.nullOr (types.coercedTo
|
||||
(types.enum [ "disable" "manual" ])
|
||||
(x: if x == "disable" then 0 else 1)
|
||||
types.ints.unsigned
|
||||
);
|
||||
default = null;
|
||||
example = 10000;
|
||||
description = ''
|
||||
Reduce storage requirements by enabling pruning (deleting) of old
|
||||
blocks. This allows the pruneblockchain RPC to be called to delete
|
||||
specific blocks, and enables automatic pruning of old blocks if a
|
||||
target size in MiB is provided. This mode is incompatible with -txindex
|
||||
and -rescan. Warning: Reverting this setting requires re-downloading
|
||||
the entire blockchain. ("disable" = disable pruning blocks, "manual"
|
||||
= allow manual pruning via RPC, >=550 = automatically prune block files
|
||||
to stay under the specified target size in MiB)
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.dataDir}' 0770 '${cfg.user}' '${cfg.group}' - -"
|
||||
"L '${cfg.dataDir}/bitcoin.conf' - - - - '${cfg.configFile}'"
|
||||
];
|
||||
systemd.services.bitcoind = {
|
||||
description = "Bitcoin daemon";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
ExecStart = "${cfg.package}/bin/bitcoind ${cmdlineOptions}";
|
||||
Restart = "on-failure";
|
||||
|
||||
# Hardening measures
|
||||
PrivateTmp = "true";
|
||||
ProtectSystem = "full";
|
||||
NoNewPrivileges = "true";
|
||||
PrivateDevices = "true";
|
||||
MemoryDenyWriteExecute = "true";
|
||||
|
||||
# Permission for preStart
|
||||
PermissionsStartOnly = "true";
|
||||
};
|
||||
};
|
||||
users.users.${cfg.user} = {
|
||||
name = cfg.user;
|
||||
group = cfg.group;
|
||||
description = "Bitcoin daemon user";
|
||||
home = cfg.dataDir;
|
||||
};
|
||||
users.groups.${cfg.group} = {
|
||||
name = cfg.group;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -103,20 +103,12 @@ in {
|
|||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
# mxisd / spring.boot needs the configuration to be named "application.yaml"
|
||||
preStart = ''
|
||||
config=${cfg.dataDir}/application.yaml
|
||||
cp ${configFile} $config
|
||||
chmod 444 $config
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = "mxisd";
|
||||
Group = "mxisd";
|
||||
ExecStart = "${cfg.package}/bin/mxisd --spring.config.location=${cfg.dataDir}/ --spring.profiles.active=systemd --java.security.egd=file:/dev/./urandom";
|
||||
ExecStart = "${cfg.package}/bin/mxisd -c ${configFile}";
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
SuccessExitStatus = 143;
|
||||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -422,6 +422,13 @@ in
|
|||
description = "List of administrators of the current host";
|
||||
};
|
||||
|
||||
authentication = mkOption {
|
||||
type = types.enum [ "internal_plain" "internal_hashed" "cyrus" "anonymous" ];
|
||||
default = "internal_hashed";
|
||||
example = "internal_plain";
|
||||
description = "Authentication mechanism used for logins.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
|
@ -477,6 +484,7 @@ in
|
|||
|
||||
s2s_secure_domains = ${toLua cfg.s2sSecureDomains}
|
||||
|
||||
authentication = ${toLua cfg.authentication}
|
||||
|
||||
${ cfg.extraConfig }
|
||||
|
||||
|
|
|
@ -4,6 +4,15 @@ with lib;
|
|||
|
||||
let
|
||||
|
||||
sshconf = pkgs.runCommand "sshd.conf-validated" { nativeBuildInputs = [ cfgc.package ]; } ''
|
||||
cat >$out <<EOL
|
||||
${cfg.extraConfig}
|
||||
EOL
|
||||
|
||||
ssh-keygen -f mock-hostkey -N ""
|
||||
sshd -t -f $out -h mock-hostkey
|
||||
'';
|
||||
|
||||
cfg = config.services.openssh;
|
||||
cfgc = config.programs.ssh;
|
||||
|
||||
|
@ -339,7 +348,7 @@ in
|
|||
|
||||
environment.etc = authKeysFiles //
|
||||
{ "ssh/moduli".source = cfg.moduliFile;
|
||||
"ssh/sshd_config".text = cfg.extraConfig;
|
||||
"ssh/sshd_config".source = sshconf;
|
||||
};
|
||||
|
||||
systemd =
|
||||
|
|
|
@ -5,6 +5,60 @@ with lib;
|
|||
let
|
||||
cfg = config.services.syncthing;
|
||||
defaultUser = "syncthing";
|
||||
|
||||
devices = mapAttrsToList (name: device: {
|
||||
deviceID = device.id;
|
||||
inherit (device) name addresses introducer;
|
||||
}) cfg.declarative.devices;
|
||||
|
||||
folders = mapAttrsToList ( _: folder: {
|
||||
inherit (folder) path id label type;
|
||||
devices = map (device: { deviceId = cfg.declarative.devices.${device}.id; }) folder.devices;
|
||||
rescanIntervalS = folder.rescanInterval;
|
||||
fsWatcherEnabled = folder.watch;
|
||||
fsWatcherDelayS = folder.watchDelay;
|
||||
ignorePerms = folder.ignorePerms;
|
||||
}) (filterAttrs (
|
||||
_: folder:
|
||||
folder.enable
|
||||
) cfg.declarative.folders);
|
||||
|
||||
# get the api key by parsing the config.xml
|
||||
getApiKey = pkgs.writers.writeDash "getAPIKey" ''
|
||||
${pkgs.libxml2}/bin/xmllint \
|
||||
--xpath 'string(configuration/gui/apikey)'\
|
||||
${cfg.configDir}/config.xml
|
||||
'';
|
||||
|
||||
updateConfig = pkgs.writers.writeDash "merge-syncthing-config" ''
|
||||
set -efu
|
||||
# wait for syncthing port to open
|
||||
until ${pkgs.curl}/bin/curl -Ss ${cfg.guiAddress} -o /dev/null; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
API_KEY=$(${getApiKey})
|
||||
OLD_CFG=$(${pkgs.curl}/bin/curl -Ss \
|
||||
-H "X-API-Key: $API_KEY" \
|
||||
${cfg.guiAddress}/rest/system/config)
|
||||
|
||||
# generate the new config by merging with the nixos config options
|
||||
NEW_CFG=$(echo "$OLD_CFG" | ${pkgs.jq}/bin/jq -s '.[] as $in | $in * {
|
||||
"devices": (${builtins.toJSON devices}${optionalString (! cfg.declarative.overrideDevices) " + $in.devices"}),
|
||||
"folders": (${builtins.toJSON folders}${optionalString (! cfg.declarative.overrideFolders) " + $in.folders"})
|
||||
}')
|
||||
|
||||
# POST the new config to syncthing
|
||||
echo "$NEW_CFG" | ${pkgs.curl}/bin/curl -Ss \
|
||||
-H "X-API-Key: $API_KEY" \
|
||||
${cfg.guiAddress}/rest/system/config -d @-
|
||||
|
||||
# restart syncthing after sending the new config
|
||||
${pkgs.curl}/bin/curl -Ss \
|
||||
-H "X-API-Key: $API_KEY" \
|
||||
-X POST \
|
||||
${cfg.guiAddress}/rest/system/restart
|
||||
'';
|
||||
in {
|
||||
###### interface
|
||||
options = {
|
||||
|
@ -16,6 +70,197 @@ in {
|
|||
available on http://127.0.0.1:8384/.
|
||||
'';
|
||||
|
||||
declarative = {
|
||||
cert = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Path to users cert.pem file, will be copied into the syncthing's
|
||||
<literal>configDir</literal>
|
||||
'';
|
||||
};
|
||||
|
||||
key = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Path to users key.pem file, will be copied into the syncthing's
|
||||
<literal>configDir</literal>
|
||||
'';
|
||||
};
|
||||
|
||||
overrideDevices = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to delete the devices which are not configured via the
|
||||
<literal>declarative.devices</literal> option.
|
||||
If set to false, devices added via the webinterface will
|
||||
persist but will have to be deleted manually.
|
||||
'';
|
||||
};
|
||||
|
||||
devices = mkOption {
|
||||
default = {};
|
||||
description = ''
|
||||
Peers/devices which syncthing should communicate with.
|
||||
'';
|
||||
example = [
|
||||
{
|
||||
name = "bigbox";
|
||||
id = "7CFNTQM-IMTJBHJ-3UWRDIU-ZGQJFR6-VCXZ3NB-XUH3KZO-N52ITXR-LAIYUAU";
|
||||
addresses = [ "tcp://192.168.0.10:51820" ];
|
||||
}
|
||||
];
|
||||
type = types.attrsOf (types.submodule ({ config, ... }: {
|
||||
options = {
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = config._module.args.name;
|
||||
description = ''
|
||||
Name of the device
|
||||
'';
|
||||
};
|
||||
|
||||
addresses = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
The addresses used to connect to the device.
|
||||
If this is let empty, dynamic configuration is attempted
|
||||
'';
|
||||
};
|
||||
|
||||
id = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
The id of the other peer, this is mandatory. It's documented at
|
||||
https://docs.syncthing.net/dev/device-ids.html
|
||||
'';
|
||||
};
|
||||
|
||||
introducer = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
If the device should act as an introducer and be allowed
|
||||
to add folders on this computer.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
}));
|
||||
};
|
||||
|
||||
overrideFolders = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to delete the folders which are not configured via the
|
||||
<literal>declarative.folders</literal> option.
|
||||
If set to false, folders added via the webinterface will persist
|
||||
but will have to be deleted manually.
|
||||
'';
|
||||
};
|
||||
|
||||
folders = mkOption {
|
||||
default = {};
|
||||
description = ''
|
||||
folders which should be shared by syncthing.
|
||||
'';
|
||||
type = types.attrsOf (types.submodule ({ config, ... }: {
|
||||
options = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
share this folder.
|
||||
This option is useful when you want to define all folders
|
||||
in one place, but not every machine should share all folders.
|
||||
'';
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
type = types.str;
|
||||
default = config._module.args.name;
|
||||
description = ''
|
||||
The path to the folder which should be shared.
|
||||
'';
|
||||
};
|
||||
|
||||
id = mkOption {
|
||||
type = types.str;
|
||||
default = config._module.args.name;
|
||||
description = ''
|
||||
The id of the folder. Must be the same on all devices.
|
||||
'';
|
||||
};
|
||||
|
||||
label = mkOption {
|
||||
type = types.str;
|
||||
default = config._module.args.name;
|
||||
description = ''
|
||||
The label of the folder.
|
||||
'';
|
||||
};
|
||||
|
||||
devices = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
The devices this folder should be shared with. Must be defined
|
||||
in the <literal>declarative.devices</literal> attribute.
|
||||
'';
|
||||
};
|
||||
|
||||
rescanInterval = mkOption {
|
||||
type = types.int;
|
||||
default = 3600;
|
||||
description = ''
|
||||
How often the folders should be rescaned for changes.
|
||||
'';
|
||||
};
|
||||
|
||||
type = mkOption {
|
||||
type = types.enum [ "sendreceive" "sendonly" "receiveonly" ];
|
||||
default = "sendreceive";
|
||||
description = ''
|
||||
Whether to send only changes from this folder, only receive them
|
||||
or propagate both.
|
||||
'';
|
||||
};
|
||||
|
||||
watch = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether the folder should be watched for changes by inotify.
|
||||
'';
|
||||
};
|
||||
|
||||
watchDelay = mkOption {
|
||||
type = types.int;
|
||||
default = 10;
|
||||
description = ''
|
||||
The delay after an inotify event is triggered.
|
||||
'';
|
||||
};
|
||||
|
||||
ignorePerms = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to propagate permission changes.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
}));
|
||||
};
|
||||
};
|
||||
|
||||
guiAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1:8384";
|
||||
|
@ -151,6 +396,23 @@ in {
|
|||
RestartForceExitStatus="3 4";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
ExecStartPre = mkIf (cfg.declarative.cert != null || cfg.declarative.key != null)
|
||||
"+${pkgs.writers.writeBash "syncthing-copy-keys" ''
|
||||
mkdir -p ${cfg.configDir}
|
||||
chown ${cfg.user}:${cfg.group} ${cfg.configDir}
|
||||
chmod 700 ${cfg.configDir}
|
||||
${optionalString (cfg.declarative.cert != null) ''
|
||||
cp ${toString cfg.declarative.cert} ${cfg.configDir}/cert.pem
|
||||
chown ${cfg.user}:${cfg.group} ${cfg.configDir}/cert.pem
|
||||
chmod 400 ${cfg.configDir}/cert.pem
|
||||
''}
|
||||
${optionalString (cfg.declarative.key != null) ''
|
||||
cp ${toString cfg.declarative.key} ${cfg.configDir}/key.pem
|
||||
chown ${cfg.user}:${cfg.group} ${cfg.configDir}/key.pem
|
||||
chmod 400 ${cfg.configDir}/key.pem
|
||||
''}
|
||||
''}"
|
||||
;
|
||||
ExecStart = ''
|
||||
${cfg.package}/bin/syncthing \
|
||||
-no-browser \
|
||||
|
@ -159,6 +421,17 @@ in {
|
|||
'';
|
||||
};
|
||||
};
|
||||
syncthing-init = {
|
||||
after = [ "syncthing.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
RemainAfterExit = true;
|
||||
Type = "oneshot";
|
||||
ExecStart = updateConfig;
|
||||
};
|
||||
};
|
||||
|
||||
syncthing-resume = {
|
||||
wantedBy = [ "suspend.target" ];
|
||||
|
|
|
@ -146,7 +146,7 @@ in
|
|||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.xinetd ];
|
||||
script = "xinetd -syslog daemon -dontfork -stayalive -f ${configFile}";
|
||||
script = "exec xinetd -syslog daemon -dontfork -stayalive -f ${configFile}";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -25,6 +25,16 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.fprintd;
|
||||
defaultText = "pkgs.fprintd";
|
||||
example = "pkgs.fprintd-thinkpad";
|
||||
description = ''
|
||||
fprintd package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -38,7 +48,7 @@ in
|
|||
|
||||
environment.systemPackages = [ pkgs.fprintd ];
|
||||
|
||||
systemd.packages = [ pkgs.fprintd ];
|
||||
systemd.packages = [ cfg.package ];
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -257,6 +257,23 @@ in {
|
|||
'';
|
||||
};
|
||||
};
|
||||
autoUpdateApps = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Run regular auto update of all apps installed from the nextcloud app store.
|
||||
'';
|
||||
};
|
||||
startAt = mkOption {
|
||||
type = with types; either str (listOf str);
|
||||
default = "05:00:00";
|
||||
example = "Sun 14:00:00";
|
||||
description = ''
|
||||
When to run the update. See `systemd.services.<name>.startAt`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
|
@ -362,6 +379,11 @@ in {
|
|||
serviceConfig.User = "nextcloud";
|
||||
serviceConfig.ExecStart = "${phpPackage}/bin/php -f ${pkgs.nextcloud}/cron.php";
|
||||
};
|
||||
"nextcloud-update-plugins" = mkIf cfg.autoUpdateApps.enable {
|
||||
serviceConfig.Type = "oneshot";
|
||||
serviceConfig.ExecStart = "${occ}/bin/nextcloud-occ app:update --all";
|
||||
startAt = cfg.autoUpdateApps.startAt;
|
||||
};
|
||||
};
|
||||
|
||||
services.phpfpm = {
|
||||
|
|
|
@ -111,5 +111,11 @@
|
|||
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/49783">#49783</link>,
|
||||
for now it's unfortunately necessary to manually work around these issues.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Right now app installation and configuration is done imperatively in the nextcloud web ui or via the <literal>nextcloud-occ</literal> command line utility.
|
||||
You can activate auto updates for your apps via
|
||||
<literal><link linkend="opt-services.nextcloud.autoUpdateApps.enable">services.nextcloud.autoUpdateApps</link></literal>.
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
|
|
@ -10,6 +10,14 @@ let
|
|||
optionals cfg.enableContribAndExtras
|
||||
[ self.xmonad-contrib self.xmonad-extras ];
|
||||
};
|
||||
xmonadBin = pkgs.writers.writeHaskell "xmonad" {
|
||||
ghc = cfg.haskellPackages.ghc;
|
||||
libraries = [ cfg.haskellPackages.xmonad ] ++
|
||||
cfg.extraPackages cfg.haskellPackages ++
|
||||
optionals cfg.enableContribAndExtras
|
||||
(with cfg.haskellPackages; [ xmonad-contrib xmonad-extras ]);
|
||||
} cfg.config;
|
||||
|
||||
in
|
||||
{
|
||||
options = {
|
||||
|
@ -48,13 +56,36 @@ in
|
|||
type = lib.types.bool;
|
||||
description = "Enable xmonad-{contrib,extras} in Xmonad.";
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
default = null;
|
||||
type = with lib.types; nullOr (either path string);
|
||||
description = ''
|
||||
Configuration from which XMonad gets compiled. If no value
|
||||
is specified, the xmonad config from $HOME/.xmonad is taken.
|
||||
If you use xmonad --recompile, $HOME/.xmonad will be taken as
|
||||
the configuration, but on the next restart of display-manager
|
||||
this config will be reapplied.
|
||||
'';
|
||||
example = ''
|
||||
import XMonad
|
||||
|
||||
main = launch defaultConfig
|
||||
{ modMask = mod4Mask -- Use Super instead of Alt
|
||||
, terminal = "urxvt"
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager = {
|
||||
session = [{
|
||||
name = "xmonad";
|
||||
start = ''
|
||||
start = if (cfg.config != null) then ''
|
||||
${xmonadBin}
|
||||
waitPID=$!
|
||||
'' else ''
|
||||
${xmonad}/bin/xmonad &
|
||||
waitPID=$!
|
||||
'';
|
||||
|
|
|
@ -33,6 +33,15 @@ initrd {initrd}
|
|||
options {kernel_params}
|
||||
"""
|
||||
|
||||
# The boot loader entry for memtest86.
|
||||
#
|
||||
# TODO: This is hard-coded to use the 64-bit EFI app, but it could probably
|
||||
# be updated to use the 32-bit EFI app on 32-bit systems. The 32-bit EFI
|
||||
# app filename is BOOTIA32.efi.
|
||||
MEMTEST_BOOT_ENTRY = """title MemTest86
|
||||
efi /efi/memtest86/BOOTX64.efi
|
||||
"""
|
||||
|
||||
def write_loader_conf(profile, generation):
|
||||
with open("@efiSysMountPoint@/loader/loader.conf.tmp", 'w') as f:
|
||||
if "@timeout@" != "":
|
||||
|
@ -199,6 +208,24 @@ def main():
|
|||
if os.readlink(system_dir(*gen)) == args.default_config:
|
||||
write_loader_conf(*gen)
|
||||
|
||||
memtest_entry_file = "@efiSysMountPoint@/loader/entries/memtest86.conf"
|
||||
if os.path.exists(memtest_entry_file):
|
||||
os.unlink(memtest_entry_file)
|
||||
shutil.rmtree("@efiSysMountPoint@/efi/memtest86", ignore_errors=True)
|
||||
if "@memtest86@" != "":
|
||||
mkdir_p("@efiSysMountPoint@/efi/memtest86")
|
||||
for path in glob.iglob("@memtest86@/*"):
|
||||
if os.path.isdir(path):
|
||||
shutil.copytree(path, os.path.join("@efiSysMountPoint@/efi/memtest86", os.path.basename(path)))
|
||||
else:
|
||||
shutil.copy(path, "@efiSysMountPoint@/efi/memtest86/")
|
||||
|
||||
memtest_entry_file = "@efiSysMountPoint@/loader/entries/memtest86.conf"
|
||||
memtest_entry_file_tmp_path = "%s.tmp" % memtest_entry_file
|
||||
with open(memtest_entry_file_tmp_path, 'w') as f:
|
||||
f.write(MEMTEST_BOOT_ENTRY)
|
||||
os.rename(memtest_entry_file_tmp_path, memtest_entry_file)
|
||||
|
||||
# Since fat32 provides little recovery facilities after a crash,
|
||||
# it can leave the system in an unbootable state, when a crash/outage
|
||||
# happens shortly after an update. To decrease the likelihood of this
|
||||
|
|
|
@ -25,6 +25,8 @@ let
|
|||
inherit (cfg) consoleMode;
|
||||
|
||||
inherit (efi) efiSysMountPoint canTouchEfiVariables;
|
||||
|
||||
memtest86 = if cfg.memtest86.enable then pkgs.memtest86-efi else "";
|
||||
};
|
||||
in {
|
||||
|
||||
|
@ -85,6 +87,19 @@ in {
|
|||
</itemizedlist>
|
||||
'';
|
||||
};
|
||||
|
||||
memtest86 = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Make MemTest86 available from the systemd-boot menu. MemTest86 is a
|
||||
program for testing memory. MemTest86 is an unfree program, so
|
||||
this requires <literal>allowUnfree</literal> to be set to
|
||||
<literal>true</literal>.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
|
|
@ -46,8 +46,8 @@ in
|
|||
description =
|
||||
''
|
||||
When enabled dockerd is started on boot. This is required for
|
||||
container, which are created with the
|
||||
<literal>--restart=always</literal> flag, to work. If this option is
|
||||
containers which are created with the
|
||||
<literal>--restart=always</literal> flag to work. If this option is
|
||||
disabled, docker might be started on demand by socket activation.
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -89,11 +89,12 @@ in
|
|||
gitlab = handleTest ./gitlab.nix {};
|
||||
gitolite = handleTest ./gitolite.nix {};
|
||||
gjs = handleTest ./gjs.nix {};
|
||||
google-oslogin = handleTest ./google-oslogin {};
|
||||
gnome3 = handleTestOn ["x86_64-linux"] ./gnome3.nix {}; # libsmbios is unsupported on aarch64
|
||||
gnome3-gdm = handleTestOn ["x86_64-linux"] ./gnome3-gdm.nix {}; # libsmbios is unsupported on aarch64
|
||||
gocd-agent = handleTest ./gocd-agent.nix {};
|
||||
gocd-server = handleTest ./gocd-server.nix {};
|
||||
google-oslogin = handleTest ./google-oslogin {};
|
||||
graphene = handleTest ./graphene.nix {};
|
||||
grafana = handleTest ./grafana.nix {};
|
||||
graphite = handleTest ./graphite.nix {};
|
||||
hadoop.hdfs = handleTestOn [ "x86_64-linux" ] ./hadoop/hdfs.nix {};
|
||||
|
@ -151,6 +152,7 @@ in
|
|||
mumble = handleTest ./mumble.nix {};
|
||||
munin = handleTest ./munin.nix {};
|
||||
mutableUsers = handleTest ./mutable-users.nix {};
|
||||
mxisd = handleTest ./mxisd.nix {};
|
||||
mysql = handleTest ./mysql.nix {};
|
||||
mysqlBackup = handleTest ./mysql-backup.nix {};
|
||||
mysqlReplication = handleTest ./mysql-replication.nix {};
|
||||
|
@ -220,6 +222,7 @@ in
|
|||
rxe = handleTest ./rxe.nix {};
|
||||
samba = handleTest ./samba.nix {};
|
||||
sddm = handleTest ./sddm.nix {};
|
||||
signal-desktop = handleTest ./signal-desktop.nix {};
|
||||
simple = handleTest ./simple.nix {};
|
||||
slim = handleTest ./slim.nix {};
|
||||
slurm = handleTest ./slurm.nix {};
|
||||
|
@ -230,6 +233,7 @@ in
|
|||
strongswan-swanctl = handleTest ./strongswan-swanctl.nix {};
|
||||
sudo = handleTest ./sudo.nix {};
|
||||
switchTest = handleTest ./switch-test.nix {};
|
||||
syncthing-init = handleTest ./syncthing-init.nix {};
|
||||
syncthing-relay = handleTest ./syncthing-relay.nix {};
|
||||
systemd = handleTest ./systemd.nix {};
|
||||
systemd-confinement = handleTest ./systemd-confinement.nix {};
|
||||
|
|
18
nixos/tests/graphene.nix
Normal file
18
nixos/tests/graphene.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
# run installed tests
|
||||
import ./make-test.nix ({ pkgs, ... }:
|
||||
|
||||
{
|
||||
name = "graphene";
|
||||
|
||||
meta = {
|
||||
maintainers = pkgs.graphene.meta.maintainers;
|
||||
};
|
||||
|
||||
machine = { pkgs, ... }: {
|
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.graphene.installedTests}/share'");
|
||||
'';
|
||||
})
|
|
@ -8,7 +8,7 @@ import ./make-test.nix ({ pkgs, ...} : let
|
|||
in {
|
||||
name = "mongodb";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ bluescreen303 offline cstrahan rvl ];
|
||||
maintainers = [ bluescreen303 offline cstrahan rvl phile314 ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
|
@ -17,6 +17,12 @@ in {
|
|||
{
|
||||
services = {
|
||||
mongodb.enable = true;
|
||||
mongodb.enableAuth = true;
|
||||
mongodb.initialRootPassword = "root";
|
||||
mongodb.initialScript = pkgs.writeText "mongodb_initial.js" ''
|
||||
db = db.getSiblingDB("nixtest");
|
||||
db.createUser({user:"nixtest",pwd:"nixtest",roles:[{role:"readWrite",db:"nixtest"}]});
|
||||
'';
|
||||
mongodb.extraConfig = ''
|
||||
# Allow starting engine with only a small virtual disk
|
||||
storage.journal.enabled: false
|
||||
|
@ -29,6 +35,6 @@ in {
|
|||
testScript = ''
|
||||
startAll;
|
||||
$one->waitForUnit("mongodb.service");
|
||||
$one->succeed("mongo nixtest ${testQuery}") =~ /hello/ or die;
|
||||
$one->succeed("mongo -u nixtest -p nixtest nixtest ${testQuery}") =~ /hello/ or die;
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -10,7 +10,15 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||
|
||||
{
|
||||
services.mysql.enable = true;
|
||||
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||
services.mysql.initialDatabases = [
|
||||
{ name = "testdb"; schema = ./testdb.sql; }
|
||||
{ name = "empty_testdb"; }
|
||||
];
|
||||
# note that using pkgs.writeText here is generally not a good idea,
|
||||
# as it will store the password in world-readable /nix/store ;)
|
||||
services.mysql.initialScript = pkgs.writeText "mysql-init.sql" ''
|
||||
CREATE USER 'passworduser'@'localhost' IDENTIFIED BY 'password123';
|
||||
'';
|
||||
services.mysql.package = pkgs.mysql;
|
||||
};
|
||||
|
||||
|
@ -36,11 +44,14 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||
startAll;
|
||||
|
||||
$mysql->waitForUnit("mysql");
|
||||
$mysql->succeed("echo 'use testdb; select * from tests' | mysql -u root -N | grep 4");
|
||||
$mysql->succeed("echo 'use empty_testdb;' | mysql -u root");
|
||||
$mysql->succeed("echo 'use testdb; select * from tests;' | mysql -u root -N | grep 4");
|
||||
# ';' acts as no-op, just check whether login succeeds with the user created from the initialScript
|
||||
$mysql->succeed("echo ';' | mysql -u passworduser --password=password123");
|
||||
|
||||
$mariadb->waitForUnit("mysql");
|
||||
$mariadb->succeed("echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser");
|
||||
$mariadb->succeed("echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser");
|
||||
$mariadb->succeed("echo 'use testdb; select test_id from tests' | sudo -u testuser mysql -u testuser -N | grep 42");
|
||||
$mariadb->succeed("echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42");
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -22,6 +22,10 @@ in {
|
|||
# Don't inherit adminuser since "root" is supposed to be the default
|
||||
inherit adminpass;
|
||||
};
|
||||
autoUpdateApps = {
|
||||
enable = true;
|
||||
startAt = "20:00";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -7,7 +7,7 @@ with import ../lib/testing.nix { inherit system pkgs; };
|
|||
with pkgs.lib;
|
||||
|
||||
let
|
||||
redmineTest = package: makeTest {
|
||||
mysqlTest = package: makeTest {
|
||||
machine =
|
||||
{ config, pkgs, ... }:
|
||||
{ services.mysql.enable = true;
|
||||
|
@ -21,6 +21,7 @@ let
|
|||
|
||||
services.redmine.enable = true;
|
||||
services.redmine.package = package;
|
||||
services.redmine.database.type = "mysql2";
|
||||
services.redmine.database.socket = "/run/mysqld/mysqld.sock";
|
||||
services.redmine.plugins = {
|
||||
redmine_env_auth = pkgs.fetchurl {
|
||||
|
@ -38,7 +39,44 @@ let
|
|||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$machine->waitForUnit('redmine.service');
|
||||
$machine->waitForOpenPort('3000');
|
||||
$machine->succeed("curl --fail http://localhost:3000/");
|
||||
'';
|
||||
};
|
||||
|
||||
pgsqlTest = package: makeTest {
|
||||
machine =
|
||||
{ config, pkgs, ... }:
|
||||
{ services.postgresql.enable = true;
|
||||
services.postgresql.ensureDatabases = [ "redmine" ];
|
||||
services.postgresql.ensureUsers = [
|
||||
{ name = "redmine";
|
||||
ensurePermissions = { "DATABASE redmine" = "ALL PRIVILEGES"; };
|
||||
}
|
||||
];
|
||||
|
||||
services.redmine.enable = true;
|
||||
services.redmine.package = package;
|
||||
services.redmine.database.type = "postgresql";
|
||||
services.redmine.database.host = "";
|
||||
services.redmine.database.port = 5432;
|
||||
services.redmine.plugins = {
|
||||
redmine_env_auth = pkgs.fetchurl {
|
||||
url = https://github.com/Intera/redmine_env_auth/archive/0.7.zip;
|
||||
sha256 = "1xb8lyarc7mpi86yflnlgyllh9hfwb9z304f19dx409gqpia99sc";
|
||||
};
|
||||
};
|
||||
services.redmine.themes = {
|
||||
dkuk-redmine_alex_skin = pkgs.fetchurl {
|
||||
url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip;
|
||||
sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$machine->waitForUnit('redmine.service');
|
||||
$machine->waitForOpenPort('3000');
|
||||
$machine->succeed("curl --fail http://localhost:3000/");
|
||||
|
@ -46,13 +84,18 @@ let
|
|||
};
|
||||
in
|
||||
{
|
||||
redmine_3 = redmineTest pkgs.redmine // {
|
||||
name = "redmine_3";
|
||||
v3-mysql = mysqlTest pkgs.redmine // {
|
||||
name = "v3-mysql";
|
||||
meta.maintainers = [ maintainers.aanderse ];
|
||||
};
|
||||
|
||||
redmine_4 = redmineTest pkgs.redmine_4 // {
|
||||
name = "redmine_4";
|
||||
v4-mysql = mysqlTest pkgs.redmine_4 // {
|
||||
name = "v4-mysql";
|
||||
meta.maintainers = [ maintainers.aanderse ];
|
||||
};
|
||||
|
||||
v4-pgsql = pgsqlTest pkgs.redmine_4 // {
|
||||
name = "v4-pgsql";
|
||||
meta.maintainers = [ maintainers.aanderse ];
|
||||
};
|
||||
}
|
||||
|
|
37
nixos/tests/signal-desktop.nix
Normal file
37
nixos/tests/signal-desktop.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
import ./make-test.nix ({ pkgs, ...} :
|
||||
|
||||
{
|
||||
name = "signal-desktop";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ flokli ];
|
||||
};
|
||||
|
||||
machine = { ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./common/user-account.nix
|
||||
./common/x11.nix
|
||||
];
|
||||
|
||||
services.xserver.enable = true;
|
||||
services.xserver.displayManager.auto.user = "alice";
|
||||
environment.systemPackages = [ pkgs.signal-desktop ];
|
||||
};
|
||||
|
||||
enableOCR = true;
|
||||
|
||||
testScript = { nodes, ... }: let
|
||||
user = nodes.machine.config.users.users.alice;
|
||||
in ''
|
||||
startAll;
|
||||
$machine->waitForX;
|
||||
|
||||
# start signal desktop
|
||||
$machine->execute("su - alice -c signal-desktop &");
|
||||
|
||||
# wait for the "Link your phone to Signal Desktop" message
|
||||
$machine->waitForText(qr/Link your phone to Signal Desktop/);
|
||||
$machine->screenshot("signal_desktop");
|
||||
'';
|
||||
})
|
30
nixos/tests/syncthing-init.nix
Normal file
30
nixos/tests/syncthing-init.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
import ./make-test.nix ({ lib, pkgs, ... }: let
|
||||
|
||||
testId = "7CFNTQM-IMTJBHJ-3UWRDIU-ZGQJFR6-VCXZ3NB-XUH3KZO-N52ITXR-LAIYUAU";
|
||||
|
||||
in {
|
||||
name = "syncthing-init";
|
||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ lassulus ];
|
||||
|
||||
machine = {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
declarative = {
|
||||
devices.testDevice = {
|
||||
id = testId;
|
||||
};
|
||||
folders.testFolder = {
|
||||
path = "/tmp/test";
|
||||
devices = [ "testDevice" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
$machine->waitForUnit("syncthing-init.service");
|
||||
$machine->succeed("cat /var/lib/syncthing/config.xml") =~ /${testId}/ or die;
|
||||
$machine->succeed("cat /var/lib/syncthing/config.xml") =~ /testFolder/ or die;
|
||||
'';
|
||||
})
|
||||
|
|
@ -12,6 +12,12 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||
enable = true;
|
||||
enableContribAndExtras = true;
|
||||
extraPackages = with pkgs.haskellPackages; haskellPackages: [ xmobar ];
|
||||
config = ''
|
||||
import XMonad
|
||||
import XMonad.Util.EZConfig
|
||||
main = launch $ def `additionalKeysP` myKeys
|
||||
myKeys = [ ("M-C-x", spawn "xterm") ]
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -19,6 +25,10 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||
$machine->waitForX;
|
||||
$machine->waitForFile("/home/alice/.Xauthority");
|
||||
$machine->succeed("xauth merge ~alice/.Xauthority");
|
||||
$machine->sendKeys("alt-ctrl-x");
|
||||
$machine->waitForWindow(qr/machine.*alice/);
|
||||
$machine->sleep(1);
|
||||
$machine->screenshot("terminal");
|
||||
$machine->waitUntilSucceeds("xmonad --restart");
|
||||
$machine->sleep(3);
|
||||
$machine->sendKeys("alt-shift-ret");
|
||||
|
|
71
pkgs/applications/audio/carla/default.nix
Normal file
71
pkgs/applications/audio/carla/default.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
{ stdenv, fetchFromGitHub, alsaLib, file, fluidsynth, ffmpeg, fftw, jack2,
|
||||
liblo, libpulseaudio, libsndfile, makeWrapper, pkgconfig, python3Packages,
|
||||
which, withFrontend ? true,
|
||||
withQt ? true, qtbase ? null,
|
||||
withGtk2 ? true, gtk2 ? null,
|
||||
withGtk3 ? true, gtk3 ? null }:
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
assert withFrontend -> python3Packages ? pyqt5;
|
||||
assert withQt -> qtbase != null;
|
||||
assert withGtk2 -> gtk2 != null;
|
||||
assert withGtk3 -> gtk3 != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "carla";
|
||||
version = "2.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "falkTX";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0fqgncqlr86n38yy7pa118mswfacmfczj7w9xx6c6k0jav3wk29k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ python3Packages.wrapPython pkgconfig which ];
|
||||
|
||||
pythonPath = with python3Packages; [
|
||||
rdflib pyliblo
|
||||
] ++ optional withFrontend pyqt5;
|
||||
|
||||
buildInputs = [
|
||||
file liblo alsaLib fluidsynth ffmpeg jack2 libpulseaudio libsndfile
|
||||
] ++ pythonPath
|
||||
++ optional withQt qtbase
|
||||
++ optional withGtk2 gtk2
|
||||
++ optional withGtk3 gtk3;
|
||||
|
||||
installFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
postFixup = ''
|
||||
# Also sets program_PYTHONPATH and program_PATH variables
|
||||
wrapPythonPrograms
|
||||
|
||||
find "$out/share/carla" -maxdepth 1 -type f -not -name "*.py" -print0 | while read -d "" f; do
|
||||
patchPythonScript "$f"
|
||||
done
|
||||
patchPythonScript "$out/share/carla/carla_settings.py"
|
||||
|
||||
for program in $out/bin/*; do
|
||||
wrapProgram "$program" \
|
||||
--prefix PATH : "$program_PATH:${which}/bin" \
|
||||
--set PYTHONNOUSERSITE true \
|
||||
--prefix QT_PLUGIN_PATH : "${qtbase.bin}/${qtbase.qtPluginPrefix}"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://kxstudio.sf.net/carla;
|
||||
description = "An audio plugin host";
|
||||
longDescription = ''
|
||||
It currently supports LADSPA (including LRDF), DSSI, LV2, VST2/3
|
||||
and AU plugin formats, plus GIG, SF2 and SFZ file support.
|
||||
It uses JACK as the default and preferred audio driver but also
|
||||
supports native drivers like ALSA, DirectSound or CoreAudio.
|
||||
'';
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = [ maintainers.minijackson ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
56
pkgs/applications/audio/sfxr/default.nix
Normal file
56
pkgs/applications/audio/sfxr/default.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{ stdenv
|
||||
, fetchurl
|
||||
, pkgconfig
|
||||
, desktop-file-utils
|
||||
, SDL
|
||||
, gtk3
|
||||
, gsettings-desktop-schemas
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sfxr";
|
||||
version = "1.2.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.drpetter.se/files/sfxr-sdl-${version}.tar.gz";
|
||||
sha256 = "0dfqgid6wzzyyhc0ha94prxax59wx79hqr25r6if6by9cj4vx4ya";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile --replace "usr/" ""
|
||||
substituteInPlace sdlkit.h --replace \
|
||||
"/usr/share/sfxr/sfxr.bmp" \
|
||||
"$out/share/sfxr/sfxr.bmp"
|
||||
substituteInPlace main.cpp \
|
||||
--replace \
|
||||
"/usr/share/sfxr/font.tga" \
|
||||
"$out/share/sfxr/font.tga" \
|
||||
--replace \
|
||||
"/usr/share/sfxr/ld48.tga" \
|
||||
"$out/share/sfxr/ld48.tga"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkgconfig
|
||||
desktop-file-utils
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
SDL
|
||||
gtk3
|
||||
gsettings-desktop-schemas
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
makeFlags = [ "DESTDIR=$(out)" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "http://www.drpetter.se/project_sfxr.html";
|
||||
description = "A videogame sound effect generator";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ fgaz ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
@ -22,13 +22,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "vocal";
|
||||
version = "2.4.0";
|
||||
version = "2.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "needle-and-thread";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "09g9692rckdwh1i5krqgfwdx4p67b1q5834cnxahxzpq4p08rf5w";
|
||||
sha256 = "0jz72nmc6qmadsvcpk339x1fm4wg6yx9r1bagr7mcgnz3x5papnr";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -14,9 +14,9 @@ let
|
|||
};
|
||||
betaVersion = latestVersion;
|
||||
latestVersion = { # canary & dev
|
||||
version = "3.5.0.13"; # "Android Studio 3.5 Beta 1"
|
||||
build = "191.5529924";
|
||||
sha256Hash = "0i710n2wr0a8lvxf1mg6a5pmdh1l72wa0hwyricyixi0mylwwc6l";
|
||||
version = "3.5.0.14"; # "Android Studio 3.5 Beta 2"
|
||||
build = "191.5549111";
|
||||
sha256Hash = "1zy2x0m1nsx3yy64cp1jvgb9aqkribwm64mv50g9355sdz7qjhcf";
|
||||
};
|
||||
in rec {
|
||||
# Attributes are named by their corresponding release channels
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
with qt5;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.9.4";
|
||||
version = "0.10.0";
|
||||
name = "featherpad-${version}";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tsujan";
|
||||
repo = "FeatherPad";
|
||||
rev = "V${version}";
|
||||
sha256 = "18zna6rx2qyiplr44wrkvr4avk9yy2l1s23fy3d7ql9f1fq12z3w";
|
||||
sha256 = "1wrbs6kni9s3x39cckm9kzpglryxn5vyarilvh9pafbzpc6rc57p";
|
||||
};
|
||||
nativeBuildInputs = [ qmake pkgconfig qttools ];
|
||||
buildInputs = [ qtbase qtsvg qtx11extras ];
|
||||
|
|
|
@ -1,43 +1,49 @@
|
|||
{ stdenv, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost
|
||||
, zlib, openssl, R, qtbase, qtwebkit, qtwebchannel, qtxmlpatterns, libuuid
|
||||
, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc
|
||||
{ stdenv, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib
|
||||
, openssl, R, qtbase, qtxmlpatterns, qtsensors, qtwebengine, qtwebchannel
|
||||
, libuuid, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc
|
||||
, llvmPackages
|
||||
}:
|
||||
|
||||
let
|
||||
verMajor = "1";
|
||||
verMinor = "1";
|
||||
verPatch = "463";
|
||||
verMinor = "2";
|
||||
verPatch = "1335";
|
||||
version = "${verMajor}.${verMinor}.${verPatch}";
|
||||
ginVer = "1.5";
|
||||
gwtVer = "2.7.0";
|
||||
ginVer = "2.1.2";
|
||||
gwtVer = "2.8.1";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "RStudio-${version}";
|
||||
|
||||
nativeBuildInputs = [ cmake unzip ant jdk makeWrapper pandoc ];
|
||||
|
||||
buildInputs = [ boost zlib openssl R qtbase qtwebkit qtwebchannel
|
||||
qtxmlpatterns libuuid ];
|
||||
buildInputs = [ boost zlib openssl R qtbase qtxmlpatterns qtsensors
|
||||
qtwebengine qtwebchannel libuuid ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rstudio";
|
||||
repo = "rstudio";
|
||||
rev = "v${version}";
|
||||
sha256 = "014g984znsczzy1fyn9y1ly3rbsngryfs674lfgciz60mqnl8im6";
|
||||
sha256 = "0jv1d4yznv2lzwp0fdf377vqpg0k2q4z9qvji4sj86fabj835lqd";
|
||||
};
|
||||
|
||||
# Hack RStudio to only use the input R.
|
||||
patches = [ ./r-location.patch ];
|
||||
postPatch = "substituteInPlace src/cpp/core/r_util/REnvironmentPosix.cpp --replace '@R@' ${R}";
|
||||
# Hack RStudio to only use the input R and provided libclang.
|
||||
patches = [ ./r-location.patch ./clang-location.patch ];
|
||||
postPatch = ''
|
||||
substituteInPlace src/cpp/core/r_util/REnvironmentPosix.cpp --replace '@R@' ${R}
|
||||
substituteInPlace src/cpp/core/libclang/LibClang.cpp \
|
||||
--replace '@clang@' ${llvmPackages.clang.cc} \
|
||||
--replace '@libclang.so@' ${llvmPackages.clang.cc.lib}/lib/libclang.so
|
||||
'';
|
||||
|
||||
ginSrc = fetchurl {
|
||||
url = "https://s3.amazonaws.com/rstudio-buildtools/gin-${ginVer}.zip";
|
||||
sha256 = "155bjrgkf046b8ln6a55x06ryvm8agnnl7l8bkwwzqazbpmz8qgm";
|
||||
sha256 = "16jzmljravpz6p2rxa87k5f7ir8vs7ya75lnfybfajzmci0p13mr";
|
||||
};
|
||||
|
||||
gwtSrc = fetchurl {
|
||||
url = "https://s3.amazonaws.com/rstudio-buildtools/gwt-${gwtVer}.zip";
|
||||
sha256 = "1cs78z9a1jg698j2n35wsy07cy4fxcia9gi00x0r0qc3fcdhcrda";
|
||||
sha256 = "19x000m3jwnkqgi6ic81lkzyjvvxcfacw2j0vcfcaknvvagzhyhb";
|
||||
};
|
||||
|
||||
hunspellDictionaries = with stdenv.lib; filter isDerivation (attrValues hunspellDicts);
|
||||
|
@ -47,14 +53,11 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "0wbcqb9rbfqqvvhqr1pbqax75wp8ydqdyhp91fbqfqp26xzjv6lk";
|
||||
};
|
||||
|
||||
rstudiolibclang = fetchurl {
|
||||
url = https://s3.amazonaws.com/rstudio-buildtools/libclang-3.5.zip;
|
||||
sha256 = "1sl5vb8misipwbbbykdymw172w9qrh8xv3p29g0bf3nzbnv6zc7c";
|
||||
};
|
||||
|
||||
rstudiolibclangheaders = fetchurl {
|
||||
url = https://s3.amazonaws.com/rstudio-buildtools/libclang-builtin-headers.zip;
|
||||
sha256 = "0x4ax186bm3kf098izwmsplckgx1kqzg9iiyzg95rpbqsb4593qb";
|
||||
rsconnectSrc = fetchFromGitHub {
|
||||
owner = "rstudio";
|
||||
repo = "rsconnect";
|
||||
rev = "984745d8";
|
||||
sha256 = "037z0y32k1gdda192y5qn5hi7wp8wyap44mkjlklrgcqkmlcylb9";
|
||||
};
|
||||
|
||||
preConfigure =
|
||||
|
@ -80,13 +83,14 @@ stdenv.mkDerivation rec {
|
|||
done
|
||||
|
||||
unzip ${mathJaxSrc} -d dependencies/common/mathjax-26
|
||||
mkdir -p dependencies/common/libclang/3.5
|
||||
unzip ${rstudiolibclang} -d dependencies/common/libclang/3.5
|
||||
mkdir -p dependencies/common/libclang/builtin-headers
|
||||
unzip ${rstudiolibclangheaders} -d dependencies/common/libclang/builtin-headers
|
||||
|
||||
mkdir -p dependencies/common/pandoc
|
||||
cp ${pandoc}/bin/pandoc dependencies/common/pandoc/
|
||||
|
||||
cp -r ${rsconnectSrc} dependencies/common/rsconnect
|
||||
pushd dependencies/common
|
||||
${R}/bin/R CMD build -d --no-build-vignettes rsconnect
|
||||
popd
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -1,119 +0,0 @@
|
|||
{ stdenv, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib
|
||||
, openssl, R, qtbase, qtxmlpatterns, qtsensors, qtwebengine, qtwebchannel
|
||||
, libuuid, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc
|
||||
, llvmPackages
|
||||
}:
|
||||
|
||||
let
|
||||
rev = "f79330d4";
|
||||
ginVer = "2.1.2";
|
||||
gwtVer = "2.8.1";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "RStudio-preview-${rev}";
|
||||
|
||||
nativeBuildInputs = [ cmake unzip ant jdk makeWrapper pandoc ];
|
||||
|
||||
buildInputs = [ boost zlib openssl R qtbase qtxmlpatterns qtsensors
|
||||
qtwebengine qtwebchannel libuuid ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rstudio";
|
||||
repo = "rstudio";
|
||||
inherit rev;
|
||||
sha256 = "0v3vzqjp74c3m4h9l6w2lrdnjqaimdjzbf7vhnlxj2qa0lwsnykb";
|
||||
};
|
||||
|
||||
# Hack RStudio to only use the input R and provided libclang.
|
||||
patches = [ ./r-location.patch ./clang-location.patch ];
|
||||
postPatch = ''
|
||||
substituteInPlace src/cpp/core/r_util/REnvironmentPosix.cpp --replace '@R@' ${R}
|
||||
substituteInPlace src/cpp/core/libclang/LibClang.cpp \
|
||||
--replace '@clang@' ${llvmPackages.clang.cc} \
|
||||
--replace '@libclang.so@' ${llvmPackages.clang.cc.lib}/lib/libclang.so
|
||||
'';
|
||||
|
||||
ginSrc = fetchurl {
|
||||
url = "https://s3.amazonaws.com/rstudio-buildtools/gin-${ginVer}.zip";
|
||||
sha256 = "16jzmljravpz6p2rxa87k5f7ir8vs7ya75lnfybfajzmci0p13mr";
|
||||
};
|
||||
|
||||
gwtSrc = fetchurl {
|
||||
url = "https://s3.amazonaws.com/rstudio-buildtools/gwt-${gwtVer}.zip";
|
||||
sha256 = "19x000m3jwnkqgi6ic81lkzyjvvxcfacw2j0vcfcaknvvagzhyhb";
|
||||
};
|
||||
|
||||
hunspellDictionaries = with stdenv.lib; filter isDerivation (attrValues hunspellDicts);
|
||||
|
||||
mathJaxSrc = fetchurl {
|
||||
url = https://s3.amazonaws.com/rstudio-buildtools/mathjax-26.zip;
|
||||
sha256 = "0wbcqb9rbfqqvvhqr1pbqax75wp8ydqdyhp91fbqfqp26xzjv6lk";
|
||||
};
|
||||
|
||||
rsconnectSrc = fetchFromGitHub {
|
||||
owner = "rstudio";
|
||||
repo = "rsconnect";
|
||||
rev = "984745d8";
|
||||
sha256 = "037z0y32k1gdda192y5qn5hi7wp8wyap44mkjlklrgcqkmlcylb9";
|
||||
};
|
||||
|
||||
preConfigure =
|
||||
''
|
||||
GWT_LIB_DIR=src/gwt/lib
|
||||
|
||||
mkdir -p $GWT_LIB_DIR/gin/${ginVer}
|
||||
unzip ${ginSrc} -d $GWT_LIB_DIR/gin/${ginVer}
|
||||
|
||||
unzip ${gwtSrc}
|
||||
mkdir -p $GWT_LIB_DIR/gwt
|
||||
mv gwt-${gwtVer} $GWT_LIB_DIR/gwt/${gwtVer}
|
||||
|
||||
mkdir dependencies/common/dictionaries
|
||||
for dict in ${builtins.concatStringsSep " " hunspellDictionaries}; do
|
||||
for i in "$dict/share/hunspell/"*; do
|
||||
ln -sv $i dependencies/common/dictionaries/
|
||||
done
|
||||
done
|
||||
|
||||
unzip ${mathJaxSrc} -d dependencies/common/mathjax-26
|
||||
|
||||
mkdir -p dependencies/common/pandoc
|
||||
cp ${pandoc}/bin/pandoc dependencies/common/pandoc/
|
||||
|
||||
cp -r ${rsconnectSrc} dependencies/common/rsconnect
|
||||
pushd dependencies/common
|
||||
${R}/bin/R CMD build -d --no-build-vignettes rsconnect
|
||||
popd
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
cmakeFlags = [ "-DRSTUDIO_TARGET=Desktop" "-DQT_QMAKE_EXECUTABLE=$NIX_QT5_TMP/bin/qmake" ];
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = name;
|
||||
exec = "rstudio %F";
|
||||
icon = "rstudio";
|
||||
desktopName = "RStudio Preview";
|
||||
genericName = "IDE";
|
||||
comment = meta.description;
|
||||
categories = "Development;";
|
||||
mimeType = "text/x-r-source;text/x-r;text/x-R;text/x-r-doc;text/x-r-sweave;text/x-r-markdown;text/x-r-html;text/x-r-presentation;application/x-r-data;application/x-r-project;text/x-r-history;text/x-r-profile;text/x-tex;text/x-markdown;text/html;text/css;text/javascript;text/x-chdr;text/x-csrc;text/x-c++hdr;text/x-c++src;";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/rstudio --suffix PATH : ${gnumake}/bin
|
||||
mkdir $out/share
|
||||
cp -r ${desktopItem}/share/applications $out/share
|
||||
mkdir $out/share/icons
|
||||
ln $out/rstudio.png $out/share/icons
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib;
|
||||
{ description = "Set of integrated tools for the R language";
|
||||
homepage = https://www.rstudio.com/;
|
||||
license = licenses.agpl3;
|
||||
maintainers = with maintainers; [ averelld ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "texstudio";
|
||||
version = "2.12.14";
|
||||
version = "2.12.16";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "${pname}-org";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "08vfhkgzhh1227wcvr5wwpnw0072c80nf2crhmxwh3jgjfgi538f";
|
||||
sha256 = "0ck65fvz6mzfpqdb1ndgyvgxdnslrwhdr1swgck4gaghcrgbg3gq";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qt5.qmake pkgconfig ];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# TODO tidy up eg The patchelf code is patching gvim even if you don't build it..
|
||||
# but I have gvim with python support now :) - Marc
|
||||
{ source ? "default", callPackage, fetchurl, stdenv, ncurses, pkgconfig, gettext
|
||||
, writeText, config, glib, gtk2, gtk3, lua, python, perl, tcl, ruby
|
||||
, writeText, config, glib, gtk2-x11, gtk3-x11, lua, python, perl, tcl, ruby
|
||||
, libX11, libXext, libSM, libXpm, libXt, libXaw, libXau, libXmu
|
||||
, libICE
|
||||
, vimPlugins
|
||||
|
@ -130,8 +130,8 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
buildInputs = [ ncurses libX11 libXext libSM libXpm libXt libXaw libXau
|
||||
libXmu glib libICE ]
|
||||
++ stdenv.lib.optional (guiSupport == "gtk2") gtk2
|
||||
++ stdenv.lib.optional (guiSupport == "gtk3") gtk3
|
||||
++ stdenv.lib.optional (guiSupport == "gtk2") gtk2-x11
|
||||
++ stdenv.lib.optional (guiSupport == "gtk3") gtk3-x11
|
||||
++ stdenv.lib.optionals darwinSupport [ CoreServices CoreData Cocoa Foundation libobjc cf-private ]
|
||||
++ stdenv.lib.optional luaSupport lua
|
||||
++ stdenv.lib.optional pythonSupport python
|
||||
|
|
|
@ -2,38 +2,18 @@
|
|||
, unzip, libsecret, libXScrnSaver, wrapGAppsHook
|
||||
, gtk2, atomEnv, at-spi2-atk, autoPatchelfHook
|
||||
, systemd, fontconfig
|
||||
, isInsiders ? false }:
|
||||
|
||||
# Attributes inherit from specific versions
|
||||
, version, src, meta, sourceRoot
|
||||
, executableName, longName, shortName, pname
|
||||
}:
|
||||
|
||||
let
|
||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
|
||||
shortName = "Code" + lib.optionalString isInsiders " - Insiders";
|
||||
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
|
||||
plat = {
|
||||
"i686-linux" = "linux-ia32";
|
||||
"x86_64-linux" = "linux-x64";
|
||||
"x86_64-darwin" = "darwin";
|
||||
}.${system};
|
||||
|
||||
sha256 = {
|
||||
"i686-linux" = "0n2k134yx0zirddi5xig4zihn73s8xiga11pwk90f01wp1i0hygg";
|
||||
"x86_64-linux" = "0ljijcqfyrfck5imldis3hx9d9iacnspgnm58kvlziam8y0imwzv";
|
||||
"x86_64-darwin" = "00fg106rggsbng90k1jjp1c6nmnwni5s0fgmbz6k45shfa3iqamc";
|
||||
}.${system};
|
||||
|
||||
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "vscode-${version}";
|
||||
version = "1.33.1";
|
||||
|
||||
src = fetchurl {
|
||||
name = "VSCode_${version}_${plat}.${archive_fmt}";
|
||||
url = "https://vscode-update.azurewebsites.net/${version}/${plat}/stable";
|
||||
inherit sha256;
|
||||
};
|
||||
inherit pname version src sourceRoot;
|
||||
|
||||
passthru = {
|
||||
inherit executableName;
|
||||
|
@ -118,22 +98,5 @@ in
|
|||
gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ systemd fontconfig ]})
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = ''
|
||||
Open source source code editor developed by Microsoft for Windows,
|
||||
Linux and macOS
|
||||
'';
|
||||
longDescription = ''
|
||||
Open source source code editor developed by Microsoft for Windows,
|
||||
Linux and macOS. It includes support for debugging, embedded Git
|
||||
control, syntax highlighting, intelligent code completion, snippets,
|
||||
and code refactoring. It is also customizable, so users can change the
|
||||
editor's theme, keyboard shortcuts, and preferences
|
||||
'';
|
||||
homepage = https://code.visualstudio.com/;
|
||||
downloadPage = https://code.visualstudio.com/Updates;
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ eadwu synthetica ];
|
||||
platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
|
||||
};
|
||||
inherit meta;
|
||||
}
|
55
pkgs/applications/editors/vscode/vscode.nix
Normal file
55
pkgs/applications/editors/vscode/vscode.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{ stdenv, lib, callPackage, fetchurl, fetchpatch, isInsiders ? false }:
|
||||
|
||||
let
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
|
||||
plat = {
|
||||
"i686-linux" = "linux-ia32";
|
||||
"x86_64-linux" = "linux-x64";
|
||||
"x86_64-darwin" = "darwin";
|
||||
}.${system};
|
||||
|
||||
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
"i686-linux" = "1xl8bk1m7d930dp7nw4770vk14cppci0ag079y8d39xqnvs24mr0";
|
||||
"x86_64-linux" = "0mq6gzz7338h4ragiar55xxby0x7whcd9nvnfk46bri162bacjbg";
|
||||
"x86_64-darwin" = "0pgj515k2bkpz953shmnalfw6yz8sg07jsxqk1rni9s3khrrd25h";
|
||||
}.${system};
|
||||
in
|
||||
callPackage ./generic.nix rec {
|
||||
|
||||
version = "1.34.0";
|
||||
pname = "vscode";
|
||||
|
||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
|
||||
shortName = "Code" + lib.optionalString isInsiders " - Insiders";
|
||||
|
||||
src = fetchurl {
|
||||
name = "VSCode_${version}_${plat}.${archive_fmt}";
|
||||
url = "https://vscode-update.azurewebsites.net/${version}/${plat}/stable";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
sourceRoot = "";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = ''
|
||||
Open source source code editor developed by Microsoft for Windows,
|
||||
Linux and macOS
|
||||
'';
|
||||
longDescription = ''
|
||||
Open source source code editor developed by Microsoft for Windows,
|
||||
Linux and macOS. It includes support for debugging, embedded Git
|
||||
control, syntax highlighting, intelligent code completion, snippets,
|
||||
and code refactoring. It is also customizable, so users can change the
|
||||
editor's theme, keyboard shortcuts, and preferences
|
||||
'';
|
||||
homepage = https://code.visualstudio.com/;
|
||||
downloadPage = https://code.visualstudio.com/Updates;
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ eadwu synthetica ];
|
||||
platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
|
||||
};
|
||||
}
|
54
pkgs/applications/editors/vscode/vscodium.nix
Normal file
54
pkgs/applications/editors/vscode/vscodium.nix
Normal file
|
@ -0,0 +1,54 @@
|
|||
{ stdenv, lib, callPackage, fetchurl, fetchpatch }:
|
||||
|
||||
let
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
|
||||
plat = {
|
||||
"i686-linux" = "linux-ia32";
|
||||
"x86_64-linux" = "linux-x64";
|
||||
"x86_64-darwin" = "darwin";
|
||||
}.${system};
|
||||
|
||||
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
"i686-linux" = "1vr3mblg5223k56yqi9fqwa7yg8qi4r3nkw6ssf87gs8jwfxa47l";
|
||||
"x86_64-linux" = "1vqq365zw44ll22i06bxxviyywv1v2f71c2mricrz3faz25c3lvm";
|
||||
"x86_64-darwin" = "0pa5cz8kq45q375b74kaa8qn1h0r1mp9amh5gsprg3hx89xzvhxi";
|
||||
}.${system};
|
||||
in
|
||||
callPackage ./generic.nix rec {
|
||||
|
||||
version = "1.34.0";
|
||||
pname = "vscodium";
|
||||
|
||||
executableName = "vscodium";
|
||||
longName = "VSCodium";
|
||||
shortName = "Codium";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/VSCodium/vscodium/releases/download/${version}/VSCodium-${plat}-${version}.${archive_fmt}";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = ''
|
||||
Open source source code editor developed by Microsoft for Windows,
|
||||
Linux and macOS (VS Code without MS branding/telemetry/licensing)
|
||||
'';
|
||||
longDescription = ''
|
||||
Open source source code editor developed by Microsoft for Windows,
|
||||
Linux and macOS. It includes support for debugging, embedded Git
|
||||
control, syntax highlighting, intelligent code completion, snippets,
|
||||
and code refactoring. It is also customizable, so users can change the
|
||||
editor's theme, keyboard shortcuts, and preferences
|
||||
'';
|
||||
homepage = https://github.com/VSCodium/vscodium;
|
||||
downloadPage = https://github.com/VSCodium/vscodium/releases;
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [];
|
||||
platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
|
||||
};
|
||||
}
|
|
@ -13,8 +13,8 @@ let
|
|||
else throw "ImageMagick is not supported on this platform.";
|
||||
|
||||
cfg = {
|
||||
version = "7.0.8-34";
|
||||
sha256 = "0szkzwy0jzmwx4kqli21jq8pk3s53v37q0nsaqzascs3mpkbza2s";
|
||||
version = "7.0.8-46";
|
||||
sha256 = "1si3rv3b9jgjkwyny5ja76s8c0z9vyic28fm63j1jrqdd2jyq3pk";
|
||||
patches = [];
|
||||
};
|
||||
in
|
||||
|
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
|||
inherit (cfg) sha256;
|
||||
};
|
||||
|
||||
patches = [ ./imagetragick.patch ] ++ cfg.patches;
|
||||
patches = cfg.patches;
|
||||
|
||||
outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
|
||||
outputMan = "out"; # it's tiny
|
||||
|
|
|
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
|||
inherit (cfg) sha256;
|
||||
};
|
||||
|
||||
patches = [ ./imagetragick.patch ] ++ cfg.patches;
|
||||
patches = cfg.patches;
|
||||
|
||||
outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
|
||||
outputMan = "out"; # it's tiny
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
--- a/config/policy.xml
|
||||
+++ b/config/policy.xml
|
||||
67a68,72
|
||||
> <policy domain="coder" rights="none" pattern="EPHEMERAL" />
|
||||
> <policy domain="coder" rights="none" pattern="URL" />
|
||||
> <policy domain="coder" rights="none" pattern="HTTPS" />
|
||||
> <policy domain="coder" rights="none" pattern="MVG" />
|
||||
> <policy domain="coder" rights="none" pattern="MSL" />
|
|
@ -1,30 +1,27 @@
|
|||
{ stdenv, fetchFromGitHub, qt5, libsForQt5
|
||||
, bison, flex, eigen, boost, libGLU_combined, glew, opencsg, cgal
|
||||
, mpfr, gmp, glib, pkgconfig, harfbuzz, gettext, freetype, fontconfig
|
||||
, double-conversion, lib3mf, libzip
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2018.04-git";
|
||||
name = "openscad-${version}";
|
||||
pname = "openscad";
|
||||
version = "2019.05";
|
||||
|
||||
# src = fetchurl {
|
||||
# url = "http://files.openscad.org/${name}.src.tar.gz";
|
||||
# sha256 = "0djsgi9yx1nxr2gh1kgsqw5vrbncp8v5li0p1pp02higqf1psajx";
|
||||
# };
|
||||
src = fetchFromGitHub {
|
||||
owner = "openscad";
|
||||
repo = "openscad";
|
||||
rev = "179074dff8c23cbc0e651ce8463737df0006f4ca";
|
||||
sha256 = "1y63yqyd0v255liik4ff5ak6mj86d8d76w436x76hs5dk6jgpmfb";
|
||||
rev = "${pname}-${version}";
|
||||
sha256 = "1qz384jqgk75zxk7sqd22ma9pyd94kh4h6a207ldx7p9rny6vc5l";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ bison flex pkgconfig ];
|
||||
nativeBuildInputs = [ bison flex pkgconfig gettext qt5.qmake ];
|
||||
|
||||
buildInputs = [
|
||||
eigen boost glew opencsg cgal mpfr gmp glib
|
||||
harfbuzz gettext freetype fontconfig
|
||||
harfbuzz lib3mf libzip double-conversion freetype fontconfig
|
||||
] ++ stdenv.lib.optional stdenv.isLinux libGLU_combined
|
||||
++ (with qt5; [qtbase qmake] ++ stdenv.lib.optional stdenv.isDarwin qtmacextras)
|
||||
++ (with qt5; [qtbase qtmultimedia] ++ stdenv.lib.optional stdenv.isDarwin qtmacextras)
|
||||
++ (with libsForQt5; [qscintilla])
|
||||
;
|
||||
|
||||
|
@ -33,8 +30,6 @@ stdenv.mkDerivation rec {
|
|||
# src/lexer.l:36:10: fatal error: parser.hxx: No such file or directory
|
||||
enableParallelBuilding = false; # true by default due to qmake
|
||||
|
||||
doCheck = false;
|
||||
|
||||
postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
mkdir $out/Applications
|
||||
mv $out/bin/*.app $out/Applications
|
||||
|
@ -63,6 +58,6 @@ stdenv.mkDerivation rec {
|
|||
license = stdenv.lib.licenses.gpl2;
|
||||
platforms = stdenv.lib.platforms.unix;
|
||||
maintainers = with stdenv.lib.maintainers;
|
||||
[ bjornfor raskin the-kenny ];
|
||||
[ bjornfor raskin the-kenny gebner ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -38,12 +38,15 @@ index 75abede50..10f039376 100644
|
|||
|
||||
find_dependency(Boost "@Boost_MINIMUM_VERSION@")
|
||||
|
||||
@@ -22,4 +22,4 @@ include(${CMAKE_CURRENT_LIST_DIR}/KF5AkonadiTargets.cmake)
|
||||
@@ -22,7 +22,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/KF5AkonadiTargets.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/KF5AkonadiMacros.cmake)
|
||||
|
||||
# The directory where akonadi-xml.xsd and kcfg2dbus.xsl are installed
|
||||
-set(KF5Akonadi_DATA_DIR "@PACKAGE_KF5Akonadi_DATA_DIR@")
|
||||
+set(KF5Akonadi_DATA_DIR "@KF5Akonadi_DATA_DIR@")
|
||||
|
||||
####################################################################################
|
||||
# CMAKE_AUTOMOC
|
||||
--
|
||||
2.15.1
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ let
|
|||
kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers.nix {};
|
||||
kdenetwork-filesharing = callPackage ./kdenetwork-filesharing.nix {};
|
||||
kdenlive = callPackage ./kdenlive.nix {};
|
||||
kdepim-runtime = callPackage ./kdepim-runtime.nix {};
|
||||
kdepim-runtime = callPackage ./kdepim-runtime {};
|
||||
kdepim-addons = callPackage ./kdepim-addons.nix {};
|
||||
kdepim-apps-libs = callPackage ./kdepim-apps-libs {};
|
||||
kdf = callPackage ./kdf.nix {};
|
||||
|
|
|
@ -1 +1 @@
|
|||
WGET_ARGS=( https://download.kde.org/stable/applications/18.12.3/ )
|
||||
WGET_ARGS=( https://download.kde.org/stable/applications/19.04.1/ )
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
mkDerivation, lib,
|
||||
extra-cmake-modules, kdoctools,
|
||||
gmp, kconfig, kconfigwidgets, kguiaddons, ki18n, kinit, knotifications,
|
||||
kxmlgui,
|
||||
gmp, kconfig, kconfigwidgets, kcrash, kguiaddons, ki18n, kinit,
|
||||
knotifications, kxmlgui,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
|
@ -13,6 +13,7 @@ mkDerivation {
|
|||
};
|
||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||
buildInputs = [
|
||||
gmp kconfig kconfigwidgets kguiaddons ki18n kinit knotifications kxmlgui
|
||||
gmp kconfig kconfigwidgets kcrash kguiaddons ki18n kinit knotifications
|
||||
kxmlgui
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
mkDerivation, lib,
|
||||
extra-cmake-modules, kio, libkexiv2, libkdcraw
|
||||
extra-cmake-modules, karchive, kio, libkexiv2, libkdcraw
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
|
@ -10,5 +10,5 @@ mkDerivation {
|
|||
maintainers = [ lib.maintainers.ttuegel ];
|
||||
};
|
||||
nativeBuildInputs = [ extra-cmake-modules ];
|
||||
buildInputs = [ kio libkexiv2 libkdcraw ];
|
||||
buildInputs = [ karchive kio libkexiv2 libkdcraw ];
|
||||
}
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
, qtquickcontrols
|
||||
, qtscript
|
||||
, qtwebkit
|
||||
, rttr
|
||||
, kpurpose
|
||||
, kdeclarative
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
|
@ -57,6 +60,9 @@ mkDerivation {
|
|||
shared-mime-info
|
||||
libv4l
|
||||
ffmpeg
|
||||
rttr
|
||||
kpurpose
|
||||
kdeclarative
|
||||
];
|
||||
postPatch =
|
||||
# Module Qt5::Concurrent must be included in `find_package` before it is used.
|
||||
|
|
12
pkgs/applications/kde/kdepim-runtime/00-no-facebook.patch
Normal file
12
pkgs/applications/kde/kdepim-runtime/00-no-facebook.patch
Normal file
|
@ -0,0 +1,12 @@
|
|||
diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt
|
||||
index 99f7dbf..03e953b 100644
|
||||
--- a/resources/CMakeLists.txt
|
||||
+++ b/resources/CMakeLists.txt
|
||||
@@ -45,7 +45,6 @@ add_subdirectory( imap )
|
||||
if (Libkolabxml_FOUND)
|
||||
add_subdirectory( kolab )
|
||||
endif()
|
||||
-add_subdirectory( facebook )
|
||||
add_subdirectory( maildir )
|
||||
|
||||
add_subdirectory( openxchange )
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
mkDerivation, lib, kdepimTeam,
|
||||
mkDerivation, copyPathsToStore, lib, kdepimTeam,
|
||||
extra-cmake-modules, kdoctools,
|
||||
shared-mime-info,
|
||||
akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes,
|
||||
kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement,
|
||||
kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig,
|
||||
pimcommon, qtwebengine, libkgapi, qtspeech, qtxmlpatterns
|
||||
pimcommon, qtwebengine, libkgapi, qtnetworkauth, qtspeech, qtxmlpatterns,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
|
@ -14,12 +14,13 @@ mkDerivation {
|
|||
license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
|
||||
maintainers = kdepimTeam;
|
||||
};
|
||||
patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
|
||||
nativeBuildInputs = [ extra-cmake-modules kdoctools shared-mime-info ];
|
||||
buildInputs = [
|
||||
akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes
|
||||
kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap
|
||||
kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine
|
||||
pimcommon libkgapi qtspeech qtxmlpatterns
|
||||
pimcommon libkgapi qtnetworkauth qtspeech qtxmlpatterns
|
||||
];
|
||||
# Attempts to build some files before dependencies have been generated
|
||||
enableParallelBuilding = false;
|
1
pkgs/applications/kde/kdepim-runtime/series
Normal file
1
pkgs/applications/kde/kdepim-runtime/series
Normal file
|
@ -0,0 +1 @@
|
|||
00-no-facebook.patch
|
|
@ -2,8 +2,8 @@
|
|||
mkDerivation, lib, extra-cmake-modules, kdoctools, shared-mime-info,
|
||||
exiv2, kactivities, karchive, kbookmarks, kconfig, kconfigwidgets,
|
||||
kcoreaddons, kdbusaddons, kguiaddons, kdnssd, kiconthemes, ki18n, kio, khtml,
|
||||
kdelibs4support, kpty, libmtp, libssh, openexr, ilmbase, openslp, phonon,
|
||||
qtsvg, samba, solid, gperf
|
||||
kdelibs4support, kpty, syntax-highlighting, libmtp, libssh, openexr, ilmbase,
|
||||
openslp, phonon, qtsvg, samba, solid, gperf
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
|
@ -16,7 +16,8 @@ mkDerivation {
|
|||
buildInputs = [
|
||||
exiv2 kactivities karchive kbookmarks kconfig kconfigwidgets kcoreaddons
|
||||
kdbusaddons kguiaddons kdnssd kiconthemes ki18n kio khtml kdelibs4support
|
||||
kpty libmtp libssh openexr openslp phonon qtsvg samba solid gperf
|
||||
kpty syntax-highlighting libmtp libssh openexr openslp phonon qtsvg samba
|
||||
solid gperf
|
||||
];
|
||||
CXXFLAGS = [ "-I${ilmbase.dev}/include/OpenEXR" ];
|
||||
}
|
||||
|
|
|
@ -26,4 +26,5 @@ mkDerivation {
|
|||
libksieve mailcommon messagelib pim-sieve-editor qtscript qtwebengine
|
||||
];
|
||||
propagatedUserEnvPkgs = [ kdepim-runtime kwallet ];
|
||||
patches = [ ./kmail.patch ];
|
||||
}
|
||||
|
|
24
pkgs/applications/kde/kmail.patch
Normal file
24
pkgs/applications/kde/kmail.patch
Normal file
|
@ -0,0 +1,24 @@
|
|||
diff --git a/agents/archivemailagent/CMakeLists.txt b/agents/archivemailagent/CMakeLists.txt
|
||||
index 48ed076..9c56896 100644
|
||||
--- a/agents/archivemailagent/CMakeLists.txt
|
||||
+++ b/agents/archivemailagent/CMakeLists.txt
|
||||
@@ -22,6 +22,7 @@ ki18n_wrap_ui(libarchivemailagent_SRCS ui/archivemailwidget.ui )
|
||||
add_library(archivemailagent STATIC ${libarchivemailagent_SRCS})
|
||||
target_link_libraries(archivemailagent
|
||||
KF5::MailCommon
|
||||
+ KF5::Libkdepim
|
||||
KF5::I18n
|
||||
KF5::Notifications
|
||||
KF5::IconThemes
|
||||
diff --git a/agents/followupreminderagent/CMakeLists.txt b/agents/followupreminderagent/CMakeLists.txt
|
||||
index a56b730..83604cf 100644
|
||||
--- a/agents/followupreminderagent/CMakeLists.txt
|
||||
+++ b/agents/followupreminderagent/CMakeLists.txt
|
||||
@@ -23,6 +23,7 @@ target_link_libraries(followupreminderagent
|
||||
KF5::AkonadiMime
|
||||
KF5::AkonadiAgentBase
|
||||
KF5::DBusAddons
|
||||
+ KF5::FollowupReminder
|
||||
KF5::XmlGui
|
||||
KF5::KIOWidgets
|
||||
KF5::Notifications
|
|
@ -2,7 +2,7 @@
|
|||
mkDerivation, lib,
|
||||
extra-cmake-modules, kdoctools, makeWrapper,
|
||||
kcmutils, kcompletion, kconfig, kdnssd, knotifyconfig, kwallet, kwidgetsaddons,
|
||||
libvncserver, freerdp
|
||||
kwindowsystem, libvncserver, freerdp
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
|
@ -10,7 +10,7 @@ mkDerivation {
|
|||
nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
|
||||
buildInputs = [
|
||||
kcmutils kcompletion kconfig kdnssd knotifyconfig kwallet kwidgetsaddons
|
||||
freerdp libvncserver
|
||||
kwindowsystem freerdp libvncserver
|
||||
];
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/krdc \
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -119,6 +119,6 @@ in buildRustPackage rec {
|
|||
homepage = https://github.com/jwilm/alacritty;
|
||||
license = with licenses; [ asl20 ];
|
||||
maintainers = with maintainers; [ mic92 ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
, ilmbase, libXi, libX11, libXext, libXrender
|
||||
, libjpeg, libpng, libsamplerate, libsndfile
|
||||
, libtiff, libGLU_combined, openal, opencolorio, openexr, openimageio, openjpeg_1, pythonPackages
|
||||
, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd
|
||||
, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
|
||||
, jackaudioSupport ? false, libjack2
|
||||
, cudaSupport ? config.cudaSupport or false, cudatoolkit
|
||||
, colladaSupport ? true, opencollada
|
||||
|
@ -21,8 +21,9 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath;
|
||||
buildInputs =
|
||||
[ boost cmake ffmpeg gettext glew ilmbase
|
||||
[ boost ffmpeg gettext glew ilmbase
|
||||
libXi libX11 libXext libXrender
|
||||
freetype libjpeg libpng libsamplerate libsndfile libtiff libGLU_combined openal
|
||||
opencolorio openexr openimageio openjpeg_1 python zlib fftw jemalloc
|
||||
|
@ -80,6 +81,15 @@ stdenv.mkDerivation rec {
|
|||
--prefix PYTHONPATH : ${pythonPackages.numpy}/${python.sitePackages}
|
||||
'';
|
||||
|
||||
# Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be
|
||||
# found. See the explanation in libglvnd.
|
||||
postFixup = optionalString cudaSupport ''
|
||||
for program in $out/bin/blender $out/bin/.blender-wrapped; do
|
||||
isELF "$program" || continue
|
||||
addOpenGLRunpath "$program"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "3D Creation/Animation/Publishing System";
|
||||
homepage = https://www.blender.org;
|
||||
|
|
|
@ -1,31 +1,29 @@
|
|||
{ stdenv, buildGoPackage, fetchgit }:
|
||||
{ lib, buildGoModule, fetchFromGitHub }:
|
||||
|
||||
buildGoPackage rec {
|
||||
name = "cointop-unstable-${version}";
|
||||
version = "2018-05-03";
|
||||
rev = "08acd96082682347d458cd4f861e2debd3255745";
|
||||
buildGoModule rec {
|
||||
pname = "cointop";
|
||||
version = "1.2.0";
|
||||
|
||||
goPackagePath = "github.com/miguelmota/cointop";
|
||||
|
||||
src = fetchgit {
|
||||
inherit rev;
|
||||
url = "https://github.com/miguelmota/cointop";
|
||||
sha256 = "14savz48wzrfpm12fgnnndpl3mpzx7wsch4jrnm3rmrfdabdx7mi";
|
||||
src = fetchFromGitHub {
|
||||
owner = "miguelmota";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1vhsbk55rrsmnh9b3cxjiv1pzdiip54cyj31j4aj33vlr4hkampn";
|
||||
};
|
||||
|
||||
goDeps = ./deps.nix;
|
||||
modSha256 = "0vvypp97b3bjwxb96hajpjzr52sb5lc4r3zdkrdgg3vjwwacjwsn";
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
description = "The fastest and most interactive terminal based UI application for tracking cryptocurrencies";
|
||||
longDescription = ''
|
||||
cointop is a fast and lightweight interactive terminal based UI application
|
||||
for tracking and monitoring cryptocurrency coin stats in real-time.
|
||||
cointop is a fast and lightweight interactive terminal based UI
|
||||
application for tracking and monitoring cryptocurrency coin stats in
|
||||
real-time.
|
||||
|
||||
The interface is inspired by htop and shortcut keys are inspired by vim.
|
||||
The interface is inspired by htop and shortcut keys are inspired by vim.
|
||||
'';
|
||||
homepage = https://cointop.sh;
|
||||
platforms = stdenv.lib.platforms.unix; # cannot test others
|
||||
maintainers = [ ];
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
homepage = "https://cointop.sh";
|
||||
maintainers = [ maintainers.marsam ];
|
||||
license = licenses.asl20;
|
||||
};
|
||||
}
|
||||
|
|
3
pkgs/applications/misc/cointop/deps.nix
generated
3
pkgs/applications/misc/cointop/deps.nix
generated
|
@ -1,3 +0,0 @@
|
|||
# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
|
||||
[
|
||||
]
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "gallery_dl";
|
||||
version = "1.8.3";
|
||||
version = "1.8.4";
|
||||
|
||||
src = python3Packages.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "671ee6ff7baa3d63393d9856686313b4e0146f875dd937326942dd2fff605a72";
|
||||
sha256 = "01df9aph7qr2yxy0ckpkr5f6yscs29raqs2f4xxg7xn5zaimjhan";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{ stdenv, fetchFromGitHub, python3, gettext, gobject-introspection, wrapGAppsHook, glibcLocales
|
||||
, gtk3, keybinder3, libnotify, libutempter, vte }:
|
||||
, gtk3, keybinder3, libnotify, libutempter, vte, libwnck3 }:
|
||||
|
||||
let
|
||||
version = "3.5.0";
|
||||
version = "3.6.3";
|
||||
in python3.pkgs.buildPythonApplication rec {
|
||||
name = "guake-${version}";
|
||||
format = "other";
|
||||
|
@ -11,7 +11,7 @@ in python3.pkgs.buildPythonApplication rec {
|
|||
owner = "Guake";
|
||||
repo = "guake";
|
||||
rev = version;
|
||||
sha256 = "0fz0gciw5fpxrp6yyji27l7q8c0r9ljsq6vw584mr70bcl1gzjqx";
|
||||
sha256 = "13ipnmqcyixpa6qv83m0f91za4kar14s5jpib68b32z65x1h0j3b";
|
||||
};
|
||||
|
||||
# Strict deps breaks guake
|
||||
|
@ -23,7 +23,7 @@ in python3.pkgs.buildPythonApplication rec {
|
|||
|
||||
buildInputs = [ gtk3 keybinder3 libnotify python3 vte ];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [ dbus-python pbr pycairo pygobject3 ];
|
||||
propagatedBuildInputs = with python3.pkgs; [ dbus-python pbr pycairo pygobject3 libwnck3 ];
|
||||
|
||||
LC_ALL = "en_US.UTF-8"; # fixes weird encoding error, see https://github.com/NixOS/nixpkgs/pull/38642#issuecomment-379727699
|
||||
|
||||
|
|
29
pkgs/applications/misc/lifelines/default.nix
Normal file
29
pkgs/applications/misc/lifelines/default.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{ stdenv, fetchFromGitHub, gettext, libiconv, bison, ncurses, perl, autoreconfHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lifelines";
|
||||
version = "unstable-2019-05-07";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "43f29285ed46fba322b6a14322771626e6b02c59";
|
||||
sha256 = "1agszzlmkxmznpc1xj0vzxkskrcfagfjvqsdyw1yp5yg6bsq272y";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
gettext
|
||||
libiconv
|
||||
ncurses
|
||||
perl
|
||||
];
|
||||
nativeBuildInputs = [ autoreconfHook bison ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Genealogy tool with ncurses interface";
|
||||
homepage = "https://lifelines.github.io/lifelines/";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ disassembler ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "plasma-applet-volumewin7mixer-${version}";
|
||||
version = "23";
|
||||
version = "24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Zren";
|
||||
repo = "plasma-applet-volumewin7mixer";
|
||||
rev = "v${version}";
|
||||
sha256 = "1j2bq343lnhwqz26qfsvg7vjxv84ibzbc4y86rjkh07nqjwb3xsc";
|
||||
sha256 = "1pms71229y7fv3zs38a0l9mdcg5qkcdv9yrcvdm6xqpdyk21jbz2";
|
||||
};
|
||||
|
||||
patches = [ ./cmake.patch ];
|
||||
|
|
38
pkgs/applications/misc/pstree/default.nix
Normal file
38
pkgs/applications/misc/pstree/default.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{ stdenv, fetchurl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pstree";
|
||||
version = "2.39";
|
||||
|
||||
src = fetchurl {
|
||||
urls = [
|
||||
"https://distfiles.macports.org/${pname}/${pname}-${version}.tar.gz"
|
||||
"https://fossies.org/linux/misc/${pname}-${version}.tar.gz"
|
||||
"ftp://ftp.thp.uni-duisburg.de/pub/source/${pname}-${version}.tar.gz"
|
||||
];
|
||||
sha256 = "17s7v15c4gryjpi11y1xq75022nkg4ggzvjlq2dkmyg67ssc76vw";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
$CC $NIX_CFLAGS -o pstree pstree.c
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm0555 ${pname} -t $out/bin
|
||||
install -Dm0444 ${pname}.1 -t $out/share/man/man1
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Show the set of running processes as a tree";
|
||||
homepage = "http://www.thp.uni-duisburg.de/pstree/";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.c0bw3b ];
|
||||
platforms = platforms.unix;
|
||||
priority = 5; # Lower than psmisc also providing pstree on Linux platforms
|
||||
};
|
||||
}
|
|
@ -6,17 +6,17 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pwsafe";
|
||||
version = "1.07";
|
||||
version = "1.08.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "${pname}";
|
||||
repo = "${pname}";
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "${version}BETA";
|
||||
sha256 = "0syxmliybgvm9j6d426l7j12ryrl42azy80m66jc56fv9nkqwaya";
|
||||
sha256 = "0x89pn056h8b4yvxbd6l3qwrghslxc7vlxnblmcmsx7xx4i041ng";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake gettext perl pkgconfig zip
|
||||
cmake gettext perl pkgconfig zip
|
||||
];
|
||||
buildInputs = [
|
||||
libXext libXi libXt libXtst wxGTK31
|
||||
|
@ -49,11 +49,10 @@ stdenv.mkDerivation rec {
|
|||
done
|
||||
'';
|
||||
|
||||
installFlags = [ "PREFIX=$(out)" ];
|
||||
installFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A password database utility";
|
||||
|
||||
longDescription = ''
|
||||
Password Safe is a password database utility. Like many other
|
||||
such products, commercial and otherwise, it stores your
|
||||
|
@ -61,8 +60,7 @@ stdenv.mkDerivation rec {
|
|||
one password (the "safe combination"), instead of all the
|
||||
username/password combinations that you use.
|
||||
'';
|
||||
|
||||
homepage = https://pwsafe.org/;
|
||||
homepage = "https://pwsafe.org/";
|
||||
maintainers = with maintainers; [ c0bw3b pjones ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.artistic2;
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "waybar-${version}";
|
||||
version = "0.6.1";
|
||||
version = "0.6.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Alexays";
|
||||
repo = "Waybar";
|
||||
rev = version;
|
||||
sha256 = "1hzwqg22sjiirx6743512271p3jlakrw0155av1phrv5b7p3ws8a";
|
||||
sha256 = "1k3ynx5ssq7ji0nlx0n7zrgrshxv5abj8fa8c5lcyxr2wxffna9z";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
{ stdenv, lib, dpkg, fetchurl, gtk2, jre, libXtst, makeWrapper }:
|
||||
{ stdenv, lib, fetchzip, fetchurl, gtk2, jre, libXtst, makeWrapper, makeDesktopItem, runtimeShell }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "xmind-${version}";
|
||||
version = "7.5-update1";
|
||||
version = "8-update8";
|
||||
|
||||
src = if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
|
||||
url = "http://dl2.xmind.net/xmind-downloads/${name}-linux_i386.deb";
|
||||
sha256 = "04kr6pw0kwy715bp9wcnqnw1k5wl65xa87lhljrskm291p402jy1";
|
||||
} else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl {
|
||||
url = "http://dl2.xmind.net/xmind-downloads/${name}-linux_amd64.deb";
|
||||
sha256 = "1j2ynhk7p3m3vd6c4mjwpnlzqgfj5c4q3zydab3nfwncwx6gaqj9";
|
||||
} else throw "platform ${stdenv.hostPlatform.system} not supported!";
|
||||
src = fetchzip {
|
||||
url = "https://xmind.net/xmind/downloads/${name}-linux.zip";
|
||||
stripRoot = false;
|
||||
sha256 = "1p68z0b4brgiyybz190alqv716ncql49vsksm41y90mcjd8s4jhn";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ dpkg makeWrapper ];
|
||||
srcIcon = fetchurl {
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/xmind.png?h=xmind";
|
||||
sha256 = "0jxq2fiq69q9ly0m6hx2qfybqad22sl42ciw636071khpqgc885f";
|
||||
};
|
||||
|
||||
unpackCmd = "mkdir root ; dpkg-deb -x $curSrc root";
|
||||
patches = [ ./java-env-config-fixes.patch ];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
dontBuild = true;
|
||||
dontPatchELF = true;
|
||||
|
@ -22,12 +25,27 @@ stdenv.mkDerivation rec {
|
|||
|
||||
libPath = lib.makeLibraryPath [ gtk2 libXtst ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r usr/lib/xmind $out/libexec
|
||||
cp -r usr/bin usr/share $out
|
||||
rm $out/libexec/XMind.ini
|
||||
mv etc/XMind.ini $out/libexec
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "XMind";
|
||||
exec = "XMind";
|
||||
icon = "xmind";
|
||||
desktopName = "XMind";
|
||||
comment = meta.description;
|
||||
categories = "Office;";
|
||||
mimeType = "application/xmind;xscheme-handler/xmind";
|
||||
};
|
||||
|
||||
installPhase = let
|
||||
targetDir = if stdenv.hostPlatform.system == "i686-linux"
|
||||
then "XMind_i386"
|
||||
else "XMind_amd64";
|
||||
in ''
|
||||
mkdir -p $out/{bin,libexec/configuration/,share/{applications/,fonts/,icons/hicolor/scalable/apps/}}
|
||||
cp -r ${targetDir}/{configuration,p2,XMind{,.ini}} $out/libexec
|
||||
cp -r {plugins,features} $out/libexec/
|
||||
cp -r fonts $out/share/fonts/
|
||||
cp "${desktopItem}/share/applications/XMind.desktop" $out/share/applications/XMind.desktop
|
||||
cp ${srcIcon} $out/share/icons/hicolor/scalable/apps/xmind.png
|
||||
|
||||
patchelf --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
|
||||
$out/libexec/XMind
|
||||
|
@ -35,8 +53,17 @@ stdenv.mkDerivation rec {
|
|||
wrapProgram $out/libexec/XMind \
|
||||
--prefix LD_LIBRARY_PATH : "${libPath}"
|
||||
|
||||
substituteInPlace "$out/bin/XMind" \
|
||||
--replace '/usr/lib/xmind' "$out/libexec"
|
||||
# Inspired by https://aur.archlinux.org/cgit/aur.git/tree/?h=xmind
|
||||
cat >$out/bin/XMind <<EOF
|
||||
#! ${runtimeShell}
|
||||
if [ ! -d "\$HOME/.xmind" ]; then
|
||||
mkdir -p "\$HOME/.xmind/configuration-cathy/"
|
||||
cp -r $out/libexec/configuration/ \$HOME/.xmind/configuration-cathy/
|
||||
fi
|
||||
|
||||
exec "$out/libexec/XMind" "$@"
|
||||
EOF
|
||||
chmod +x $out/bin/XMind
|
||||
|
||||
ln -s ${jre} $out/libexec/jre
|
||||
'';
|
||||
|
@ -55,9 +82,9 @@ stdenv.mkDerivation rec {
|
|||
GTD. Meanwhile, XMind can read FreeMind and MindManager files,
|
||||
and save to Evernote.
|
||||
'';
|
||||
homepage = http://www.xmind.net/;
|
||||
homepage = https://www.xmind.net/;
|
||||
license = licenses.unfree;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ michalrus ];
|
||||
maintainers = with maintainers; [ michalrus ma27 ];
|
||||
};
|
||||
}
|
||||
|
|
40
pkgs/applications/misc/xmind/java-env-config-fixes.patch
Normal file
40
pkgs/applications/misc/xmind/java-env-config-fixes.patch
Normal file
|
@ -0,0 +1,40 @@
|
|||
diff --git a/XMind_amd64/XMind.ini b/XMind_amd64/XMind.ini
|
||||
index bdd8a37..5f35daf 100644
|
||||
--- a/XMind_amd64/XMind.ini
|
||||
+++ b/XMind_amd64/XMind.ini
|
||||
@@ -1,11 +1,11 @@
|
||||
-configuration
|
||||
-./configuration
|
||||
+@user.home/.xmind/configuration-cathy_linux_64
|
||||
-data
|
||||
-../workspace
|
||||
+@user.home/.xmind/workspace-cathy
|
||||
-startup
|
||||
-../plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
|
||||
+plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
|
||||
--launcher.library
|
||||
-../plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444
|
||||
+plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444
|
||||
--launcher.defaultAction
|
||||
openFile
|
||||
--launcher.GTK_version
|
||||
diff --git a/XMind_i386/XMind.ini b/XMind_i386/XMind.ini
|
||||
index 4ed3225..1d74258 100644
|
||||
--- a/XMind_i386/XMind.ini
|
||||
+++ b/XMind_i386/XMind.ini
|
||||
@@ -1,11 +1,11 @@
|
||||
-configuration
|
||||
-./configuration
|
||||
+@user.home/.xmind/configuration-cathy_linux_64
|
||||
-data
|
||||
-../workspace
|
||||
+@user.home/.xmind/workspace-cathy
|
||||
-startup
|
||||
-../plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
|
||||
+plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
|
||||
--launcher.library
|
||||
-../plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.400.v20160518-1444
|
||||
+plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.400.v20160518-1444
|
||||
--launcher.defaultAction
|
||||
openFile
|
||||
--launcher.GTK_version
|
|
@ -3,14 +3,14 @@
|
|||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "xterm-344";
|
||||
name = "xterm-345";
|
||||
|
||||
src = fetchurl {
|
||||
urls = [
|
||||
"ftp://ftp.invisible-island.net/xterm/${name}.tgz"
|
||||
"https://invisible-mirror.net/archives/xterm/${name}.tgz"
|
||||
];
|
||||
sha256 = "1xfdmib8n6gw5s90vbvdhm630k8i2dbprknp4as4mqls27vbiknc";
|
||||
sha256 = "0dfmy9vgpmxi8rsnv2lb2lmq5ny26f0pjhcj348l0d3rs61afjb6";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
|
|
32
pkgs/applications/networking/Sylk/default.nix
Normal file
32
pkgs/applications/networking/Sylk/default.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{ appimageTools, fetchurl, lib, gsettings-desktop-schemas, gtk3 }:
|
||||
|
||||
let
|
||||
pname = "Sylk";
|
||||
version = "2.1.0";
|
||||
in
|
||||
|
||||
appimageTools.wrapType2 rec {
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage";
|
||||
sha256 = "1ifi8qr6f84dcssxhv5ar1s48nsqxiv2j1blc82248hmq5is24mf";
|
||||
};
|
||||
|
||||
profile = ''
|
||||
export LC_ALL=C.UTF-8
|
||||
export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
|
||||
'';
|
||||
|
||||
multiPkgs = null; # no 32bit needed
|
||||
extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
|
||||
extraInstallCommands = "mv $out/bin/{${name},${pname}}";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Sylk WebRTC client";
|
||||
homepage = "http://sylkserver.com/";
|
||||
license = licenses.agpl3Plus;
|
||||
maintainers = with maintainers; [ zimbatm ];
|
||||
platforms = [ "i386-linux" "x86_64-linux" ];
|
||||
};
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -94,7 +94,7 @@ let
|
|||
|
||||
browserPatches = [
|
||||
./env_var_for_system_dir.patch
|
||||
] ++ lib.optionals (stdenv.isAarch64 && lib.versionAtLeast ffversion "66") [
|
||||
] ++ lib.optionals (stdenv.isAarch64 && lib.versionAtLeast ffversion "66" && lib.versionOlder ffversion "67") [
|
||||
(fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/09c7fa0dc1d87922e3b464c0fa084df1227fca79/extra/firefox/arm.patch";
|
||||
sha256 = "1vbpih23imhv5r3g21m3m541z08n9n9j1nvmqax76bmyhn7mxp32";
|
||||
|
@ -164,6 +164,7 @@ stdenv.mkDerivation rec {
|
|||
++ lib.optional gtk3Support wrapGAppsHook
|
||||
++ lib.optionals stdenv.isDarwin [ xcbuild rsync ]
|
||||
++ lib.optionals (lib.versionAtLeast ffversion "63.0") [ rust-cbindgen nodejs ]
|
||||
++ lib.optionals (lib.versionAtLeast ffversion "67.0") [ llvmPackages.llvm ] # llvm-objdump is required in version >=67.0
|
||||
++ extraNativeBuildInputs;
|
||||
|
||||
preConfigure = ''
|
||||
|
|
|
@ -17,10 +17,10 @@ rec {
|
|||
|
||||
firefox = common rec {
|
||||
pname = "firefox";
|
||||
ffversion = "66.0.5";
|
||||
ffversion = "67.0";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
|
||||
sha512 = "18bcpbwzhc2fi6cqhxhh6jiw5akhzr7qqs6s8irjbvh7q8f3z2n046vrlvpblhbkc2kv1n0s14n49yzv432adqwa9qi8d57jnxyfqkf";
|
||||
sha512 = "0lwljfcbb1avnlafyrw5z08l3wxixfk6nv91blp6sc45mvsk89l77ckfyay7jy4v6c84q4a9h0wbh2mnx0r1xm3fhy9lshlm1n0s051";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -72,10 +72,10 @@ rec {
|
|||
|
||||
firefox-esr-60 = common rec {
|
||||
pname = "firefox-esr";
|
||||
ffversion = "60.6.3esr";
|
||||
ffversion = "60.7.0esr";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
|
||||
sha512 = "3zg75djd7mbr9alhkp7zqrky7g41apyf6ka0acv500dmpnhvn5v5i0wy9ks8v6vh7kcgw7bngf6msb7vbbps6whwdcqv3v4dqbg6yr2";
|
||||
sha512 = "1armp7nmzn864l42nasw0zqsp8y1zj4vhgbm99c49a435m44c8p66qrjxy6rn2haqsy76i9x5zf8ph2d014ap6g5yhidj7iymbjh5f2";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -127,6 +127,7 @@ let
|
|||
--suffix PATH ':' "$out${browser.execdir or "/bin"}" \
|
||||
--set MOZ_APP_LAUNCHER "${browserName}${nameSuffix}" \
|
||||
--set MOZ_SYSTEM_DIR "$out/lib/mozilla" \
|
||||
--set SNAP_NAME "firefox" \
|
||||
${lib.optionalString gdkWayland ''
|
||||
--set GDK_BACKEND "wayland" \
|
||||
''}${lib.optionalString (browser ? gtk3)
|
||||
|
|
|
@ -89,7 +89,7 @@ let
|
|||
fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
|
||||
|
||||
# Upstream source
|
||||
version = "8.0.9";
|
||||
version = "8.5";
|
||||
|
||||
lang = "en-US";
|
||||
|
||||
|
@ -99,7 +99,7 @@ let
|
|||
"https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
|
||||
"https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
|
||||
];
|
||||
sha256 = "0w11rnxpdql81gk618bmyrzl7q9ndyr5zps3cr9l331yhswq0sbc";
|
||||
sha256 = "09ixdq4n41cf5f3agmam3n669fflz6vwpalxpai07p2alal80g2x";
|
||||
};
|
||||
|
||||
"i686-linux" = fetchurl {
|
||||
|
@ -107,7 +107,7 @@ let
|
|||
"https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
|
||||
"https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
|
||||
];
|
||||
sha256 = "02w1i6vi80ks5ch1pm1r426b9ip53fvg9qv9543r2dns4qzaf7zv";
|
||||
sha256 = "0lgxwb8hll29sk7rpnraw9gfz7f9sb81gjsbxdnmm34y1vrabjv7";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
|
|
@ -16,11 +16,11 @@ let
|
|||
vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "vivaldi";
|
||||
version = "2.5.1525.43-1";
|
||||
version = "2.5.1525.46-1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb";
|
||||
sha256 = "0mmyl32fz6p43gz8vzkhh0z1wcb3l5cckxl8vkz53lb9k2mckjqi";
|
||||
sha256 = "0hxmpd4j1cq4643x17syzqxfxki6jngvf28jd71pp58hngffh3g4";
|
||||
};
|
||||
|
||||
unpackPhase = ''
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ lib, buildGoPackage, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }:
|
||||
|
||||
let version = "0.40.1"; in
|
||||
let version = "0.64.1"; in
|
||||
|
||||
buildGoPackage {
|
||||
name = "helmfile-${version}";
|
||||
|
@ -9,9 +9,11 @@ buildGoPackage {
|
|||
owner = "roboll";
|
||||
repo = "helmfile";
|
||||
rev = "v${version}";
|
||||
sha256 = "02ir10070rpayv9s53anldwjy5ggl268shgf085d188wl6vshaiv";
|
||||
sha256 = "1258c545fv4mcrzaw3z5gxl264fcahigaijgkjd4igh4pl0z0wxk";
|
||||
};
|
||||
|
||||
goDeps = ./deps.nix;
|
||||
|
||||
goPackagePath = "github.com/roboll/helmfile";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -26,12 +28,11 @@ buildGoPackage {
|
|||
--prefix PATH : ${lib.makeBinPath [ kubernetes-helm ]}
|
||||
'';
|
||||
|
||||
|
||||
meta = {
|
||||
description = "Deploy Kubernetes Helm charts";
|
||||
homepage = https://github.com/roboll/helmfile;
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ pneumaticat ];
|
||||
maintainers = with lib.maintainers; [ pneumaticat yurrriq ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
165
pkgs/applications/networking/cluster/helmfile/deps.nix
generated
Normal file
165
pkgs/applications/networking/cluster/helmfile/deps.nix
generated
Normal file
|
@ -0,0 +1,165 @@
|
|||
# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
|
||||
[
|
||||
{
|
||||
goPackagePath = "github.com/Masterminds/semver";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/Masterminds/semver";
|
||||
rev = "v1.4.1";
|
||||
sha256 = "1sr9nxvasy2mw00al3i7yp3wdz2q21wp3l1n1nydvmyf27ibg3bj";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/Masterminds/sprig";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/Masterminds/sprig";
|
||||
rev = "v2.15.0";
|
||||
sha256 = "10vzhx710vaxqzh45vrkw4vc3fgcbycpn04shcylzcmlxmfnpjv1";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/aokoli/goutils";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/aokoli/goutils";
|
||||
rev = "v1.0.1";
|
||||
sha256 = "1yj4yjfwylica31sgj69ygb04p9xxi22kgfxd0j5f58zr8vwww2n";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/google/go-cmp";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/google/go-cmp";
|
||||
rev = "v0.3.0";
|
||||
sha256 = "1hyxx3434zshl2m9ja78gwlkg1rx9yl6diqa7dnjb31xz5x4gbjj";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/google/uuid";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/google/uuid";
|
||||
rev = "064e2069ce9c";
|
||||
sha256 = "1b1ibx3rbiv7xwa9kz4b4zpp1fza5cjnn8v6749b4vrkjjmp3rqb";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/huandu/xstrings";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/huandu/xstrings";
|
||||
rev = "v1.0.0";
|
||||
sha256 = "0bnyh4awmr9aagqhhi19xdadzksrkl01d987ycqx86dwlvqqxnxf";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/imdario/mergo";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/imdario/mergo";
|
||||
rev = "v0.3.6";
|
||||
sha256 = "1lbzy8p8wv439sqgf0n21q52flf2wbamp6qa1jkyv6an0nc952q7";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mattn/go-runewidth";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mattn/go-runewidth";
|
||||
rev = "v0.0.4";
|
||||
sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/pkg/errors";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/pkg/errors";
|
||||
rev = "v0.8.1";
|
||||
sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/tatsushid/go-prettytable";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/tatsushid/go-prettytable";
|
||||
rev = "ed2d14c29939";
|
||||
sha256 = "01l2v8vfv9ng0g9p0ys5szkqpc0f9baglkavn7yxkif05kdqi0ik";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/urfave/cli";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/urfave/cli";
|
||||
rev = "6011f165dc28";
|
||||
sha256 = "159q8lwf40jaxbm7cybzsws176k0wsdcaaj2rx0wdw4m6xha8034";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "go.uber.org/atomic";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/uber-go/atomic";
|
||||
rev = "v1.3.2";
|
||||
sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "go.uber.org/multierr";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/uber-go/multierr";
|
||||
rev = "v1.1.0";
|
||||
sha256 = "1slfc6syvw8cvr6rbrjsy6ja5w8gsx0f8aq8qm16rp2x5c2pj07w";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "go.uber.org/zap";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/uber-go/zap";
|
||||
rev = "v1.8.0";
|
||||
sha256 = "0i9pfm5br4qq94ys1y5sr8h31bbq1xwcaxibx7g2n5n1bcbqviam";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/crypto";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/crypto";
|
||||
rev = "b2aa35443fbc";
|
||||
sha256 = "05qaicps075s77020q1vjihi5k7jbgr85ry0br9lj3jynwnrgyyg";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/check.v1";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/check.v1";
|
||||
rev = "20d25e280405";
|
||||
sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/yaml.v2";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/yaml.v2";
|
||||
rev = "v2.2.1";
|
||||
sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gotest.tools";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/gotestyourself/gotest.tools";
|
||||
rev = "v2.2.0";
|
||||
sha256 = "0yif3gdyckmf8i54jq0xn00kflla5rhib9sarw66ngnbl7bn9kyl";
|
||||
};
|
||||
}
|
||||
]
|
|
@ -7,7 +7,7 @@
|
|||
let
|
||||
sha256 = {
|
||||
"1.6.3" = "142hw73wf20d846l83ydx0yg7qj5qxywm4h7qrhwnd7lsy2sbnjf";
|
||||
"2.2.1" = "10nxsf9a6hj1263sxv0cbdqxdb8mb4cl6iqq32ljq9ydvk32s99c";
|
||||
"2.4.3" = "1dvvr1q3dz961bl7qigxngrp4ssrbll3g1s6nkra6gyr83pis96c";
|
||||
}.${version};
|
||||
in
|
||||
|
||||
|
|
|
@ -88,8 +88,8 @@ let
|
|||
plugins = removeAttrs terraform-providers ["override" "overrideDerivation" "recurseForDerivations"];
|
||||
in rec {
|
||||
terraform_0_11 = pluggable (generic {
|
||||
version = "0.11.13";
|
||||
sha256 = "014d2ibmbp5yc1802ckdcpwqbm5v70xmjdyh5nadn02dfynaylna";
|
||||
version = "0.11.14";
|
||||
sha256 = "1bzz5wy13gh8j47mxxp6ij6yh20xmxd9n5lidaln3mf1bil19dmc";
|
||||
patches = [ ./provider-path.patch ];
|
||||
passthru = { inherit plugins; };
|
||||
});
|
||||
|
@ -97,8 +97,8 @@ in rec {
|
|||
terraform_0_11-full = terraform_0_11.full;
|
||||
|
||||
terraform_0_12 = pluggable (generic {
|
||||
version = "0.12.0-rc1";
|
||||
sha256 = "1ap1q5bixkzshnwy8xyfh768qwg3y4pcjzaiajzn2icjf4ay5nqm";
|
||||
version = "0.12.0";
|
||||
sha256 = "1lycy789wzh1fcg7qcl540546bgw4b9kjlbh2j4hnm0bs9696b2a";
|
||||
patches = [ ./provider-path.patch ];
|
||||
passthru = { inherit plugins; };
|
||||
});
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
{ callPackage, stdenv }:
|
||||
|
||||
let
|
||||
stableVersion = "2.1.17";
|
||||
previewVersion = "2.2.0a5";
|
||||
stableVersion = "2.1.18";
|
||||
previewVersion = "2.2.0b1";
|
||||
addVersion = args:
|
||||
let version = if args.stable then stableVersion else previewVersion;
|
||||
branch = if args.stable then "stable" else "preview";
|
||||
in args // { inherit version branch; };
|
||||
mkGui = args: callPackage (import ./gui.nix (addVersion args)) { };
|
||||
mkServer = args: callPackage (import ./server.nix (addVersion args)) { };
|
||||
guiSrcHash = "1caqb644nq0hhszlg3ac87730m1xmw48b17jisqiq7zmk9scsh40";
|
||||
serverSrcHash = "0zyfh5sw8r2n41v0nazgdbr50cz6g5an2myvlgj5xx41smr9gflb";
|
||||
guiSrcHash = "00hcri32vakz17ywbqd9lycxdai490ds0g1v8znm75ddvszfbv7i";
|
||||
serverSrcHash = "0f28f5f4dsr8h4q592dh9i1z0gp836gdgm8clwrkb7i01df0rrlf";
|
||||
in {
|
||||
guiStable = mkGui {
|
||||
stable = true;
|
||||
|
@ -18,7 +18,7 @@ in {
|
|||
};
|
||||
guiPreview = mkGui {
|
||||
stable = false;
|
||||
sha256Hash = "0p4g5hszys68ijzsi2rb89j1rpg04wlqlzzrl92npvqqf2i0jdf8";
|
||||
sha256Hash = "0kx68r8kgnsb7710a1a5y64blmw2jl1gv37bzbbivi15dzgmykfh";
|
||||
};
|
||||
|
||||
serverStable = mkServer {
|
||||
|
@ -27,6 +27,6 @@ in {
|
|||
};
|
||||
serverPreview = mkServer {
|
||||
stable = false;
|
||||
sha256Hash = "1yvdfczi8ah9m7b49l7larfs678hh7c424i1f73kivfds6211bj5";
|
||||
sha256Hash = "1jxkba7hc7271hjw3839r0yfzs87dzv1nqx62adhk9qrrcfqhg58";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -13,11 +13,11 @@ assert pulseaudioSupport -> libpulseaudio != null;
|
|||
let
|
||||
inherit (stdenv.lib) concatStringsSep makeBinPath optional;
|
||||
|
||||
version = "2.8.183302.0415";
|
||||
version = "2.8.222599.0519";
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
|
||||
sha256 = "07afq614fy09mjymmv3cf8vwa8ps78s2s4909g1a2rwvgkj8bw2x";
|
||||
sha256 = "0bmrqxz41pxcz41dcdbwd2b0hjv8fvix09jwxrnca4d50jq9fx7j";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -6,7 +6,8 @@ weechat:
|
|||
|
||||
let
|
||||
wrapper = {
|
||||
configure ? { availablePlugins, ... }: { plugins = builtins.attrValues availablePlugins; }
|
||||
installManPages ? true
|
||||
, configure ? { availablePlugins, ... }: { plugins = builtins.attrValues availablePlugins; }
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -65,14 +66,22 @@ let
|
|||
${lib.concatMapStringsSep "\n" (p: lib.optionalString (p ? extraEnv) p.extraEnv) plugins}
|
||||
exec ${weechat}/bin/${bin} "$@" --run-command ${lib.escapeShellArg init}
|
||||
'') // {
|
||||
inherit (weechat) name;
|
||||
inherit (weechat) name man;
|
||||
unwrapped = weechat;
|
||||
outputs = [ "out" "man" ];
|
||||
};
|
||||
in buildEnv {
|
||||
name = "weechat-bin-env-${weechat.version}";
|
||||
extraOutputsToInstall = lib.optionals installManPages [ "man" ];
|
||||
paths = [
|
||||
(mkWeechat "weechat")
|
||||
(mkWeechat "weechat-headless")
|
||||
(runCommand "weechat-out-except-bin" { } ''
|
||||
mkdir $out
|
||||
ln -sf ${weechat}/include $out/include
|
||||
ln -sf ${weechat}/lib $out/lib
|
||||
ln -sf ${weechat}/share $out/share
|
||||
'')
|
||||
];
|
||||
meta = builtins.removeAttrs weechat.meta [ "outputsToInstall" ];
|
||||
};
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ncdc-${version}";
|
||||
version = "1.21";
|
||||
version = "1.22";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dev.yorhel.nl/download/ncdc-${version}.tar.gz";
|
||||
sha256 = "10hrk7pcvfl9cj6d0kr4qf3l068ikqhccbg7lf25pr2kln9lz412";
|
||||
sha256 = "0n9sn4rh4zhmzjknsvyp4bfh925abz93ln43gl8a1v63rs2yyhgx";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ stdenv, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
|
||||
, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, python3, libcap, glib
|
||||
, libssh, zlib, cmake, extra-cmake-modules, fetchpatch, makeWrapper
|
||||
, libssh, nghttp2, zlib, cmake, extra-cmake-modules, fetchpatch, makeWrapper
|
||||
, withQt ? true, qt5 ? null
|
||||
, ApplicationServices, SystemConfiguration, gmp
|
||||
}:
|
||||
|
@ -33,7 +33,7 @@ in stdenv.mkDerivation {
|
|||
];
|
||||
|
||||
buildInputs = [
|
||||
gettext pcre perl libpcap lua5 libssh openssl libgcrypt
|
||||
gettext pcre perl libpcap lua5 libssh nghttp2 openssl libgcrypt
|
||||
libgpgerror gnutls geoip c-ares python3 glib zlib makeWrapper
|
||||
] ++ optionals withQt (with qt5; [ qtbase qtmultimedia qtsvg qttools ])
|
||||
++ optionals stdenv.isLinux [ libcap libnl ]
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
, hicolor-icon-theme, libsoup, gnome3 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "homebank-5.2.4";
|
||||
name = "homebank-5.2.5";
|
||||
src = fetchurl {
|
||||
url = "http://homebank.free.fr/public/${name}.tar.gz";
|
||||
sha256 = "1lhj4pnszw4a1r8ls8lwqyakg5bmldziaxgydbx76nbah6w9ma3r";
|
||||
sha256 = "1716igj18792sp4rx0vwxvx95mahgb7wiyahd2018yq8z88vc36w";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
} :
|
||||
|
||||
let
|
||||
version = "19.01.0";
|
||||
version = "19.04.0";
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
name = "limesuite-${version}";
|
||||
|
@ -13,7 +13,7 @@ in stdenv.mkDerivation {
|
|||
owner = "myriadrf";
|
||||
repo = "LimeSuite";
|
||||
rev = "v${version}";
|
||||
sha256 = "1r03kc1pvlhkvp19qbw7f5qzxx48z2v638f0xpawf6d1nwfky1n3";
|
||||
sha256 = "1lrjrli0ny25qwg8bw1bvbdb18hf7ffqj4ziibkgzscv3w5v0s45";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libusb1, rtl-sdr }:
|
||||
{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
|
||||
, libusb1, rtl-sdr, soapysdr-with-plugins
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
version = "18.12";
|
||||
|
@ -13,7 +16,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
|
||||
buildInputs = [ libusb1 rtl-sdr ];
|
||||
buildInputs = [ libusb1 rtl-sdr soapysdr-with-plugins ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Decode traffic from devices that broadcast on 433.9 MHz";
|
||||
|
|
|
@ -7,8 +7,8 @@ let
|
|||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
srcVersion = "apr19a";
|
||||
version = "20190401_a";
|
||||
srcVersion = "may19a";
|
||||
version = "20190501_a";
|
||||
name = "gildas-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
|
|||
# source code of the previous release to a different directory
|
||||
urls = [ "http://www.iram.fr/~gildas/dist/gildas-src-${srcVersion}.tar.xz"
|
||||
"http://www.iram.fr/~gildas/dist/archive/gildas/gildas-src-${srcVersion}.tar.xz" ];
|
||||
sha256 = "0yb8dv41qsr5w2yci62phk6mrxbjlfxl4nnj7zndlyym2i5ni89c";
|
||||
sha256 = "f6132116bce0ea716a6eb13a63f538d27567a8bfb159f7d567abb9dac5429e30";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "stacks";
|
||||
version = "2.3e";
|
||||
version = "2.4";
|
||||
src = fetchurl {
|
||||
url = "http://catchenlab.life.illinois.edu/stacks/source/${pname}-${version}.tar.gz";
|
||||
sha256 = "046gmq8nzqy5v70ydqrhib2aiyrlja3cljvd37w4qbd4ryj3jr0w";
|
||||
sha256 = "1ha1avkh6rqqvsy4k42336a2gj14y1jq19a2x8cjmiidi9l3s29h";
|
||||
};
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "verilator-${version}";
|
||||
version = "4.012";
|
||||
version = "4.014";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.veripool.org/ftp/${name}.tgz";
|
||||
sha256 = "0xzndazp1g5qxzfirgiv219zmx7qyxfn7wsqbfq93cp1m6rp4pai";
|
||||
sha256 = "1srk9a03hbq8rdp4mma817aiq61c2hbrs66qv25zj3dfnfqigxgd";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue