Merge staging-next into staging

This commit is contained in:
Frederik Rietdijk 2019-03-23 09:20:09 +01:00
commit 23e431387b
117 changed files with 4354 additions and 1762 deletions

View File

@ -11,11 +11,10 @@
- [ ] macOS - [ ] macOS
- [ ] other Linux distributions - [ ] other Linux distributions
- [ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests)) - [ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
- [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nox --run "nox-review wip"` - [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nix-review --run "nix-review wip"`
- [ ] Tested execution of all binary files (usually in `./result/bin/`) - [ ] Tested execution of all binary files (usually in `./result/bin/`)
- [ ] Determined the impact on package closure size (by running `nix path-info -S` before and after) - [ ] Determined the impact on package closure size (by running `nix path-info -S` before and after)
- [ ] Assured whether relevant documentation is up to date - [ ] Assured whether relevant documentation is up to date
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md). - [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md).
--- ---

View File

@ -188,25 +188,24 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
```nix ```nix
{ lib, buildPythonPackage, fetchPypi }: { lib, buildPythonPackage, fetchPypi }:
toolz = buildPythonPackage rec { buildPythonPackage rec {
pname = "toolz"; pname = "toolz";
version = "0.7.4"; version = "0.7.4";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd"; sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
};
doCheck = false;
meta = with lib; {
homepage = https://github.com/pytoolz/toolz;
description = "List processing tools and functional utilities";
license = licenses.bsd3;
maintainers = with maintainers; [ fridh ];
};
}; };
}
doCheck = false;
meta = with lib; {
homepage = https://github.com/pytoolz/toolz;
description = "List processing tools and functional utilities";
license = licenses.bsd3;
maintainers = with maintainers; [ fridh ];
};
};
``` ```
What happens here? The function `buildPythonPackage` is called and as argument What happens here? The function `buildPythonPackage` is called and as argument

View File

@ -189,14 +189,14 @@ $ git rebase --onto nixos-unstable BASEBRANCH FETCH_HEAD <co
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <link xlink:href="https://github.com/madjar/nox">nox</link> tool can The <link xlink:href="https://github.com/Mic92/nix-review">nix-review</link>
be used to review a pull request content in a single command. It doesn't tool can be used to review a pull request content in a single command.
rebase on a channel branch so it might trigger multiple source builds.
<varname>PRNUMBER</varname> should be replaced by the number at the end <varname>PRNUMBER</varname> should be replaced by the number at the end
of the pull request title. of the pull request title. You can also provide the full github pull
request url.
</para> </para>
<screen> <screen>
$ nix-shell -p nox --run "nox-review -k pr PRNUMBER" $ nix-shell -p nix-review --run "nix-review pr PRNUMBER"
</screen> </screen>
</listitem> </listitem>
</itemizedlist> </itemizedlist>

View File

@ -351,26 +351,26 @@ Additional information.
</section> </section>
<section xml:id="submitting-changes-tested-compilation"> <section xml:id="submitting-changes-tested-compilation">
<title>Tested compilation of all pkgs that depend on this change using <command>nox-review</command></title> <title>Tested compilation of all pkgs that depend on this change using <command>nix-review</command></title>
<para> <para>
If you are updating a package's version, you can use nox to make sure all If you are updating a package's version, you can use nix-review to make sure all
packages that depend on the updated package still compile correctly. This packages that depend on the updated package still compile correctly.
can be done using the nox utility. The <command>nox-review</command> The <command>nix-review</command> utility can look for and build all dependencies
utility can look for and build all dependencies either based on uncommited either based on uncommited changes with the <literal>wip</literal> option or
changes with the <literal>wip</literal> option or specifying a github pull specifying a github pull request number.
request number.
</para> </para>
<para> <para>
review uncommitted changes: review changes from pull request number 12345:
<screen>nix-shell -p nox --run "nox-review wip"</screen> <screen>nix-shell -p nix-review --run "nix-review pr 12345"</screen>
</para> </para>
<para> <para>
review changes from pull request number 12345: review uncommitted changes:
<screen>nix-shell -p nox --run "nox-review pr 12345"</screen> <screen>nix-shell -p nix-review --run "nix-review wip"</screen>
</para> </para>
</section> </section>
<section xml:id="submitting-changes-tested-execution"> <section xml:id="submitting-changes-tested-execution">

View File

@ -1588,6 +1588,11 @@
github = "fdns"; github = "fdns";
name = "Felipe Espinoza"; name = "Felipe Espinoza";
}; };
ffinkdevs = {
email = "fink@h0st.space";
github = "ffinkdevs";
name = "Fabian Fink";
};
fgaz = { fgaz = {
email = "fgaz@fgaz.me"; email = "fgaz@fgaz.me";
github = "fgaz"; github = "fgaz";
@ -1770,6 +1775,11 @@
github = "Gerschtli"; github = "Gerschtli";
name = "Tobias Happ"; name = "Tobias Happ";
}; };
ggpeti = {
email = "ggpeti@gmail.com";
github = "ggpeti";
name = "Peter Ferenczy";
};
gilligan = { gilligan = {
email = "tobias.pflug@gmail.com"; email = "tobias.pflug@gmail.com";
github = "gilligan"; github = "gilligan";

View File

@ -6,13 +6,14 @@ debug: generated manual-combined.xml
manual-combined.xml: generated *.xml **/*.xml manual-combined.xml: generated *.xml **/*.xml
rm -f ./manual-combined.xml rm -f ./manual-combined.xml
nix-shell --packages xmloscopy \ nix-shell --pure -Q --packages xmloscopy \
--run "xmloscopy --docbook5 ./manual.xml ./manual-combined.xml" --run "xmloscopy --docbook5 ./manual.xml ./manual-combined.xml"
.PHONY: format .PHONY: format
format: format:
find ../../ -iname '*.xml' -type f -print0 | xargs -0 -I{} -n1 \ nix-shell --pure -Q --packages xmlformat \
xmlformat --config-file "../xmlformat.conf" -i {} --run "find ../../ -iname '*.xml' -type f -print0 | xargs -0 -I{} -n1 \
xmlformat --config-file '../xmlformat.conf' -i {}"
.PHONY: fix-misc-xml .PHONY: fix-misc-xml
fix-misc-xml: fix-misc-xml:

View File

@ -200,8 +200,9 @@ swapDevices = [ { device = "/dev/disk/by-label/swap"; } ];
<xref linkend="opt-services.postgresql.package"/> = pkgs.postgresql_10; <xref linkend="opt-services.postgresql.package"/> = pkgs.postgresql_10;
</programlisting> </programlisting>
The latter option definition changes the default PostgreSQL package used The latter option definition changes the default PostgreSQL package used
by NixOSs PostgreSQL service to 10.x. For more information on packages, by NixOSs PostgreSQL service to 10.x. For more information on
including how to add new ones, see <xref linkend="sec-custom-packages"/>. packages, including how to add new ones, see
<xref linkend="sec-custom-packages"/>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -4,15 +4,13 @@
version="5.0" version="5.0"
xml:id="sec-kubernetes"> xml:id="sec-kubernetes">
<title>Kubernetes</title> <title>Kubernetes</title>
<para> <para>
The NixOS Kubernetes module is a collective term for a handful of The NixOS Kubernetes module is a collective term for a handful of individual
individual submodules implementing the Kubernetes cluster components. submodules implementing the Kubernetes cluster components.
</para> </para>
<para> <para>
There are generally two ways of enabling Kubernetes on NixOS. There are generally two ways of enabling Kubernetes on NixOS. One way is to
One way is to enable and configure cluster components appropriately by hand: enable and configure cluster components appropriately by hand:
<programlisting> <programlisting>
services.kubernetes = { services.kubernetes = {
apiserver.enable = true; apiserver.enable = true;
@ -33,95 +31,82 @@ services.kubernetes = {
<programlisting> <programlisting>
<xref linkend="opt-services.kubernetes.roles"/> = [ "node" ]; <xref linkend="opt-services.kubernetes.roles"/> = [ "node" ];
</programlisting> </programlisting>
Assigning both the master and node roles is usable if you want a single Assigning both the master and node roles is usable if you want a single node
node Kubernetes cluster for dev or testing purposes: Kubernetes cluster for dev or testing purposes:
<programlisting> <programlisting>
<xref linkend="opt-services.kubernetes.roles"/> = [ "master" "node" ]; <xref linkend="opt-services.kubernetes.roles"/> = [ "master" "node" ];
</programlisting> </programlisting>
Note: Assigning either role will also default both Note: Assigning either role will also default both
<xref linkend="opt-services.kubernetes.flannel.enable"/> and <xref linkend="opt-services.kubernetes.flannel.enable"/> and
<xref linkend="opt-services.kubernetes.easyCerts"/> to true. <xref linkend="opt-services.kubernetes.easyCerts"/> to true. This sets up
This sets up flannel as CNI and activates automatic PKI bootstrapping. flannel as CNI and activates automatic PKI bootstrapping.
</para> </para>
<para> <para>
As of kubernetes 1.10.X it has been deprecated to open As of kubernetes 1.10.X it has been deprecated to open non-tls-enabled ports
non-tls-enabled ports on kubernetes components. Thus, from NixOS 19.03 all on kubernetes components. Thus, from NixOS 19.03 all plain HTTP ports have
plain HTTP ports have been disabled by default. been disabled by default. While opening insecure ports is still possible, it
While opening insecure ports is still possible, it is recommended not to is recommended not to bind these to other interfaces than loopback. To
bind these to other interfaces than loopback. re-enable the insecure port on the apiserver, see options:
<xref linkend="opt-services.kubernetes.apiserver.insecurePort"/> and
To re-enable the insecure port on the apiserver, see options: <xref linkend="opt-services.kubernetes.apiserver.insecureBindAddress"/>
<xref linkend="opt-services.kubernetes.apiserver.insecurePort"/>
and
<xref linkend="opt-services.kubernetes.apiserver.insecureBindAddress"/>
</para> </para>
<note> <note>
<para> <para>
As of NixOS 19.03, it is mandatory to configure: As of NixOS 19.03, it is mandatory to configure:
<xref linkend="opt-services.kubernetes.masterAddress"/>. <xref linkend="opt-services.kubernetes.masterAddress"/>. The masterAddress
The masterAddress must be resolveable and routeable by all cluster nodes. must be resolveable and routeable by all cluster nodes. In single node
In single node clusters, this can be set to <literal>localhost</literal>. clusters, this can be set to <literal>localhost</literal>.
</para> </para>
</note> </note>
<para> <para>
Role-based access control (RBAC) authorization mode is enabled by default. Role-based access control (RBAC) authorization mode is enabled by default.
This means that anonymous requests to the apiserver secure port will This means that anonymous requests to the apiserver secure port will
expectedly cause a permission denied error. All cluster components must expectedly cause a permission denied error. All cluster components must
therefore be configured with x509 certificates for two-way tls communication. therefore be configured with x509 certificates for two-way tls communication.
The x509 certificate subject section determines the roles and permissions The x509 certificate subject section determines the roles and permissions
granted by the apiserver to perform clusterwide or namespaced operations. granted by the apiserver to perform clusterwide or namespaced operations. See
See also: also:
<link <link
xlink:href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/"> xlink:href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/">
Using RBAC Authorization</link>. Using RBAC Authorization</link>.
</para> </para>
<para>
The NixOS kubernetes module provides an option for automatic certificate
bootstrapping and configuration,
<xref linkend="opt-services.kubernetes.easyCerts"/>.
The PKI bootstrapping process involves setting up a certificate authority
(CA) daemon (cfssl) on the kubernetes master node. cfssl generates a CA-cert
for the cluster, and uses the CA-cert for signing subordinate certs issued to
each of the cluster components. Subsequently, the certmgr daemon monitors
active certificates and renews them when needed. For single node Kubernetes
clusters, setting <xref linkend="opt-services.kubernetes.easyCerts"/> = true
is sufficient and no further action is required. For joining extra node
machines to an existing cluster on the other hand, establishing initial trust
is mandatory.
</para>
<para> <para>
To add new nodes to the cluster: The NixOS kubernetes module provides an option for automatic certificate
On any (non-master) cluster node where bootstrapping and configuration,
<xref linkend="opt-services.kubernetes.easyCerts"/> is enabled, the helper <xref linkend="opt-services.kubernetes.easyCerts"/>. The PKI bootstrapping
script <literal>nixos-kubernetes-node-join</literal> is available on PATH. process involves setting up a certificate authority (CA) daemon (cfssl) on
Given a token on stdin, it will copy the token to the kubernetes the kubernetes master node. cfssl generates a CA-cert for the cluster, and
secrets directory and restart the certmgr service. As requested uses the CA-cert for signing subordinate certs issued to each of the cluster
certificates are issued, the script will restart kubernetes cluster components. Subsequently, the certmgr daemon monitors active certificates and
components as needed for them to pick up new keypairs. renews them when needed. For single node Kubernetes clusters, setting
<xref linkend="opt-services.kubernetes.easyCerts"/> = true is sufficient and
no further action is required. For joining extra node machines to an existing
cluster on the other hand, establishing initial trust is mandatory.
</para>
<para>
To add new nodes to the cluster: On any (non-master) cluster node where
<xref linkend="opt-services.kubernetes.easyCerts"/> is enabled, the helper
script <literal>nixos-kubernetes-node-join</literal> is available on PATH.
Given a token on stdin, it will copy the token to the kubernetes secrets
directory and restart the certmgr service. As requested certificates are
issued, the script will restart kubernetes cluster components as needed for
them to pick up new keypairs.
</para> </para>
<note> <note>
<para> <para>
Multi-master (HA) clusters are not supported by the easyCerts module. Multi-master (HA) clusters are not supported by the easyCerts module.
</para> </para>
</note> </note>
<para> <para>
In order to interact with an RBAC-enabled cluster as an administrator, one In order to interact with an RBAC-enabled cluster as an administrator, one
needs to have cluster-admin privileges. By default, when easyCerts is needs to have cluster-admin privileges. By default, when easyCerts is
enabled, a cluster-admin kubeconfig file is generated and linked into enabled, a cluster-admin kubeconfig file is generated and linked into
<literal>/etc/kubernetes/cluster-admin.kubeconfig</literal> as determined by <literal>/etc/kubernetes/cluster-admin.kubeconfig</literal> as determined by
<xref linkend="opt-services.kubernetes.pki.etcClusterAdminKubeconfig"/>. <xref linkend="opt-services.kubernetes.pki.etcClusterAdminKubeconfig"/>.
<literal>export KUBECONFIG=/etc/kubernetes/cluster-admin.kubeconfig</literal> <literal>export KUBECONFIG=/etc/kubernetes/cluster-admin.kubeconfig</literal>
will make kubectl use this kubeconfig to access and authenticate the cluster. will make kubectl use this kubeconfig to access and authenticate the cluster.
The cluster-admin kubeconfig references an auto-generated keypair owned by The cluster-admin kubeconfig references an auto-generated keypair owned by
root. Thus, only root on the kubernetes master may obtain cluster-admin root. Thus, only root on the kubernetes master may obtain cluster-admin
rights by means of this file. rights by means of this file.
</para> </para>
</chapter> </chapter>

View File

@ -5,31 +5,34 @@
xml:id="module-services-matrix"> xml:id="module-services-matrix">
<title>Matrix</title> <title>Matrix</title>
<para> <para>
<link xlink:href="https://matrix.org/">Matrix</link> <link xlink:href="https://matrix.org/">Matrix</link> is an open standard for
is an open standard for interoperable, decentralised, real-time communication over IP. interoperable, decentralised, real-time communication over IP. It can be used
It can be used to power Instant Messaging, VoIP/WebRTC signalling, Internet of Things communication - to power Instant Messaging, VoIP/WebRTC signalling, Internet of Things
or anywhere you need a standard HTTP API for publishing and subscribing to data whilst tracking the conversation history. communication - or anywhere you need a standard HTTP API for publishing and
subscribing to data whilst tracking the conversation history.
</para> </para>
<para> <para>
This chapter will show you how to set up your own, self-hosted Matrix homeserver using the Synapse reference homeserver, This chapter will show you how to set up your own, self-hosted Matrix
and how to serve your own copy of the Riot web client. homeserver using the Synapse reference homeserver, and how to serve your own
See the <link xlink:href="https://matrix.org/docs/projects/try-matrix-now.html">Try Matrix Now!</link> copy of the Riot web client. See the
overview page for links to Riot Apps for Android and iOS, desktop clients, <link xlink:href="https://matrix.org/docs/projects/try-matrix-now.html">Try
as well as bridges to other networks and other projects around Matrix. Matrix Now!</link> overview page for links to Riot Apps for Android and iOS,
desktop clients, as well as bridges to other networks and other projects
around Matrix.
</para> </para>
<section xml:id="module-services-matrix-synapse"> <section xml:id="module-services-matrix-synapse">
<title>Synapse Homeserver</title> <title>Synapse Homeserver</title>
<para> <para>
<link xlink:href="https://github.com/matrix-org/synapse">Synapse</link> <link xlink:href="https://github.com/matrix-org/synapse">Synapse</link> is
is the reference homeserver implementation of Matrix from the core development team at matrix.org. the reference homeserver implementation of Matrix from the core development
The following configuration example will set up a synapse server for the <literal>example.org</literal> team at matrix.org. The following configuration example will set up a
domain, served from the host <literal>myhostname.example.org</literal>. synapse server for the <literal>example.org</literal> domain, served from
For more information, please refer to the the host <literal>myhostname.example.org</literal>. For more information,
please refer to the
<link xlink:href="https://github.com/matrix-org/synapse#synapse-installation"> <link xlink:href="https://github.com/matrix-org/synapse#synapse-installation">
installation instructions of Synapse installation instructions of Synapse </link>.
</link>. <programlisting>
<programlisting>
let let
fqdn = fqdn =
let let
@ -116,28 +119,29 @@
}; };
</programlisting> </programlisting>
</para> </para>
<para> <para>
If the <code>A</code> and <code>AAAA</code> DNS records on <literal>example.org</literal> If the <code>A</code> and <code>AAAA</code> DNS records on
do not point on the same host as the records for <code>myhostname.example.org</code>, <literal>example.org</literal> do not point on the same host as the records
you can easily move the <code>/.well-known</code> virtualHost section of the code for <code>myhostname.example.org</code>, you can easily move the
to the host that is serving <literal>example.org</literal>, <code>/.well-known</code> virtualHost section of the code to the host that
while the rest stays on <literal>myhostname.example.org</literal> is serving <literal>example.org</literal>, while the rest stays on
with no other changes required. <literal>myhostname.example.org</literal> with no other changes required.
This pattern also allows to seamlessly move the homeserver from <literal>myhostname.example.org</literal> This pattern also allows to seamlessly move the homeserver from
to <literal>myotherhost.example.org</literal> by only changing the <code>/.well-known</code> redirection target. <literal>myhostname.example.org</literal> to
<literal>myotherhost.example.org</literal> by only changing the
<code>/.well-known</code> redirection target.
</para> </para>
<para> <para>
If you want to run a server with public registration by anybody, If you want to run a server with public registration by anybody, you can
you can then enable then enable <option>services.matrix-synapse.enable_registration =
<option>services.matrix-synapse.enable_registration = true;</option>. true;</option>. Otherwise, or you can generate a registration secret with
Otherwise, or you can generate a registration secret with <command>pwgen -s 64 1</command> <command>pwgen -s 64 1</command> and set it with
and set it with <option>services.matrix-synapse.registration_shared_secret</option>. To
<option>services.matrix-synapse.registration_shared_secret</option>. create a new user or admin, run the following after you have set the secret
To create a new user or admin, and have rebuilt NixOS:
run the following after you have set the secret and have rebuilt NixOS: <programlisting>
<programlisting>
$ nix run nixpkgs.matrix-synapse $ nix run nixpkgs.matrix-synapse
$ register_new_matrix_user -k &lt;your-registration-shared-secret&gt; http://localhost:8008 $ register_new_matrix_user -k &lt;your-registration-shared-secret&gt; http://localhost:8008
New user localpart: &lt;your-username&gt; New user localpart: &lt;your-username&gt;
@ -147,31 +151,32 @@
Success! Success!
</programlisting> </programlisting>
In the example, this would create a user with the Matrix Identifier In the example, this would create a user with the Matrix Identifier
<literal>@your-username:example.org</literal>. <literal>@your-username:example.org</literal>. Note that the registration
Note that the registration secret ends up in the nix store and therefore is world-readable secret ends up in the nix store and therefore is world-readable by any user
by any user on your machine, so it makes sense to only temporarily activate the on your machine, so it makes sense to only temporarily activate the
<option>registration_shared_secret</option> option until a better solution for NixOS is in place. <option>registration_shared_secret</option> option until a better solution
for NixOS is in place.
</para> </para>
</section> </section>
<section xml:id="module-services-matrix-riot-web"> <section xml:id="module-services-matrix-riot-web">
<title>Riot Web Client</title> <title>Riot Web Client</title>
<para>
<link xlink:href="https://github.com/vector-im/riot-web/">Riot Web</link>
is the reference web client for Matrix and developed by the core team at matrix.org.
The following snippet can be optionally added to the code before to complete the synapse
installation with a web client served at
<code>https://riot.myhostname.example.org</code> and <code>https://riot.example.org</code>.
Alternatively, you can use the hosted copy at
<link xlink:href="https://riot.im/app">https://riot.im/app</link>,
or use other web clients or native client applications.
Due to the <literal>/.well-known</literal> urls set up done above,
many clients should fill in the required connection details automatically
when you enter your Matrix Identifier.
See <link xlink:href="https://matrix.org/docs/projects/try-matrix-now.html">Try Matrix Now!</link>
for a list of existing clients and their supported featureset.
<programlisting> <para>
<link xlink:href="https://github.com/vector-im/riot-web/">Riot Web</link> is
the reference web client for Matrix and developed by the core team at
matrix.org. The following snippet can be optionally added to the code before
to complete the synapse installation with a web client served at
<code>https://riot.myhostname.example.org</code> and
<code>https://riot.example.org</code>. Alternatively, you can use the hosted
copy at <link xlink:href="https://riot.im/app">https://riot.im/app</link>,
or use other web clients or native client applications. Due to the
<literal>/.well-known</literal> urls set up done above, many clients should
fill in the required connection details automatically when you enter your
Matrix Identifier. See
<link xlink:href="https://matrix.org/docs/projects/try-matrix-now.html">Try
Matrix Now!</link> for a list of existing clients and their supported
featureset.
<programlisting>
services.nginx.virtualHosts."riot.${fqdn}" = { services.nginx.virtualHosts."riot.${fqdn}" = {
enableACME = true; enableACME = true;
forceSSL = true; forceSSL = true;
@ -183,15 +188,16 @@
}; };
</programlisting> </programlisting>
</para> </para>
<para> <para>
Note that the Riot developers do not recommend running Riot and your Matrix homeserver Note that the Riot developers do not recommend running Riot and your Matrix
on the same fully-qualified domain name for security reasons. homeserver on the same fully-qualified domain name for security reasons. In
In the example, this means that you should not reuse the <literal>myhostname.example.org</literal> the example, this means that you should not reuse the
virtualHost to also serve Riot, but instead serve it on a different subdomain, <literal>myhostname.example.org</literal> virtualHost to also serve Riot,
like <literal>riot.example.org</literal> in the example. but instead serve it on a different subdomain, like
See the <literal>riot.example.org</literal> in the example. See the
<link xlink:href="https://github.com/vector-im/riot-web#important-security-note">Riot Important Security Notes</link> <link xlink:href="https://github.com/vector-im/riot-web#important-security-note">Riot
for more information on this subject. Important Security Notes</link> for more information on this subject.
</para> </para>
</section> </section>
</chapter> </chapter>

View File

@ -112,9 +112,8 @@ true
$ nixos-option <xref linkend="opt-boot.kernelModules"/> $ nixos-option <xref linkend="opt-boot.kernelModules"/>
[ "tun" "ipv6" "loop" <replaceable>...</replaceable> ] [ "tun" "ipv6" "loop" <replaceable>...</replaceable> ]
</screen> </screen>
Interactive exploration of the configuration is possible using Interactive exploration of the configuration is possible using <command>nix
<command>nix repl</command>, a read-eval-print loop for Nix expressions. repl</command>, a read-eval-print loop for Nix expressions. A typical use:
A typical use:
<screen> <screen>
$ nix repl '&lt;nixpkgs/nixos>' $ nix repl '&lt;nixpkgs/nixos>'
@ -127,11 +126,10 @@ nix-repl> map (x: x.hostName) config.<xref linkend="opt-services.httpd.virtualHo
</para> </para>
<para> <para>
While abstracting your configuration, you may find it useful to generate While abstracting your configuration, you may find it useful to generate
modules using code, instead of writing files. The example modules using code, instead of writing files. The example below would have
below would have the same effect as importing a file which sets those the same effect as importing a file which sets those options.
options. <screen>
<screen>
{ config, pkgs, ... }: { config, pkgs, ... }:
let netConfig = { hostName }: { let netConfig = { hostName }: {
@ -143,5 +141,5 @@ nix-repl> map (x: x.hostName) config.<xref linkend="opt-services.httpd.virtualHo
{ imports = [ (netConfig "nixos.localdomain") ]; } { imports = [ (netConfig "nixos.localdomain") ]; }
</screen> </screen>
</para> </para>
</section> </section>

View File

@ -12,14 +12,14 @@
That is to say, expected usage is to add them to the imports list of your That is to say, expected usage is to add them to the imports list of your
<filename>/etc/configuration.nix</filename> as such: <filename>/etc/configuration.nix</filename> as such:
</para> </para>
<programlisting> <programlisting>
imports = [ imports = [
&lt;nixpkgs/nixos/modules/profiles/profile-name.nix&gt; &lt;nixpkgs/nixos/modules/profiles/profile-name.nix&gt;
]; ];
</programlisting> </programlisting>
<para> <para>
Even if some of these profiles seem only useful in the context of Even if some of these profiles seem only useful in the context of install
install media, many are actually intended to be used in real installs. media, many are actually intended to be used in real installs.
</para> </para>
<para> <para>
What follows is a brief explanation on the purpose and use-case for each What follows is a brief explanation on the purpose and use-case for each

View File

@ -1,15 +1,16 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-all-hardware"> xml:id="sec-profile-all-hardware">
<title>All Hardware</title> <title>All Hardware</title>
<para> <para>
Enables all hardware supported by NixOS: i.e., all firmware is Enables all hardware supported by NixOS: i.e., all firmware is included, and
included, and all devices from which one may boot are enabled in the initrd. all devices from which one may boot are enabled in the initrd. Its primary
Its primary use is in the NixOS installation CDs. use is in the NixOS installation CDs.
</para> </para>
<para> <para>
The enabled kernel modules include support for SATA and PATA, SCSI The enabled kernel modules include support for SATA and PATA, SCSI
(partially), USB, Firewire (untested), Virtio (QEMU, KVM, etc.), VMware, and (partially), USB, Firewire (untested), Virtio (QEMU, KVM, etc.), VMware, and

View File

@ -1,15 +1,15 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-base"> xml:id="sec-profile-base">
<title>Base</title> <title>Base</title>
<para> <para>
Defines the software packages included in the "minimal" Defines the software packages included in the "minimal" installation CD. It
installation CD. It installs several utilities useful in a simple recovery or installs several utilities useful in a simple recovery or install media, such
install media, such as a text-mode web browser, and tools for manipulating as a text-mode web browser, and tools for manipulating block devices,
block devices, networking, hardware diagnostics, and filesystems (with their networking, hardware diagnostics, and filesystems (with their respective
respective kernel modules). kernel modules).
</para> </para>
</section> </section>

View File

@ -1,14 +1,14 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-clone-config"> xml:id="sec-profile-clone-config">
<title>Clone Config</title> <title>Clone Config</title>
<para> <para>
This profile is used in installer images. This profile is used in installer images. It provides an editable
It provides an editable configuration.nix that imports all the modules that configuration.nix that imports all the modules that were also used when
were also used when creating the image in the first place. creating the image in the first place. As a result it allows users to edit
As a result it allows users to edit and rebuild the live-system. and rebuild the live-system.
</para> </para>
</section> </section>

View File

@ -1,13 +1,15 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-demo"> xml:id="sec-profile-demo">
<title>Demo</title> <title>Demo</title>
<para> <para>
This profile just enables a <systemitem class="username">demo</systemitem> user, with password <literal>demo</literal>, uid <literal>1000</literal>, <systemitem class="groupname">wheel</systemitem> This profile just enables a <systemitem class="username">demo</systemitem>
group and <link linkend="opt-services.xserver.displayManager.sddm.autoLogin"> user, with password <literal>demo</literal>, uid <literal>1000</literal>,
autologin in the SDDM display manager</link>. <systemitem class="groupname">wheel</systemitem> group and
<link linkend="opt-services.xserver.displayManager.sddm.autoLogin"> autologin
in the SDDM display manager</link>.
</para> </para>
</section> </section>

View File

@ -1,15 +1,16 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-docker-container"> xml:id="sec-profile-docker-container">
<title>Docker Container</title> <title>Docker Container</title>
<para> <para>
This is the profile from which the Docker images are generated. It prepares a This is the profile from which the Docker images are generated. It prepares a
working system by importing the <link linkend="sec-profile-minimal">Minimal</link> and working system by importing the
<link linkend="sec-profile-clone-config">Clone Config</link> profiles, and setting appropriate <link linkend="sec-profile-minimal">Minimal</link> and
configuration options that are useful inside a container context, like <link linkend="sec-profile-clone-config">Clone Config</link> profiles, and
<xref linkend="opt-boot.isContainer"/>. setting appropriate configuration options that are useful inside a container
context, like <xref linkend="opt-boot.isContainer"/>.
</para> </para>
</section> </section>

View File

@ -1,20 +1,21 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-graphical"> xml:id="sec-profile-graphical">
<title>Graphical</title> <title>Graphical</title>
<para> <para>
Defines a NixOS configuration with the Plasma 5 desktop. It's used by the Defines a NixOS configuration with the Plasma 5 desktop. It's used by the
graphical installation CD. graphical installation CD.
</para> </para>
<para> <para>
It sets <xref linkend="opt-services.xserver.enable"/>, It sets <xref linkend="opt-services.xserver.enable"/>,
<xref linkend="opt-services.xserver.displayManager.sddm.enable"/>, <xref linkend="opt-services.xserver.displayManager.sddm.enable"/>,
<xref linkend="opt-services.xserver.desktopManager.plasma5.enable"/> ( <xref linkend="opt-services.xserver.desktopManager.plasma5.enable"/> (
<link linkend="opt-services.xserver.desktopManager.plasma5.enableQt4Support"> <link linkend="opt-services.xserver.desktopManager.plasma5.enableQt4Support">
without Qt4 Support</link>), and without Qt4 Support</link>), and
<xref linkend="opt-services.xserver.libinput.enable"/> to true. It also <xref linkend="opt-services.xserver.libinput.enable"/> to true. It also
includes glxinfo and firefox in the system packages list. includes glxinfo and firefox in the system packages list.
</para> </para>

View File

@ -1,22 +1,24 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-hardened"> xml:id="sec-profile-hardened">
<title>Hardened</title> <title>Hardened</title>
<para> <para>
A profile with most (vanilla) hardening options enabled by default, A profile with most (vanilla) hardening options enabled by default,
potentially at the cost of features and performance. potentially at the cost of features and performance.
</para> </para>
<para> <para>
This includes a hardened kernel, and limiting the system information This includes a hardened kernel, and limiting the system information
available to processes through the <filename>/sys</filename> and available to processes through the <filename>/sys</filename> and
<filename>/proc</filename> filesystems. It also disables the User Namespaces <filename>/proc</filename> filesystems. It also disables the User Namespaces
feature of the kernel, which stops Nix from being able to build anything feature of the kernel, which stops Nix from being able to build anything
(this particular setting can be overriden via (this particular setting can be overriden via
<xref linkend="opt-security.allowUserNamespaces"/>). See the <literal <xref linkend="opt-security.allowUserNamespaces"/>). See the
<literal
xlink:href="https://github.com/nixos/nixpkgs/tree/master/nixos/modules/profiles/hardened.nix"> xlink:href="https://github.com/nixos/nixpkgs/tree/master/nixos/modules/profiles/hardened.nix">
profile source</literal> for further detail on which settings are altered. profile source</literal> for further detail on which settings are altered.
</para> </para>
</section> </section>

View File

@ -1,18 +1,19 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-headless"> xml:id="sec-profile-headless">
<title>Headless</title> <title>Headless</title>
<para> <para>
Common configuration for headless machines (e.g., Amazon EC2 instances). Common configuration for headless machines (e.g., Amazon EC2 instances).
</para> </para>
<para> <para>
Disables <link linkend="opt-sound.enable">sound</link>, Disables <link linkend="opt-sound.enable">sound</link>,
<link linkend="opt-boot.vesa">vesa</link>, serial consoles, <link linkend="opt-boot.vesa">vesa</link>, serial consoles,
<link linkend="opt-systemd.enableEmergencyMode">emergency mode</link>, <link linkend="opt-systemd.enableEmergencyMode">emergency mode</link>,
<link linkend="opt-boot.loader.grub.splashImage">grub splash images</link> and <link linkend="opt-boot.loader.grub.splashImage">grub splash images</link>
configures the kernel to reboot automatically on panic. and configures the kernel to reboot automatically on panic.
</para> </para>
</section> </section>

View File

@ -1,31 +1,34 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-installation-device"> xml:id="sec-profile-installation-device">
<title>Installation Device</title> <title>Installation Device</title>
<para> <para>
Provides a basic configuration for installation devices like CDs. This means Provides a basic configuration for installation devices like CDs. This means
enabling hardware scans, using the <link linkend="sec-profile-clone-config"> enabling hardware scans, using the <link linkend="sec-profile-clone-config">
Clone Config profile</link> to guarantee Clone Config profile</link> to guarantee
<filename>/etc/nixos/configuration.nix</filename> exists (for <filename>/etc/nixos/configuration.nix</filename> exists (for
<command>nixos-rebuild</command> to work), a copy of the Nixpkgs channel <command>nixos-rebuild</command> to work), a copy of the Nixpkgs channel
snapshot used to create the install media. snapshot used to create the install media.
</para> </para>
<para> <para>
Additionally, documentation for <link linkend="opt-documentation.enable"> Additionally, documentation for <link linkend="opt-documentation.enable">
Nixpkgs</link> and <link linkend="opt-documentation.nixos.enable">NixOS Nixpkgs</link> and <link linkend="opt-documentation.nixos.enable">NixOS
</link> are forcefully enabled (to override the </link> are forcefully enabled (to override the
<link linkend="sec-profile-minimal">Minimal profile</link> preference); the <link linkend="sec-profile-minimal">Minimal profile</link> preference); the
NixOS manual is shown automatically on TTY 8, sudo and udisks are disabled. NixOS manual is shown automatically on TTY 8, sudo and udisks are disabled.
Autologin is enabled as root. Autologin is enabled as root.
</para> </para>
<para> <para>
A message is shown to the user to start a display manager if needed, A message is shown to the user to start a display manager if needed, ssh with
ssh with <xref linkend="opt-services.openssh.permitRootLogin"/> are enabled (but <xref linkend="opt-services.openssh.permitRootLogin"/> are enabled (but
doesn't autostart). WPA Supplicant is also enabled without autostart. doesn't autostart). WPA Supplicant is also enabled without autostart.
</para> </para>
<para> <para>
Finally, vim is installed, root is set to not have a password, the kernel is Finally, vim is installed, root is set to not have a password, the kernel is
made more silent for remote public IP installs, and several settings are made more silent for remote public IP installs, and several settings are

View File

@ -1,16 +1,16 @@
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-profile-minimal"> xml:id="sec-profile-minimal">
<title>Minimal</title> <title>Minimal</title>
<para> <para>
This profile defines a small NixOS configuration. It does not contain any This profile defines a small NixOS configuration. It does not contain any
graphical stuff. It's a very short file that enables graphical stuff. It's a very short file that enables
<link linkend="opt-environment.noXlibs">noXlibs</link>, sets <link linkend="opt-environment.noXlibs">noXlibs</link>, sets
<link linkend="opt-i18n.supportedLocales">i18n.supportedLocales</link> <link linkend="opt-i18n.supportedLocales">i18n.supportedLocales</link> to
to only support the user-selected locale, only support the user-selected locale,
<link linkend="opt-documentation.enable">disables packages' documentation <link linkend="opt-documentation.enable">disables packages' documentation
</link>, and <link linkend="opt-sound.enable">disables sound</link>. </link>, and <link linkend="opt-sound.enable">disables sound</link>.
</para> </para>

View File

@ -4,10 +4,12 @@
version="5.0" version="5.0"
xml:id="sec-profile-qemu-guest"> xml:id="sec-profile-qemu-guest">
<title>QEMU Guest</title> <title>QEMU Guest</title>
<para> <para>
This profile contains common configuration for virtual machines running under This profile contains common configuration for virtual machines running under
QEMU (using virtio). QEMU (using virtio).
</para> </para>
<para> <para>
It makes virtio modules available on the initrd, sets the system time from It makes virtio modules available on the initrd, sets the system time from
the hardware clock to work around a bug in qemu-kvm, and the hardware clock to work around a bug in qemu-kvm, and

View File

@ -28,11 +28,9 @@
Be aware that keys will be written to the nix store in plaintext! When no Be aware that keys will be written to the nix store in plaintext! When no
networks are set, it will default to using a configuration file at networks are set, it will default to using a configuration file at
<literal>/etc/wpa_supplicant.conf</literal>. You should edit this file <literal>/etc/wpa_supplicant.conf</literal>. You should edit this file
yourself to define wireless networks, WPA keys and so on (see yourself to define wireless networks, WPA keys and so on (see <citerefentry>
<citerefentry> <refentrytitle>wpa_supplicant.conf</refentrytitle>
<refentrytitle>wpa_supplicant.conf</refentrytitle> <manvolnum>5</manvolnum> </citerefentry>).
<manvolnum>5</manvolnum>
</citerefentry>).
</para> </para>
<para> <para>

View File

@ -35,8 +35,8 @@
</para> </para>
<para> <para>
NixOSs default <emphasis>display manager</emphasis> (the program that NixOSs default <emphasis>display manager</emphasis> (the program that
provides a graphical login prompt and manages the X server) is LightDM. You can provides a graphical login prompt and manages the X server) is LightDM. You
select an alternative one by picking one of the following lines: can select an alternative one by picking one of the following lines:
<programlisting> <programlisting>
<xref linkend="opt-services.xserver.displayManager.sddm.enable"/> = true; <xref linkend="opt-services.xserver.displayManager.sddm.enable"/> = true;
<xref linkend="opt-services.xserver.displayManager.slim.enable"/> = true; <xref linkend="opt-services.xserver.displayManager.slim.enable"/> = true;
@ -59,9 +59,16 @@
<screen> <screen>
# systemctl start display-manager.service # systemctl start display-manager.service
</screen> </screen>
</para>
<para>
On 64-bit systems, if you want OpenGL for 32-bit programs such as in Wine,
you should also set the following:
<programlisting>
<xref linkend="opt-hardware.opengl.driSupport32Bit"/> = true;
</programlisting>
</para> </para>
<simplesect xml:id="sec-x11-graphics-cards-nvidia"> <simplesect xml:id="sec-x11-graphics-cards-nvidia">
<title>NVIDIA Graphics Cards</title> <title>Proprietary NVIDIA drivers</title>
<para> <para>
NVIDIA provides a proprietary driver for its graphics cards that has better NVIDIA provides a proprietary driver for its graphics cards that has better
3D performance than the X.org drivers. It is not enabled by default because 3D performance than the X.org drivers. It is not enabled by default because
@ -71,6 +78,7 @@
</programlisting> </programlisting>
Or if you have an older card, you may have to use one of the legacy drivers: Or if you have an older card, you may have to use one of the legacy drivers:
<programlisting> <programlisting>
<xref linkend="opt-services.xserver.videoDrivers"/> = [ "nvidiaLegacy390" ];
<xref linkend="opt-services.xserver.videoDrivers"/> = [ "nvidiaLegacy340" ]; <xref linkend="opt-services.xserver.videoDrivers"/> = [ "nvidiaLegacy340" ];
<xref linkend="opt-services.xserver.videoDrivers"/> = [ "nvidiaLegacy304" ]; <xref linkend="opt-services.xserver.videoDrivers"/> = [ "nvidiaLegacy304" ];
<xref linkend="opt-services.xserver.videoDrivers"/> = [ "nvidiaLegacy173" ]; <xref linkend="opt-services.xserver.videoDrivers"/> = [ "nvidiaLegacy173" ];
@ -78,16 +86,9 @@
You may need to reboot after enabling this driver to prevent a clash with You may need to reboot after enabling this driver to prevent a clash with
other kernel modules. other kernel modules.
</para> </para>
<para>
On 64-bit systems, if you want full acceleration for 32-bit programs such as
Wine, you should also set the following:
<programlisting>
<xref linkend="opt-hardware.opengl.driSupport32Bit"/> = true;
</programlisting>
</para>
</simplesect> </simplesect>
<simplesect xml:id="sec-x11--graphics-cards-amd"> <simplesect xml:id="sec-x11--graphics-cards-amd">
<title>AMD Graphics Cards</title> <title>Proprietary AMD drivers</title>
<para> <para>
AMD provides a proprietary driver for its graphics cards that has better 3D AMD provides a proprietary driver for its graphics cards that has better 3D
performance than the X.org drivers. It is not enabled by default because performance than the X.org drivers. It is not enabled by default because
@ -99,11 +100,8 @@
other kernel modules. other kernel modules.
</para> </para>
<para> <para>
On 64-bit systems, if you want full acceleration for 32-bit programs such as Note: for recent AMD GPUs you most likely want to keep either the defaults
Wine, you should also set the following: or <literal>"amdgpu"</literal> (both free).
<programlisting>
<xref linkend="opt-hardware.opengl.driSupport32Bit"/> = true;
</programlisting>
</para> </para>
</simplesect> </simplesect>
<simplesect xml:id="sec-x11-touchpads"> <simplesect xml:id="sec-x11-touchpads">

View File

@ -77,10 +77,10 @@
Shared folders can be given a name and a path in the host system in the Shared folders can be given a name and a path in the host system in the
VirtualBox settings (Machine / Settings / Shared Folders, then click on the VirtualBox settings (Machine / Settings / Shared Folders, then click on the
"Add" icon). Add the following to the "Add" icon). Add the following to the
<literal>/etc/nixos/configuration.nix</literal> to auto-mount them. If you <literal>/etc/nixos/configuration.nix</literal> to auto-mount them. If you do
do not add <literal>"nofail"</literal>, the system will no boot properly. not add <literal>"nofail"</literal>, the system will no boot properly. The
The same goes for disabling <literal>rngd</literal> which is normally used same goes for disabling <literal>rngd</literal> which is normally used to get
to get randomness but this does not work in virtual machines. randomness but this does not work in virtual machines.
</para> </para>
<programlisting> <programlisting>

View File

@ -13,18 +13,18 @@
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<cmdsynopsis> <cmdsynopsis>
<command>nixos-generate-config</command> <command>nixos-generate-config</command>
<arg> <arg>
<option>--force</option> <option>--force</option>
</arg> </arg>
<arg> <arg>
<arg choice='plain'> <arg choice='plain'>
<option>--root</option> <option>--root</option>
</arg> </arg>
<replaceable>root</replaceable> <replaceable>root</replaceable>
</arg> </arg>
<arg> <arg>
<arg choice='plain'> <arg choice='plain'>
<option>--dir</option> <option>--dir</option>

View File

@ -13,39 +13,39 @@
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<cmdsynopsis> <cmdsynopsis>
<command>nixos-rebuild</command><group choice='req'> <command>nixos-rebuild</command><group choice='req'>
<arg choice='plain'> <arg choice='plain'>
<option>switch</option> <option>switch</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>boot</option> <option>boot</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>test</option> <option>test</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>build</option> <option>build</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>dry-build</option> <option>dry-build</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>dry-activate</option> <option>dry-activate</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>edit</option> <option>edit</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>build-vm</option> <option>build-vm</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>build-vm-with-bootloader</option> <option>build-vm-with-bootloader</option>
</arg> </arg>
@ -54,33 +54,33 @@
<arg> <arg>
<option>--upgrade</option> <option>--upgrade</option>
</arg> </arg>
<arg> <arg>
<option>--install-bootloader</option> <option>--install-bootloader</option>
</arg> </arg>
<arg> <arg>
<option>--no-build-nix</option> <option>--no-build-nix</option>
</arg> </arg>
<arg> <arg>
<option>--fast</option> <option>--fast</option>
</arg> </arg>
<arg> <arg>
<option>--rollback</option> <option>--rollback</option>
</arg> </arg>
<arg> <arg>
<option>--builders</option> <option>--builders</option> <replaceable>builder-spec</replaceable>
<replaceable>builder-spec</replaceable>
</arg> </arg>
<sbr /> <sbr />
<arg> <arg>
<group choice='req'> <group choice='req'>
<arg choice='plain'> <arg choice='plain'>
<option>--profile-name</option> <option>--profile-name</option>
</arg> </arg>
<arg choice='plain'> <arg choice='plain'>
<option>-p</option> <option>-p</option>
</arg> </arg>
@ -198,7 +198,7 @@ $ nix-build /path/to/nixpkgs/nixos -A system
</term> </term>
<listitem> <listitem>
<para> <para>
Opens <filename>configuration.nix</filename> in the default editor. Opens <filename>configuration.nix</filename> in the default editor.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -334,25 +334,23 @@ $ ./result/bin/run-*-vm
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term> <term>
<option>--builders</option> <option>--builders</option> <replaceable>builder-spec</replaceable>
<replaceable>builder-spec</replaceable> </term>
</term> <listitem>
<listitem> <para>
<para> Allow ad-hoc remote builders for building the new system. This requires
Allow ad-hoc remote builders for building the new system. the user executing <command>nixos-rebuild</command> (usually root) to be
This requires the user executing <command>nixos-rebuild</command> (usually configured as a trusted user in the Nix daemon. This can be achieved by
root) to be configured as a trusted user in the Nix daemon. This can be using the <literal>nix.trustedUsers</literal> NixOS option. Examples
achieved by using the <literal>nix.trustedUsers</literal> NixOS option. values for that option are described in the <literal>Remote builds
Examples values for that option are described in the chapter</literal> in the Nix manual, (i.e. <command>--builders
<literal>Remote builds chapter</literal> in the Nix manual, "ssh://bigbrother x86_64-linux"</command>). By specifying an empty string
(i.e. <command>--builders "ssh://bigbrother x86_64-linux"</command>). existing builders specified in <filename>/etc/nix/machines</filename> can
By specifying an empty string existing builders specified in be ignored: <command>--builders ""</command> for example when they are
<filename>/etc/nix/machines</filename> can be ignored: not reachable due to network connectivity.
<command>--builders ""</command> for example when they are not </para>
reachable due to network connectivity. </listitem>
</para>
</listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term> <term>

View File

@ -639,7 +639,8 @@ $ nix-instantiate -E '(import &lt;nixpkgsunstable&gt; {}).gitFull'
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Groups <literal>kvm</literal> and <literal>render</literal> are introduced now, as systemd requires them. Groups <literal>kvm</literal> and <literal>render</literal> are introduced
now, as systemd requires them.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>

View File

@ -20,25 +20,27 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
The default Python 3 interpreter is now CPython 3.7 instead of CPython 3.6. The default Python 3 interpreter is now CPython 3.7 instead of CPython
3.6.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Added the Pantheon desktop environment. Added the Pantheon desktop environment. It can be enabled through
It can be enabled through <varname>services.xserver.desktopManager.pantheon.enable</varname>. <varname>services.xserver.desktopManager.pantheon.enable</varname>.
</para> </para>
<note> <note>
<para> <para>
<varname>services.xserver.desktopManager.pantheon</varname> default enables lightdm <varname>services.xserver.desktopManager.pantheon</varname> default
as a display manager and using Pantheon's greeter. enables lightdm as a display manager and using Pantheon's greeter.
</para> </para>
<para> <para>
This is because of limitations with the screenlocking implementation, whereas the This is because of limitations with the screenlocking implementation,
screenlocker would be non-functional without it. whereas the screenlocker would be non-functional without it.
</para> </para>
<para> <para>
Because of that it is recommended to retain this precaution, however if you'd like to change this set: Because of that it is recommended to retain this precaution, however if
you'd like to change this set:
</para> </para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -52,17 +54,19 @@
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<para>to <literal>false</literal> and enable your preferred display manager.</para> <para>
to <literal>false</literal> and enable your preferred display manager.
</para>
</note> </note>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
A major refactoring of the Kubernetes module has been completed. A major refactoring of the Kubernetes module has been completed.
Refactorings primarily focus on decoupling components and enhancing Refactorings primarily focus on decoupling components and enhancing
security. Two-way TLS and RBAC has been enabled by default for all security. Two-way TLS and RBAC has been enabled by default for all
components, which slightly changes the way the module is configured. components, which slightly changes the way the module is configured. See:
See: <xref linkend="sec-kubernetes"/> for details. <xref linkend="sec-kubernetes"/> for details.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</section> </section>
@ -87,10 +91,11 @@
<listitem> <listitem>
<para> <para>
There is a new <varname>security.googleOsLogin</varname> module for using There is a new <varname>security.googleOsLogin</varname> module for using
<link xlink:href="https://cloud.google.com/compute/docs/instances/managing-instance-access">OS Login</link> <link xlink:href="https://cloud.google.com/compute/docs/instances/managing-instance-access">OS
to manage SSH access to Google Compute Engine instances, which supersedes Login</link> to manage SSH access to Google Compute Engine instances,
the imperative and broken <literal>google-accounts-daemon</literal> used which supersedes the imperative and broken
in <literal>nixos/modules/virtualisation/google-compute-config.nix</literal>. <literal>google-accounts-daemon</literal> used in
<literal>nixos/modules/virtualisation/google-compute-config.nix</literal>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -101,8 +106,9 @@
<listitem> <listitem>
<para> <para>
There is a new <varname>services.cockroachdb</varname> module for running There is a new <varname>services.cockroachdb</varname> module for running
CockroachDB databases. NixOS now ships with CockroachDB 2.1.x as well, available CockroachDB databases. NixOS now ships with CockroachDB 2.1.x as well,
on <literal>x86_64-linux</literal> and <literal>aarch64-linux</literal>. available on <literal>x86_64-linux</literal> and
<literal>aarch64-linux</literal>.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@ -110,15 +116,15 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
<literal>./security/duosec.nix</literal> <literal>./security/duosec.nix</literal>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <link xlink:href="https://duo.com/docs/duounix">PAM module for Duo The <link xlink:href="https://duo.com/docs/duounix">PAM module for Duo
Security</link> has been enabled for use. One can configure it using Security</link> has been enabled for use. One can configure it using the
the <option>security.duosec</option> options along with the <option>security.duosec</option> options along with the corresponding PAM
corresponding PAM option in option in
<option>security.pam.services.&lt;name?&gt;.duoSecurity.enable</option>. <option>security.pam.services.&lt;name?&gt;.duoSecurity.enable</option>.
</para> </para>
</listitem> </listitem>
@ -184,36 +190,37 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <varname>buildPythonPackage</varname> function now sets <varname>strictDeps = true</varname> The <varname>buildPythonPackage</varname> function now sets
to help distinguish between native and non-native dependencies in order to <varname>strictDeps = true</varname> to help distinguish between native
improve cross-compilation compatibility. Note however that this may break and non-native dependencies in order to improve cross-compilation
user expressions. compatibility. Note however that this may break user expressions.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <varname>buildPythonPackage</varname> function now sets <varname>LANG = C.UTF-8</varname> The <varname>buildPythonPackage</varname> function now sets <varname>LANG
to enable Unicode support. The <varname>glibcLocales</varname> package is no longer needed as a build input. = C.UTF-8</varname> to enable Unicode support. The
<varname>glibcLocales</varname> package is no longer needed as a build
input.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The Syncthing state and configuration data has been moved from The Syncthing state and configuration data has been moved from
<varname>services.syncthing.dataDir</varname> to the newly defined <varname>services.syncthing.dataDir</varname> to the newly defined
<varname>services.syncthing.configDir</varname>, which default to <varname>services.syncthing.configDir</varname>, which default to
<literal>/var/lib/syncthing/.config/syncthing</literal>. <literal>/var/lib/syncthing/.config/syncthing</literal>. This change makes
This change makes possible to share synced directories using ACLs possible to share synced directories using ACLs without Syncthing
without Syncthing resetting the permission on every start. resetting the permission on every start.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <literal>ntp</literal> module now has sane default restrictions. The <literal>ntp</literal> module now has sane default restrictions. If
If you're relying on the previous defaults, which permitted all queries you're relying on the previous defaults, which permitted all queries and
and commands from all firewall-permitted sources, you can set commands from all firewall-permitted sources, you can set
<varname>services.ntp.restrictDefault</varname> and <varname>services.ntp.restrictDefault</varname> and
<varname>services.ntp.restrictSource</varname> to <varname>services.ntp.restrictSource</varname> to <literal>[]</literal>.
<literal>[]</literal>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -241,17 +248,21 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Options Options
<literal>services.znc.confOptions.networks.<replaceable>name</replaceable>.userName</literal> and <literal>services.znc.confOptions.networks.<replaceable>name</replaceable>.userName</literal>
<literal>services.znc.confOptions.networks.<replaceable>name</replaceable>.modulePackages</literal> and
were removed. They were never used for anything and can therefore safely be removed. <literal>services.znc.confOptions.networks.<replaceable>name</replaceable>.modulePackages</literal>
were removed. They were never used for anything and can therefore safely
be removed.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Package <literal>wasm</literal> has been renamed <literal>proglodyte-wasm</literal>. The package Package <literal>wasm</literal> has been renamed
<literal>wasm</literal> will be pointed to <literal>ocamlPackages.wasm</literal> in 19.09, so <literal>proglodyte-wasm</literal>. The package <literal>wasm</literal>
make sure to update your configuration if you want to keep <literal>proglodyte-wasm</literal> will be pointed to <literal>ocamlPackages.wasm</literal> in 19.09, so make
sure to update your configuration if you want to keep
<literal>proglodyte-wasm</literal>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -279,37 +290,41 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Package <literal>consul-ui</literal> and passthrough <literal>consul.ui</literal> have been removed. Package <literal>consul-ui</literal> and passthrough
The package <literal>consul</literal> now uses upstream releases that vendor the UI into the binary. <literal>consul.ui</literal> have been removed. The package
See <link xlink:href="https://github.com/NixOS/nixpkgs/pull/48714#issuecomment-433454834">#48714</link> <literal>consul</literal> now uses upstream releases that vendor the UI
into the binary. See
<link xlink:href="https://github.com/NixOS/nixpkgs/pull/48714#issuecomment-433454834">#48714</link>
for details. for details.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Slurm introduces the new option Slurm introduces the new option
<literal>services.slurm.stateSaveLocation</literal>, <literal>services.slurm.stateSaveLocation</literal>, which is now set to
which is now set to <literal>/var/spool/slurm</literal> by default <literal>/var/spool/slurm</literal> by default (instead of
(instead of <literal>/var/spool</literal>). <literal>/var/spool</literal>). Make sure to move all files to the new
Make sure to move all files to the new directory or to set the option accordingly. directory or to set the option accordingly.
</para> </para>
<para> <para>
The slurmctld now runs as user <literal>slurm</literal> instead of <literal>root</literal>. The slurmctld now runs as user <literal>slurm</literal> instead of
If you want to keep slurmctld running as <literal>root</literal>, set <literal>root</literal>. If you want to keep slurmctld running as
<literal>services.slurm.user = root</literal>. <literal>root</literal>, set <literal>services.slurm.user =
root</literal>.
</para> </para>
<para> <para>
The options <literal>services.slurm.nodeName</literal> and The options <literal>services.slurm.nodeName</literal> and
<literal>services.slurm.partitionName</literal> are now sets of <literal>services.slurm.partitionName</literal> are now sets of strings to
strings to correctly reflect that fact that each of these correctly reflect that fact that each of these options can occour more
options can occour more than once in the configuration. than once in the configuration.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <literal>solr</literal> package has been upgraded from 4.10.3 to 7.5.0 and has undergone The <literal>solr</literal> package has been upgraded from 4.10.3 to 7.5.0
some major changes. The <literal>services.solr</literal> module has been updated to reflect and has undergone some major changes. The <literal>services.solr</literal>
these changes. Please review http://lucene.apache.org/solr/ carefully before upgrading. module has been updated to reflect these changes. Please review
http://lucene.apache.org/solr/ carefully before upgrading.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -321,46 +336,49 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The option <literal>services.xserver.displayManager.job.logToFile</literal> which was The option
<literal>services.xserver.displayManager.job.logToFile</literal> which was
previously set to <literal>true</literal> when using the display managers previously set to <literal>true</literal> when using the display managers
<literal>lightdm</literal>, <literal>sddm</literal> or <literal>xpra</literal> has been <literal>lightdm</literal>, <literal>sddm</literal> or
reset to the default value (<literal>false</literal>). <literal>xpra</literal> has been reset to the default value
(<literal>false</literal>).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Network interface indiscriminate NixOS firewall options Network interface indiscriminate NixOS firewall options
(<literal>networking.firewall.allow*</literal>) are now preserved when also (<literal>networking.firewall.allow*</literal>) are now preserved when
setting interface specific rules such as <literal>networking.firewall.interfaces.en0.allow*</literal>. also setting interface specific rules such as
These rules continue to use the pseudo device "default" <literal>networking.firewall.interfaces.en0.allow*</literal>. These rules
(<literal>networking.firewall.interfaces.default.*</literal>), and assigning continue to use the pseudo device "default"
to this pseudo device will override the (<literal>networking.firewall.allow*</literal>) (<literal>networking.firewall.interfaces.default.*</literal>), and
options. assigning to this pseudo device will override the
</para> (<literal>networking.firewall.allow*</literal>) options.
</listitem> </para>
<listitem> </listitem>
<para> <listitem>
<para>
The <literal>nscd</literal> service now disables all caching of The <literal>nscd</literal> service now disables all caching of
<literal>passwd</literal> and <literal>group</literal> databases by <literal>passwd</literal> and <literal>group</literal> databases by
default. This was interferring with the correct functioning of the default. This was interferring with the correct functioning of the
<literal>libnss_systemd.so</literal> module which is used by <literal>libnss_systemd.so</literal> module which is used by
<literal>systemd</literal> to manage uids and usernames in the presence of <literal>systemd</literal> to manage uids and usernames in the presence of
<literal>DynamicUser=</literal> in systemd services. This was already the <literal>DynamicUser=</literal> in systemd services. This was already the
default behaviour in presence of <literal>services.sssd.enable = default behaviour in presence of <literal>services.sssd.enable =
true</literal> because nscd caching would interfere with true</literal> because nscd caching would interfere with
<literal>sssd</literal> in unpredictable ways as well. Because we're <literal>sssd</literal> in unpredictable ways as well. Because we're using
using nscd not for caching, but for convincing glibc to find NSS modules nscd not for caching, but for convincing glibc to find NSS modules in the
in the nix store instead of an absolute path, we have decided to disable nix store instead of an absolute path, we have decided to disable caching
caching globally now, as it's usually not the behaviour the user wants and globally now, as it's usually not the behaviour the user wants and can
can lead to surprising behaviour. Furthermore, negative caching of host lead to surprising behaviour. Furthermore, negative caching of host
lookups is also disabled now by default. This should fix the issue of dns lookups is also disabled now by default. This should fix the issue of dns
lookups failing in the presence of an unreliable network. lookups failing in the presence of an unreliable network.
</para> </para>
<para> <para>
If the old behaviour is desired, this can be restored by setting If the old behaviour is desired, this can be restored by setting the
the <literal>services.nscd.config</literal> option <literal>services.nscd.config</literal> option with the desired caching
with the desired caching parameters. parameters.
<programlisting> <programlisting>
services.nscd.config = services.nscd.config =
'' ''
server-user nscd server-user nscd
@ -393,97 +411,109 @@
shared hosts yes shared hosts yes
''; '';
</programlisting> </programlisting>
See <link xlink:href="https://github.com/NixOS/nixpkgs/pull/50316">#50316</link> See
<link xlink:href="https://github.com/NixOS/nixpkgs/pull/50316">#50316</link>
for details. for details.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
GitLab Shell previously used the nix store paths for the GitLab Shell previously used the nix store paths for the
<literal>gitlab-shell</literal> command in its <literal>gitlab-shell</literal> command in its
<literal>authorized_keys</literal> file, which might stop working after <literal>authorized_keys</literal> file, which might stop working after
garbage collection. To circumvent that, we regenerated that file on each garbage collection. To circumvent that, we regenerated that file on each
startup. As <literal>gitlab-shell</literal> has now been changed to use startup. As <literal>gitlab-shell</literal> has now been changed to use
<literal>/var/run/current-system/sw/bin/gitlab-shell</literal>, this is <literal>/var/run/current-system/sw/bin/gitlab-shell</literal>, this is
not necessary anymore, but there might be leftover lines with a nix store not necessary anymore, but there might be leftover lines with a nix store
path. Regenerate the <literal>authorized_keys</literal> file via path. Regenerate the <literal>authorized_keys</literal> file via
<command>sudo -u git -H gitlab-rake gitlab:shell:setup</command> in that <command>sudo -u git -H gitlab-rake gitlab:shell:setup</command> in that
case. case.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <literal>pam_unix</literal> account module is now loaded with its The <literal>pam_unix</literal> account module is now loaded with its
control field set to <literal>required</literal> instead of control field set to <literal>required</literal> instead of
<literal>sufficient</literal>, so that later PAM account modules that <literal>sufficient</literal>, so that later PAM account modules that
might do more extensive checks are being executed. might do more extensive checks are being executed. Previously, the whole
Previously, the whole account module verification was exited prematurely account module verification was exited prematurely in case a nss module
in case a nss module provided the account name to provided the account name to <literal>pam_unix</literal>. The LDAP and
<literal>pam_unix</literal>. SSSD NixOS modules already add their NSS modules when enabled. In case
The LDAP and SSSD NixOS modules already add their NSS modules when your setup breaks due to some later PAM account module previosuly
enabled. In case your setup breaks due to some later PAM account module shadowed, or failing NSS lookups, please file a bug. You can get back the
previosuly shadowed, or failing NSS lookups, please file a bug. You can old behaviour by manually setting <literal>
get back the old behaviour by manually setting <![CDATA[security.pam.services.<name?>.text]]>
<literal><![CDATA[security.pam.services.<name?>.text]]></literal>. </literal>.
</para>
</listitem>
<listitem>
<para>
The <literal>pam_unix</literal> password module is now loaded with its
control field set to <literal>sufficient</literal> instead of
<literal>required</literal>, so that password managed only
by later PAM password modules are being executed.
Previously, for example, changing an LDAP account's password through PAM
was not possible: the whole password module verification
was exited prematurely by <literal>pam_unix</literal>,
preventing <literal>pam_ldap</literal> to manage the password as it should.
</para>
</listitem>
<listitem>
<para>
<literal>fish</literal> has been upgraded to 3.0.
It comes with a number of improvements and backwards incompatible changes.
See the <literal>fish</literal> <link xlink:href="https://github.com/fish-shell/fish-shell/releases/tag/3.0.0">release notes</link> for more information.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The ibus-table input method has had a change in config format, which The <literal>pam_unix</literal> password module is now loaded with its
causes all previous settings to be lost. See control field set to <literal>sufficient</literal> instead of
<link xlink:href="https://github.com/mike-fabian/ibus-table/commit/f9195f877c5212fef0dfa446acb328c45ba5852b">this commit message</link> <literal>required</literal>, so that password managed only by later PAM
for details. password modules are being executed. Previously, for example, changing an
LDAP account's password through PAM was not possible: the whole password
module verification was exited prematurely by <literal>pam_unix</literal>,
preventing <literal>pam_ldap</literal> to manage the password as it
should.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
NixOS module system type <literal>types.optionSet</literal> and <literal>fish</literal> has been upgraded to 3.0. It comes with a number
<literal>lib.mkOption</literal> argument <literal>options</literal> are deprecated. of improvements and backwards incompatible changes. See the
Use <literal>types.submodule</literal> instead. <literal>fish</literal>
(<link xlink:href="https://github.com/NixOS/nixpkgs/pull/54637">#54637</link>) <link xlink:href="https://github.com/fish-shell/fish-shell/releases/tag/3.0.0">release
</para> notes</link> for more information.
</listitem> </para>
<listitem> </listitem>
<para> <listitem>
<literal>matrix-synapse</literal> has been updated to version 0.99. It will <para>
<link xlink:href="https://github.com/matrix-org/synapse/pull/4509">no longer generate a self-signed certificate on first launch</link> The ibus-table input method has had a change in config format, which
and will be <link xlink:href="https://matrix.org/blog/2019/02/05/synapse-0-99-0/">the last version to accept self-signed certificates</link>. causes all previous settings to be lost. See
As such, it is now recommended to use a proper certificate verified by a <link xlink:href="https://github.com/mike-fabian/ibus-table/commit/f9195f877c5212fef0dfa446acb328c45ba5852b">this
root CA (for example Let's Encrypt). commit message</link> for details.
The new <link linkend="module-services-matrix">manual chapter on Matrix</link> contains a working example of using nginx as a reverse proxy </para>
in front of <literal>matrix-synapse</literal>, using Let's Encrypt certificates. </listitem>
</para> <listitem>
</listitem> <para>
NixOS module system type <literal>types.optionSet</literal> and
<literal>lib.mkOption</literal> argument <literal>options</literal> are
deprecated. Use <literal>types.submodule</literal> instead.
(<link xlink:href="https://github.com/NixOS/nixpkgs/pull/54637">#54637</link>)
</para>
</listitem>
<listitem>
<para>
<literal>matrix-synapse</literal> has been updated to version 0.99. It
will <link xlink:href="https://github.com/matrix-org/synapse/pull/4509">no
longer generate a self-signed certificate on first launch</link> and will
be
<link xlink:href="https://matrix.org/blog/2019/02/05/synapse-0-99-0/">the
last version to accept self-signed certificates</link>. As such, it is now
recommended to use a proper certificate verified by a root CA (for example
Let's Encrypt). The new <link linkend="module-services-matrix">manual
chapter on Matrix</link> contains a working example of using nginx as a
reverse proxy in front of <literal>matrix-synapse</literal>, using Let's
Encrypt certificates.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
<literal>mailutils</literal> now works by default when <literal>mailutils</literal> now works by default when
<literal>sendmail</literal> is not in a setuid wrapper. As a consequence, <literal>sendmail</literal> is not in a setuid wrapper. As a consequence,
the <literal>sendmailPath</literal> argument, having lost its main use, has the <literal>sendmailPath</literal> argument, having lost its main use,
been removed. has been removed.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<literal>graylog</literal> has been upgraded from version 2.* to 3.*. Some setups making use of extraConfig (especially those exposing Graylog via reverse proxies) need to be updated as upstream removed/replaced some settings. See <link xlink:href="http://docs.graylog.org/en/3.0/pages/upgrade/graylog-3.0.html#simplified-http-interface-configuration">Upgrading Graylog</link> for details. <literal>graylog</literal> has been upgraded from version 2.* to 3.*. Some
setups making use of extraConfig (especially those exposing Graylog via
reverse proxies) need to be updated as upstream removed/replaced some
settings. See
<link xlink:href="http://docs.graylog.org/en/3.0/pages/upgrade/graylog-3.0.html#simplified-http-interface-configuration">Upgrading
Graylog</link> for details.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@ -500,206 +530,219 @@
<listitem> <listitem>
<para> <para>
The <option>services.matomo</option> module gained the option The <option>services.matomo</option> module gained the option
<option>services.matomo.package</option> which determines the used <option>services.matomo.package</option> which determines the used Matomo
Matomo version. version.
</para> </para>
<para> <para>
The Matomo module now also comes with the systemd service <literal>matomo-archive-processing.service</literal> The Matomo module now also comes with the systemd service
and a timer that automatically triggers archive processing every hour. <literal>matomo-archive-processing.service</literal> and a timer that
This means that you can safely automatically triggers archive processing every hour. This means that you
can safely
<link xlink:href="https://matomo.org/docs/setup-auto-archiving/#disable-browser-triggers-for-matomo-archiving-and-limit-matomo-reports-to-updating-every-hour"> <link xlink:href="https://matomo.org/docs/setup-auto-archiving/#disable-browser-triggers-for-matomo-archiving-and-limit-matomo-reports-to-updating-every-hour">
disable browser triggers for Matomo archiving disable browser triggers for Matomo archiving </link> at
</link> at <literal>Administration > System > General Settings</literal>. <literal>Administration > System > General Settings</literal>.
</para> </para>
<para> <para>
Additionally, you can enable to Additionally, you can enable to
<link xlink:href="https://matomo.org/docs/privacy/#step-2-delete-old-visitors-logs"> <link xlink:href="https://matomo.org/docs/privacy/#step-2-delete-old-visitors-logs">
delete old visitor logs delete old visitor logs </link> at <literal>Administration > System >
</link> at <literal>Administration > System > Privacy</literal>, Privacy</literal>, but make sure that you run <literal>systemctl start
but make sure that you run <literal>systemctl start matomo-archive-processing.service</literal> matomo-archive-processing.service</literal> at least once without errors
at least once without errors if you have already collected data before, if you have already collected data before, so that the reports get
so that the reports get archived before the source data gets deleted. archived before the source data gets deleted.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<literal>composableDerivation</literal> along with supporting library functions <literal>composableDerivation</literal> along with supporting library
has been removed. functions has been removed.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The deprecated <literal>truecrypt</literal> package has been removed The deprecated <literal>truecrypt</literal> package has been removed and
and <literal>truecrypt</literal> attribute is now an alias for <literal>truecrypt</literal> attribute is now an alias for
<literal>veracrypt</literal>. VeraCrypt is backward-compatible with <literal>veracrypt</literal>. VeraCrypt is backward-compatible with
TrueCrypt volumes. Note that <literal>cryptsetup</literal> also TrueCrypt volumes. Note that <literal>cryptsetup</literal> also supports
supports loading TrueCrypt volumes. loading TrueCrypt volumes.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The Kubernetes DNS addons, kube-dns, has been replaced with CoreDNS. The Kubernetes DNS addons, kube-dns, has been replaced with CoreDNS. This
This change is made in accordance with Kubernetes making CoreDNS the official default change is made in accordance with Kubernetes making CoreDNS the official
starting from default starting from
<link xlink:href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#sig-cluster-lifecycle">Kubernetes v1.11</link>. <link xlink:href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#sig-cluster-lifecycle">Kubernetes
Please beware that upgrading DNS-addon on existing clusters might induce v1.11</link>. Please beware that upgrading DNS-addon on existing clusters
minor downtime while the DNS-addon terminates and re-initializes. might induce minor downtime while the DNS-addon terminates and
Also note that the DNS-service now runs with 2 pod replicas by default. re-initializes. Also note that the DNS-service now runs with 2 pod
The desired number of replicas can be configured using: replicas by default. The desired number of replicas can be configured
<option>services.kubernetes.addons.dns.replicas</option>. using: <option>services.kubernetes.addons.dns.replicas</option>.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
The quassel-webserver package and module was removed from nixpkgs due to the lack
of maintainers.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
The manual gained a The quassel-webserver package and module was removed from nixpkgs due to
<link linkend="module-services-matrix"> the lack of maintainers.
new chapter on self-hosting <literal>matrix-synapse</literal> and <literal>riot-web</literal>
</link>, the most prevalent server and client implementations for the
<link xlink:href="https://matrix.org/">Matrix</link> federated communication network.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The astah-community package was removed from nixpkgs due to it being discontinued and the downloads not being available anymore. The manual gained a <link linkend="module-services-matrix"> new chapter on
</para> self-hosting <literal>matrix-synapse</literal> and
</listitem> <literal>riot-web</literal> </link>, the most prevalent server and client
<listitem> implementations for the
<para> <link xlink:href="https://matrix.org/">Matrix</link> federated
The httpd service now saves log files with a .log file extension by default for communication network.
easier integration with the logrotate service. </para>
</para>
</listitem>
<listitem>
<para>
The owncloud server packages and httpd subservice module were removed
from nixpkgs due to the lack of maintainers.
</para>
</listitem>
<listitem>
<para>
It is possible now to uze ZRAM devices as general purpose ephemeral block devices,
not only as swap. Using more than 1 device as ZRAM swap is no longer recommended,
but is still possible by setting <literal>zramSwap.swapDevices</literal> explicitly.
</para>
<para>
ZRAM algorithm can be changed now.
</para>
<para>
Changes to ZRAM algorithm are applied during <literal>nixos-rebuild switch</literal>,
so make sure you have enough swap space on disk to survive ZRAM device rebuild. Alternatively,
use <literal>nixos-rebuild boot; reboot</literal>.
</para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Flat volumes are now disabled by default in <literal>hardware.pulseaudio</literal>. The astah-community package was removed from nixpkgs due to it being
This has been done to prevent applications, which are unaware of this feature, setting discontinued and the downloads not being available anymore.
their volumes to 100% on startup causing harm to your audio hardware and potentially your ears. </para>
</listitem>
<listitem>
<para>
The httpd service now saves log files with a .log file extension by
default for easier integration with the logrotate service.
</para>
</listitem>
<listitem>
<para>
The owncloud server packages and httpd subservice module were removed from
nixpkgs due to the lack of maintainers.
</para>
</listitem>
<listitem>
<para>
It is possible now to uze ZRAM devices as general purpose ephemeral block
devices, not only as swap. Using more than 1 device as ZRAM swap is no
longer recommended, but is still possible by setting
<literal>zramSwap.swapDevices</literal> explicitly.
</para>
<para>
ZRAM algorithm can be changed now.
</para>
<para>
Changes to ZRAM algorithm are applied during <literal>nixos-rebuild
switch</literal>, so make sure you have enough swap space on disk to
survive ZRAM device rebuild. Alternatively, use <literal>nixos-rebuild
boot; reboot</literal>.
</para>
</listitem>
<listitem>
<para>
Flat volumes are now disabled by default in
<literal>hardware.pulseaudio</literal>. This has been done to prevent
applications, which are unaware of this feature, setting their volumes to
100% on startup causing harm to your audio hardware and potentially your
ears.
</para> </para>
<note> <note>
<para> <para>
With this change application specific volumes are relative to the master volume which can be With this change application specific volumes are relative to the master
adjusted independently, whereas before they were absolute; meaning that in effect, it scaled the volume which can be adjusted independently, whereas before they were
device-volume with the volume of the loudest application. absolute; meaning that in effect, it scaled the device-volume with the
volume of the loudest application.
</para> </para>
</note> </note>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <link xlink:href="https://github.com/DanielAdolfsson/ndppd"><literal>ndppd</literal></link> module The
now supports <link linkend="opt-services.ndppd.enable">all config options</link> provided by the current <link xlink:href="https://github.com/DanielAdolfsson/ndppd"><literal>ndppd</literal></link>
upstream version as service options. Additionally the <literal>ndppd</literal> package doesn't contain module now supports <link linkend="opt-services.ndppd.enable">all config
the systemd unit configuration from upstream anymore, the unit is completely configured by the NixOS module now. options</link> provided by the current upstream version as service
options. Additionally the <literal>ndppd</literal> package doesn't contain
the systemd unit configuration from upstream anymore, the unit is
completely configured by the NixOS module now.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
New installs of NixOS will default to the Redmine 4.x series unless otherwise specified in New installs of NixOS will default to the Redmine 4.x series unless
<literal>services.redmine.package</literal> while existing installs of NixOS will default to otherwise specified in <literal>services.redmine.package</literal> while
the Redmine 3.x series. existing installs of NixOS will default to the Redmine 3.x series.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The <link linkend="opt-services.grafana.enable">Grafana module</link> now supports declarative The <link linkend="opt-services.grafana.enable">Grafana module</link> now
<link xlink:href="http://docs.grafana.org/administration/provisioning/">datasource and dashboard</link> supports declarative
provisioning. <link xlink:href="http://docs.grafana.org/administration/provisioning/">datasource
and dashboard</link> provisioning.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para>
The use of insecure ports on kubernetes has been deprecated.
Thus options:
<varname>services.kubernetes.apiserver.port</varname> and
<varname>services.kubernetes.controllerManager.port</varname>
has been renamed to <varname>.insecurePort</varname>,
and default of both options has changed to 0 (disabled).
</para>
</listitem>
<listitem>
<para>
Note that the default value of
<varname>services.kubernetes.apiserver.bindAddress</varname>
has changed from 127.0.0.1 to 0.0.0.0, allowing the apiserver to be
accessible from outside the master node itself.
If the apiserver insecurePort is enabled,
it is strongly recommended to only bind on the loopback interface. See:
<varname>services.kubernetes.apiserver.insecurebindAddress</varname>.
</para>
</listitem>
<listitem>
<para>
The option <varname>services.kubernetes.apiserver.allowPrivileged</varname>
and <varname>services.kubernetes.kubelet.allowPrivileged</varname> now
defaults to false. Disallowing privileged containers on the cluster.
</para>
</listitem>
<listitem>
<para>
The kubernetes module does no longer add the kubernetes package to
<varname>environment.systemPackages</varname> implicitly.
</para>
</listitem>
<listitem>
<para>
The <literal>intel</literal> driver has been removed from the default list of
<link linkend="opt-services.xserver.videoDrivers">X.org video drivers</link>.
The <literal>modesetting</literal> driver should take over automatically,
it is better maintained upstream and has less problems with advanced X11 features.
This can lead to a change in the output names used by <literal>xrandr</literal>.
Some performance regressions on some GPU models might happen.
Some OpenCL and VA-API applications might also break
(Beignet seems to provide OpenCL support with
<literal>modesetting</literal> driver, too).
Kernel mode setting API does not support backlight control,
so <literal>xbacklight</literal> tool will not work;
backlight level can be controlled directly via <literal>/sys/</literal>
or with <literal>brightnessctl</literal>.
Users who need this functionality more than multi-output XRandR are advised
to add `intel` to `videoDrivers` and report an issue (or provide additional
details in an existing one)
</para>
</listitem>
<listitem>
<para>
Openmpi has been updated to version 4.0.0, which removes some deprecated MPI-1 symbols.
This may break some older applications that still rely on those symbols.
An upgrade guide can be found <link xlink:href="https://www.open-mpi.org/faq/?category=mpi-removed">here</link>.
</para>
<para> <para>
The nginx package now relies on OpenSSL 1.1 and supports TLS 1.3 by default. You can set the protocols used by the nginx service using <xref linkend="opt-services.nginx.sslProtocols"/>. The use of insecure ports on kubernetes has been deprecated. Thus options:
<varname>services.kubernetes.apiserver.port</varname> and
<varname>services.kubernetes.controllerManager.port</varname> has been
renamed to <varname>.insecurePort</varname>, and default of both options
has changed to 0 (disabled).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
A new subcommand <command>nixos-rebuild edit</command> was added. Note that the default value of
</para> <varname>services.kubernetes.apiserver.bindAddress</varname> has changed
from 127.0.0.1 to 0.0.0.0, allowing the apiserver to be accessible from
outside the master node itself. If the apiserver insecurePort is enabled,
it is strongly recommended to only bind on the loopback interface. See:
<varname>services.kubernetes.apiserver.insecurebindAddress</varname>.
</para>
</listitem>
<listitem>
<para>
The option
<varname>services.kubernetes.apiserver.allowPrivileged</varname> and
<varname>services.kubernetes.kubelet.allowPrivileged</varname> now
defaults to false. Disallowing privileged containers on the cluster.
</para>
</listitem>
<listitem>
<para>
The kubernetes module does no longer add the kubernetes package to
<varname>environment.systemPackages</varname> implicitly.
</para>
</listitem>
<listitem>
<para>
The <literal>intel</literal> driver has been removed from the default list
of <link linkend="opt-services.xserver.videoDrivers">X.org video
drivers</link>. The <literal>modesetting</literal> driver should take over
automatically, it is better maintained upstream and has less problems with
advanced X11 features. This can lead to a change in the output names used
by <literal>xrandr</literal>. Some performance regressions on some GPU
models might happen. Some OpenCL and VA-API applications might also break
(Beignet seems to provide OpenCL support with
<literal>modesetting</literal> driver, too). Kernel mode setting API does
not support backlight control, so <literal>xbacklight</literal> tool will
not work; backlight level can be controlled directly via
<literal>/sys/</literal> or with <literal>brightnessctl</literal>. Users
who need this functionality more than multi-output XRandR are advised to
add `intel` to `videoDrivers` and report an issue (or provide additional
details in an existing one)
</para>
</listitem>
<listitem>
<para>
Openmpi has been updated to version 4.0.0, which removes some deprecated
MPI-1 symbols. This may break some older applications that still rely on
those symbols. An upgrade guide can be found
<link xlink:href="https://www.open-mpi.org/faq/?category=mpi-removed">here</link>.
</para>
<para>
The nginx package now relies on OpenSSL 1.1 and supports TLS 1.3 by
default. You can set the protocols used by the nginx service using
<xref linkend="opt-services.nginx.sslProtocols"/>.
</para>
</listitem>
<listitem>
<para>
A new subcommand <command>nixos-rebuild edit</command> was added.
</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</section> </section>

View File

@ -76,14 +76,17 @@
<listitem> <listitem>
<para> <para>
The <option>documentation</option> module gained an option named The <option>documentation</option> module gained an option named
<option>documentation.nixos.includeAllModules</option> which makes the generated <option>documentation.nixos.includeAllModules</option> which makes the
<citerefentry><refentrytitle>configuration.nix</refentrytitle> generated <citerefentry>
<manvolnum>5</manvolnum></citerefentry> manual page include all options from all NixOS modules <refentrytitle>configuration.nix</refentrytitle>
included in a given <literal>configuration.nix</literal> configuration file. Currently, it is <manvolnum>5</manvolnum></citerefentry> manual page include all options
set to <literal>false</literal> by default as enabling it frequently prevents evaluation. But from all NixOS modules included in a given
the plan is to eventually have it set to <literal>true</literal> by default. Please set it to <literal>configuration.nix</literal> configuration file. Currently, it is
<literal>true</literal> now in your <literal>configuration.nix</literal> and fix all the bugs set to <literal>false</literal> by default as enabling it frequently
it uncovers. prevents evaluation. But the plan is to eventually have it set to
<literal>true</literal> by default. Please set it to
<literal>true</literal> now in your <literal>configuration.nix</literal>
and fix all the bugs it uncovers.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>

View File

@ -876,6 +876,7 @@
./tasks/trackpoint.nix ./tasks/trackpoint.nix
./tasks/powertop.nix ./tasks/powertop.nix
./testing/service-runner.nix ./testing/service-runner.nix
./virtualisation/anbox.nix
./virtualisation/container-config.nix ./virtualisation/container-config.nix
./virtualisation/containers.nix ./virtualisation/containers.nix
./virtualisation/docker.nix ./virtualisation/docker.nix

View File

@ -87,9 +87,9 @@
<para> <para>
<emphasis>Please keep in mind that this is not compatible with <emphasis>Please keep in mind that this is not compatible with
<literal>programs.zsh.ohMyZsh.custom</literal> as it requires an immutable store <literal>programs.zsh.ohMyZsh.custom</literal> as it requires an immutable
path while <literal>custom</literal> shall remain mutable! An evaluation store path while <literal>custom</literal> shall remain mutable! An
failure will be thrown if both <literal>custom</literal> and evaluation failure will be thrown if both <literal>custom</literal> and
<literal>customPkgs</literal> are set.</emphasis> <literal>customPkgs</literal> are set.</emphasis>
</para> </para>
</section> </section>

View File

@ -189,9 +189,10 @@ in
. /etc/zinputrc . /etc/zinputrc
export SAVEHIST=${toString cfg.histSize} # Don't export these, otherwise other shells (bash) will try to use same histfile
export HISTSIZE=${toString cfg.histSize} SAVEHIST=${toString cfg.histSize}
export HISTFILE=${cfg.histFile} HISTSIZE=${toString cfg.histSize}
HISTFILE=${cfg.histFile}
${optionalString (cfg.setOptions != []) "setopt ${concatStringsSep " " cfg.setOptions}"} ${optionalString (cfg.setOptions != []) "setopt ${concatStringsSep " " cfg.setOptions}"}

View File

@ -86,7 +86,7 @@ in {
startAt = cfg.interval; startAt = cfg.interval;
serviceConfig = { serviceConfig = {
ExecStart = ExecStart =
"${pkgs.python3Packages.elasticsearch-curator}/bin/curator" + "${pkgs.elasticsearch-curator}/bin/curator" +
" --config ${curatorConfig} ${curatorAction}"; " --config ${curatorConfig} ${curatorAction}";
}; };
}; };

View File

@ -12,15 +12,15 @@
An automatic setup is not suported by Matomo, so you need to configure Matomo An automatic setup is not suported by Matomo, so you need to configure Matomo
itself in the browser-based Matomo setup. itself in the browser-based Matomo setup.
</para> </para>
<section xml:id="module-services-matomo-database-setup"> <section xml:id="module-services-matomo-database-setup">
<title>Database Setup</title> <title>Database Setup</title>
<para> <para>
You also need to configure a MariaDB or MySQL database and -user for Matomo You also need to configure a MariaDB or MySQL database and -user for Matomo
yourself, and enter those credentials in your browser. You can use yourself, and enter those credentials in your browser. You can use
passwordless database authentication via the UNIX_SOCKET authentication passwordless database authentication via the UNIX_SOCKET authentication
plugin with the following SQL commands: plugin with the following SQL commands:
<programlisting> <programlisting>
# For MariaDB # For MariaDB
INSTALL PLUGIN unix_socket SONAME 'auth_socket'; INSTALL PLUGIN unix_socket SONAME 'auth_socket';
CREATE DATABASE matomo; CREATE DATABASE matomo;
@ -46,30 +46,32 @@
database is not on the same host. database is not on the same host.
</para> </para>
</section> </section>
<section xml:id="module-services-matomo-archive-processing"> <section xml:id="module-services-matomo-archive-processing">
<title>Archive Processing</title> <title>Archive Processing</title>
<para> <para>
This module comes with the systemd service <literal>matomo-archive-processing.service</literal> This module comes with the systemd service
and a timer that automatically triggers archive processing every hour. <literal>matomo-archive-processing.service</literal> and a timer that
This means that you can safely automatically triggers archive processing every hour. This means that you
can safely
<link xlink:href="https://matomo.org/docs/setup-auto-archiving/#disable-browser-triggers-for-matomo-archiving-and-limit-matomo-reports-to-updating-every-hour"> <link xlink:href="https://matomo.org/docs/setup-auto-archiving/#disable-browser-triggers-for-matomo-archiving-and-limit-matomo-reports-to-updating-every-hour">
disable browser triggers for Matomo archiving disable browser triggers for Matomo archiving </link> at
</link> at <literal>Administration > System > General Settings</literal>. <literal>Administration > System > General Settings</literal>.
</para> </para>
<para> <para>
With automatic archive processing, you can now also enable to With automatic archive processing, you can now also enable to
<link xlink:href="https://matomo.org/docs/privacy/#step-2-delete-old-visitors-logs"> <link xlink:href="https://matomo.org/docs/privacy/#step-2-delete-old-visitors-logs">
delete old visitor logs delete old visitor logs </link> at <literal>Administration > System >
</link> at <literal>Administration > System > Privacy</literal>, Privacy</literal>, but make sure that you run <literal>systemctl start
but make sure that you run <literal>systemctl start matomo-archive-processing.service</literal> matomo-archive-processing.service</literal> at least once without errors if
at least once without errors if you have already collected data before, you have already collected data before, so that the reports get archived
so that the reports get archived before the source data gets deleted. before the source data gets deleted.
</para> </para>
</section> </section>
<section xml:id="module-services-matomo-backups"> <section xml:id="module-services-matomo-backups">
<title>Backup</title> <title>Backup</title>
<para> <para>
You only need to take backups of your MySQL database and the You only need to take backups of your MySQL database and the
<filename>/var/lib/matomo/config/config.ini.php</filename> file. Use a user <filename>/var/lib/matomo/config/config.ini.php</filename> file. Use a user
@ -78,9 +80,9 @@
<link xlink:href="https://matomo.org/faq/how-to-install/faq_138/" />. <link xlink:href="https://matomo.org/faq/how-to-install/faq_138/" />.
</para> </para>
</section> </section>
<section xml:id="module-services-matomo-issues"> <section xml:id="module-services-matomo-issues">
<title>Issues</title> <title>Issues</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
@ -97,7 +99,6 @@
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</section> </section>
<section xml:id="module-services-matomo-other-web-servers"> <section xml:id="module-services-matomo-other-web-servers">
<title>Using other Web Servers than nginx</title> <title>Using other Web Servers than nginx</title>

View File

@ -4,24 +4,26 @@
version="5.0" version="5.0"
xml:id="module-services-nextcloud"> xml:id="module-services-nextcloud">
<title>Nextcloud</title> <title>Nextcloud</title>
<para> <para>
<link xlink:href="https://nextcloud.com/">Nextcloud</link> is an open-source, self-hostable cloud <link xlink:href="https://nextcloud.com/">Nextcloud</link> is an open-source,
platform. The server setup can be automated using self-hostable cloud platform. The server setup can be automated using
<link linkend="opt-services.nextcloud.enable">services.nextcloud</link>. A desktop client is packaged <link linkend="opt-services.nextcloud.enable">services.nextcloud</link>. A
at <literal>pkgs.nextcloud-client</literal>. desktop client is packaged at <literal>pkgs.nextcloud-client</literal>.
</para> </para>
<section xml:id="module-services-nextcloud-basic-usage"> <section xml:id="module-services-nextcloud-basic-usage">
<title>Basic usage</title> <title>Basic usage</title>
<para> <para>
Nextcloud is a PHP-based application which requires an HTTP server Nextcloud is a PHP-based application which requires an HTTP server
(<literal><link linkend="opt-services.nextcloud.enable">services.nextcloud</link></literal> optionally supports (<literal><link linkend="opt-services.nextcloud.enable">services.nextcloud</link></literal>
<literal><link linkend="opt-services.nginx.enable">services.nginx</link></literal>) and a database optionally supports
(it's recommended to use <literal><link linkend="opt-services.postgresql.enable">services.postgresql</link></literal>). <literal><link linkend="opt-services.nginx.enable">services.nginx</link></literal>)
and a database (it's recommended to use
<literal><link linkend="opt-services.postgresql.enable">services.postgresql</link></literal>).
</para> </para>
<para> <para>
A very basic configuration may look like this: A very basic configuration may look like this:
<programlisting>{ pkgs, ... }: <programlisting>{ pkgs, ... }:
{ {
services.nextcloud = { services.nextcloud = {
@ -55,45 +57,59 @@
<link linkend="opt-networking.firewall.allowedTCPPorts">networking.firewall.allowedTCPPorts</link> = [ 80 443 ]; <link linkend="opt-networking.firewall.allowedTCPPorts">networking.firewall.allowedTCPPorts</link> = [ 80 443 ];
}</programlisting> }</programlisting>
</para> </para>
<para> <para>
The options <literal>hostName</literal> and <literal>nginx.enable</literal> are used internally to configure an The options <literal>hostName</literal> and <literal>nginx.enable</literal>
HTTP server using <literal><link xlink:href="https://php-fpm.org/">PHP-FPM</link></literal> and <literal>nginx</literal>. are used internally to configure an HTTP server using
The <literal>config</literal> attribute set is used for the <literal>config.php</literal> which is used <literal><link xlink:href="https://php-fpm.org/">PHP-FPM</link></literal>
for the application's configuration. and <literal>nginx</literal>. The <literal>config</literal> attribute set is
<emphasis>Beware: this isn't entirely pure since the config is modified by the application's runtime!</emphasis> used for the <literal>config.php</literal> which is used for the
application's configuration. <emphasis>Beware: this isn't entirely pure
since the config is modified by the application's runtime!</emphasis>
</para> </para>
<para> <para>
In case the application serves multiple hosts (those are checked with In case the application serves multiple hosts (those are checked with
<literal><link xlink:href="http://php.net/manual/en/reserved.variables.server.php">$_SERVER['HTTP_HOST']</link></literal>) <literal><link xlink:href="http://php.net/manual/en/reserved.variables.server.php">$_SERVER['HTTP_HOST']</link></literal>)
those can be added using those can be added using
<literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>. <literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>.
</para> </para>
</section> </section>
<section xml:id="module-services-nextcloud-pitfalls-during-upgrade"> <section xml:id="module-services-nextcloud-pitfalls-during-upgrade">
<title>Pitfalls</title> <title>Pitfalls</title>
<para> <para>
Unfortunately Nextcloud appears to be very stateful when it comes to managing its own configuration. The Unfortunately Nextcloud appears to be very stateful when it comes to
config file lives in the home directory of the <literal>nextcloud</literal> user (by default managing its own configuration. The config file lives in the home directory
<literal>/var/lib/nextcloud/config/config.php</literal>) and is also used to track several of the <literal>nextcloud</literal> user (by default
states of the application (e.g. whether installed or not). <literal>/var/lib/nextcloud/config/config.php</literal>) and is also used to
track several states of the application (e.g. whether installed or not).
</para> </para>
<para> <para>
Right now changes to the <literal>services.nextcloud.config</literal> attribute set won't take effect Right now changes to the <literal>services.nextcloud.config</literal>
after the first install attribute set won't take effect after the first install (except
(except <literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>) since the actual configuration <literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>)
file is generated by the NextCloud installer which also sets up critical parts such as the database since the actual configuration file is generated by the NextCloud installer
structure. which also sets up critical parts such as the database structure.
</para> </para>
<para> <para>
<emphasis>Warning: don't delete <literal>config.php</literal>! This file tracks the application's state and a deletion can cause unwanted side-effects!</emphasis> <emphasis>Warning: don't delete <literal>config.php</literal>! This file
tracks the application's state and a deletion can cause unwanted
side-effects!</emphasis>
</para> </para>
<para> <para>
<emphasis>Warning: don't rerun <literal>nextcloud-occ maintenance:install</literal>! This command tries to install the application and can cause unwanted side-effects!</emphasis> <emphasis>Warning: don't rerun <literal>nextcloud-occ
maintenance:install</literal>! This command tries to install the application
and can cause unwanted side-effects!</emphasis>
</para> </para>
<para> <para>
The issues are known and reported in <link xlink:href="https://github.com/NixOS/nixpkgs/issues/49783">#49783</link>, for now it's unfortunately necessary to manually work around these issues. The issues are known and reported in
<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>
</section> </section>
</chapter> </chapter>

View File

@ -276,6 +276,7 @@ let
${optionalString (config.tryFiles != null) "try_files ${config.tryFiles};"} ${optionalString (config.tryFiles != null) "try_files ${config.tryFiles};"}
${optionalString (config.root != null) "root ${config.root};"} ${optionalString (config.root != null) "root ${config.root};"}
${optionalString (config.alias != null) "alias ${config.alias};"} ${optionalString (config.alias != null) "alias ${config.alias};"}
${optionalString (config.return != null) "return ${config.return};"}
${config.extraConfig} ${config.extraConfig}
${optionalString (config.proxyPass != null && cfg.recommendedProxySettings) "include ${recommendedProxyConfig};"} ${optionalString (config.proxyPass != null && cfg.recommendedProxySettings) "include ${recommendedProxyConfig};"}
} }
@ -373,7 +374,7 @@ in
preStart = mkOption { preStart = mkOption {
type = types.lines; type = types.lines;
default = '' default = ''
test -d ${cfg.stateDir}/logs || mkdir -m 750 -p ${cfg.stateDir}/logs test -d ${cfg.stateDir}/logs || mkdir -m 750 -p ${cfg.stateDir}/logs
test `stat -c %a ${cfg.stateDir}` = "750" || chmod 750 ${cfg.stateDir} test `stat -c %a ${cfg.stateDir}` = "750" || chmod 750 ${cfg.stateDir}
test `stat -c %a ${cfg.stateDir}/logs` = "750" || chmod 750 ${cfg.stateDir}/logs test `stat -c %a ${cfg.stateDir}/logs` = "750" || chmod 750 ${cfg.stateDir}/logs
chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir} chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir}

View File

@ -64,6 +64,15 @@ with lib;
''; '';
}; };
return = mkOption {
type = types.nullOr types.str;
default = null;
example = "301 http://example.com$request_uri;";
description = ''
Adds a return directive, for e.g. redirections.
'';
};
extraConfig = mkOption { extraConfig = mkOption {
type = types.lines; type = types.lines;
default = ""; default = "";

View File

@ -246,7 +246,7 @@ in
default = [ "ati" "cirrus" "vesa" "vmware" "modesetting" ]; default = [ "ati" "cirrus" "vesa" "vmware" "modesetting" ];
example = [ example = [
"ati_unfree" "amdgpu" "amdgpu-pro" "ati_unfree" "amdgpu" "amdgpu-pro"
"nv" "nvidia" "nvidiaLegacy340" "nvidiaLegacy304" "nv" "nvidia" "nvidiaLegacy390" "nvidiaLegacy340" "nvidiaLegacy304"
]; ];
# TODO(@oxij): think how to easily add the rest, like those nvidia things # TODO(@oxij): think how to easily add the rest, like those nvidia things
relatedPackages = concatLists relatedPackages = concatLists
@ -259,6 +259,11 @@ in
The names of the video drivers the configuration The names of the video drivers the configuration
supports. They will be tried in order until one that supports. They will be tried in order until one that
supports your card is found. supports your card is found.
Don't combine those with "incompatible" OpenGL implementations,
e.g. free ones (mesa-based) with proprietary ones.
For unfree "nvidia*", the supported GPU lists are on
https://www.nvidia.com/object/unix.html
''; '';
}; };

View File

@ -209,10 +209,17 @@ in
assertions = let assertions = let
ls = sep: concatMapStringsSep sep (x: x.mountPoint); ls = sep: concatMapStringsSep sep (x: x.mountPoint);
notAutoResizable = fs: fs.autoResize && !(hasPrefix "ext" fs.fsType || fs.fsType == "f2fs");
in [ in [
{ assertion = ! (fileSystems' ? "cycle"); { assertion = ! (fileSystems' ? "cycle");
message = "The fileSystems option can't be topologically sorted: mountpoint dependency path ${ls " -> " fileSystems'.cycle} loops to ${ls ", " fileSystems'.loops}"; message = "The fileSystems option can't be topologically sorted: mountpoint dependency path ${ls " -> " fileSystems'.cycle} loops to ${ls ", " fileSystems'.loops}";
} }
{ assertion = ! (any notAutoResizable fileSystems);
message = let
fs = head (filter notAutoResizable fileSystems);
in
"Mountpoint '${fs.mountPoint}': 'autoResize = true' is not supported for 'fsType = \"${fs.fsType}\"':${if fs.fsType == "auto" then " fsType has to be explicitly set and" else ""} only the ext filesystems and f2fs support it.";
}
]; ];
# Export for use in other modules # Export for use in other modules

View File

@ -0,0 +1,144 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.virtualisation.anbox;
kernelPackages = config.boot.kernelPackages;
addrOpts = v: addr: pref: name: {
address = mkOption {
default = addr;
type = types.str;
description = ''
IPv${toString v} ${name} address.
'';
};
prefixLength = mkOption {
default = pref;
type = types.addCheck types.int (n: n >= 0 && n <= (if v == 4 then 32 else 128));
description = ''
Subnet mask of the ${name} address, specified as the number of
bits in the prefix (<literal>${if v == 4 then "24" else "64"}</literal>).
'';
};
};
in
{
options.virtualisation.anbox = {
enable = mkEnableOption "Anbox";
image = mkOption {
default = pkgs.anbox.image;
example = literalExample "pkgs.anbox.image";
type = types.package;
description = ''
Base android image for Anbox.
'';
};
extraInit = mkOption {
type = types.lines;
default = "";
description = ''
Extra shell commands to be run inside the container image during init.
'';
};
ipv4 = {
container = addrOpts 4 "192.168.250.2" 24 "Container";
gateway = addrOpts 4 "192.168.250.1" 24 "Host";
dns = mkOption {
default = "1.1.1.1";
type = types.string;
description = ''
Container DNS server.
'';
};
};
};
config = mkIf cfg.enable {
assertions = singleton {
assertion = versionAtLeast (getVersion config.boot.kernelPackages.kernel) "4.18";
message = "Anbox needs user namespace support to work properly";
};
environment.systemPackages = with pkgs; [ anbox ];
boot.kernelModules = [ "ashmem_linux" "binder_linux" ];
boot.extraModulePackages = [ kernelPackages.anbox ];
services.udev.extraRules = ''
KERNEL=="ashmem", NAME="%k", MODE="0666"
KERNEL=="binder*", NAME="%k", MODE="0666"
'';
virtualisation.lxc.enable = true;
networking.bridges.anbox0.interfaces = [];
networking.interfaces.anbox0.ipv4.addresses = [ cfg.ipv4.gateway ];
networking.nat = {
enable = true;
internalInterfaces = [ "anbox0" ];
};
systemd.services.anbox-container-manager = let
anboxloc = "/var/lib/anbox";
in {
description = "Anbox Container Management Daemon";
environment.XDG_RUNTIME_DIR="${anboxloc}";
wantedBy = [ "multi-user.target" ];
after = [ "systemd-udev-settle.service" ];
preStart = let
initsh = let
ip = cfg.ipv4.container.address;
gw = cfg.ipv4.gateway.address;
dns = cfg.ipv4.dns;
in
pkgs.writeText "nixos-init" (''
#!/system/bin/sh
setprop nixos.version ${config.system.nixos.version}
# we don't have radio
setprop ro.radio.noril yes
stop ril-daemon
# speed up boot
setprop debug.sf.nobootanimation 1
'' + cfg.extraInit);
initshloc = "${anboxloc}/rootfs-overlay/system/etc/init.goldfish.sh";
in ''
mkdir -p ${anboxloc}
mkdir -p $(dirname ${initshloc})
[ -f ${initshloc} ] && rm ${initshloc}
cp ${initsh} ${initshloc}
chown 100000:100000 ${initshloc}
chmod +x ${initshloc}
'';
serviceConfig = {
ExecStart = ''
${pkgs.anbox}/bin/anbox container-manager \
--data-path=${anboxloc} \
--android-image=${cfg.image} \
--container-network-address=${cfg.ipv4.container.address} \
--container-network-gateway=${cfg.ipv4.gateway.address} \
--container-network-dns-servers=${cfg.ipv4.dns} \
--use-rootfs-overlay \
--privileged
'';
};
};
};
}

View File

@ -20,6 +20,7 @@ in
config = { config = {
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-label/nixos"; device = "/dev/disk/by-label/nixos";
fsType = "ext4";
autoResize = true; autoResize = true;
}; };

View File

@ -1,10 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" version="2.0"><channel><title>NixOS News</title><link>https://nixos.org</link><description>News for NixOS, the purely functional Linux distribution.</description><image><title>NixOS</title><url>https://nixos.org/logo/nixos-logo-only-hires.png</url><link>https://nixos.org/</link></image><item><title> <rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" version="2.0">
NixOS 18.09 released <channel>
</title><link>https://nixos.org/news.html</link><description> <title>NixOS News</title><link>https://nixos.org</link>
<a href="https://github.com/NixOS/nixos-artwork/blob/master/releases/18.09-jellyfish/jellyfish.png"> <description>News for NixOS, the purely functional Linux distribution.</description>
<img class="inline" src="logo/nixos-logo-18.09-jellyfish-lores.png" alt="18.09 Jellyfish logo" with="100" height="87"/> <image>
</a> <title>NixOS</title>
<url>https://nixos.org/logo/nixos-logo-only-hires.png</url><link>https://nixos.org/</link>
</image>
<item>
<title>NixOS 18.09 released</title><link>https://nixos.org/news.html</link>
<description>
<a href="https://github.com/NixOS/nixos-artwork/blob/master/releases/18.09-jellyfish/jellyfish.png">
<img class="inline" src="logo/nixos-logo-18.09-jellyfish-lores.png" alt="18.09 Jellyfish logo" with="100" height="87"/>
</a>
NixOS 18.09 “Jellyfish” has been released, the tenth stable release branch. NixOS 18.09 “Jellyfish” has been released, the tenth stable release branch.
See the <a href="/nixos/manual/release-notes.html#sec-release-18.09">release notes</a> See the <a href="/nixos/manual/release-notes.html#sec-release-18.09">release notes</a>
for details. You can get NixOS 18.09 ISOs and VirtualBox appliances for details. You can get NixOS 18.09 ISOs and VirtualBox appliances
@ -12,4 +20,8 @@
For information on how to upgrade from older release branches For information on how to upgrade from older release branches
to 18.09, check out the to 18.09, check out the
<a href="/nixos/manual/index.html#sec-upgrading">manual section on upgrading</a>. <a href="/nixos/manual/index.html#sec-upgrading">manual section on upgrading</a>.
</description><pubDate>Sat Oct 06 2018 00:00:00 GMT</pubDate></item></channel></rss> </description>
<pubDate>Sat Oct 06 2018 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>

View File

@ -108,6 +108,8 @@ in {
# cluster in the database before slurmctld is restarted # cluster in the database before slurmctld is restarted
subtest "add_account", sub { subtest "add_account", sub {
$control->succeed("sacctmgr -i add cluster default"); $control->succeed("sacctmgr -i add cluster default");
# check for cluster entry
$control->succeed("sacctmgr list cluster | awk '{ print \$1 }' | grep default");
}; };
subtest "can_start_slurmctld", sub { subtest "can_start_slurmctld", sub {
@ -133,6 +135,7 @@ in {
subtest "check_slurm_dbd", sub { subtest "check_slurm_dbd", sub {
# find the srun job from above in the database # find the srun job from above in the database
sleep 2;
$submit->succeed("sacct | grep hostname"); $submit->succeed("sacct | grep hostname");
}; };
''; '';

View File

@ -0,0 +1,33 @@
{ stdenv, fetchFromGitHub, cmake, eigen, libav_all }:
stdenv.mkDerivation rec {
pname = "musly";
version = "unstable-2017-04-26";
src = fetchFromGitHub {
owner = "dominikschnitzer";
repo = "musly";
rev = "f911eacbbe0b39ebe87cb37d0caef09632fa40d6";
sha256 = "1q42wvdwy2pac7bhfraqqj2czw7w2m33ms3ifjl8phm7d87i8825";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ eigen (libav_all.override { vaapiSupport = stdenv.isLinux; }).libav_11 ];
fixupPhase = if stdenv.isDarwin then ''
install_name_tool -change libmusly.dylib $out/lib/libmusly.dylib $out/bin/musly
install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/bin/musly
install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/lib/libmusly.dylib
'' else "";
meta = with stdenv.lib; {
homepage = https://www.musly.org;
description = "A fast and high-quality audio music similarity library written in C/C++";
longDescription = ''
Musly analyzes the the audio signal of music pieces to estimate their similarity.
No meta-data about the music piece is included in the similarity estimation.
To use Musly in your application, have a look at the library documentation
or try the command line application included in the package and start generating
some automatic music playlists right away.
'';
license = licenses.mpl20;
maintainers = with maintainers; [ ggpeti ];
platforms = with platforms; darwin ++ linux;
};
}

View File

@ -2,14 +2,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "deco"; pname = "deco";
version = "0.0.1"; version = "0.0.2";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ebzzry"; owner = "ebzzry";
repo = pname; repo = pname;
rev = "037f473ae4bdce5d3e2f76891785f0f7479cca75"; rev = "49cded5ad123b0169f47cd0dc0f5420f4b581837";
sha256 = "1fv15nc9zqbn3c51vnm50yidj5ivpi61zg55cs46x3gi2x79x43q"; sha256 = "19rvqhw0blwga8ck86yy8hj7j1l9hriphlld6yrfd3yip4jprjzz";
}; };
installPhase = '' installPhase = ''

View File

@ -1,8 +1,8 @@
{ stdenv, appimage-run, fetchurl }: { stdenv, appimage-run, fetchurl }:
let let
version = "1.0.120"; version = "1.0.140";
sha256 = "0j32rg6hm5dirdcibhfhrclnx7vm37fbm4iwkzzinqhzj4jfgbfm"; sha256 = "1114v141jayqhvkkxf7dr864j09nf5nz002c7z0pprzr00fifqzx";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "joplin-${version}"; name = "joplin-${version}";

View File

@ -1,18 +1,18 @@
# This file is autogenerated from update.sh in the same directory. # This file is autogenerated from update.sh in the same directory.
{ {
beta = { beta = {
sha256 = "0z6m7l76qzqsf5d54k331cl7cx1f0lh4x13269mjk7664q382143"; sha256 = "18xzddqi8rgng5vksx23jaiv103prxc38pshwp702nfjfqap7fwy";
sha256bin64 = "0pv5aafwdwcp1ssijgx19ba1ap40j6ayv15ynxvv8fsh51ara1vp"; sha256bin64 = "1r9nnc1xn319aqzxjh10n6nh714lghgskgdkpvw3hnvgb0v9jw4v";
version = "73.0.3683.75"; version = "73.0.3683.86";
}; };
dev = { dev = {
sha256 = "19fwzxnsd1parqghv4b2mif3cj1k1m5hzqnjsnglkgv6xnqny98g"; sha256 = "0vdiaraw3jjr7ykdqbrhjzppvqs9d7jkkx1qyi50dyvrhipxdihz";
sha256bin64 = "1aag76dgcnwga1q4jdgm3ziqvxs1qvrsyqfd7bbsi7axz6qi135v"; sha256bin64 = "0c5mnb1zz1mjs7h18f1c15ygqxl1kcpm2s1imyprh80mapmsxdxk";
version = "74.0.3724.8"; version = "74.0.3729.22";
}; };
stable = { stable = {
sha256 = "0z6m7l76qzqsf5d54k331cl7cx1f0lh4x13269mjk7664q382143"; sha256 = "18xzddqi8rgng5vksx23jaiv103prxc38pshwp702nfjfqap7fwy";
sha256bin64 = "10j93186f3ipynyw6nb6bx4haav33gzvmc72sl9ybz6zljd88dpq"; sha256bin64 = "1mmm4lxvcfvdj6jpqaas51lx1c9zky4zp374phs3cmh9v8l2ijkb";
version = "73.0.3683.75"; version = "73.0.3683.86";
}; };
} }

View File

@ -10,10 +10,10 @@ rec {
firefox = common rec { firefox = common rec {
pname = "firefox"; pname = "firefox";
ffversion = "66.0"; ffversion = "66.0.1";
src = fetchurl { src = fetchurl {
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
sha512 = "1izxikivz0jb8kzq4cd040a70s3j83nw324yvvbmi7g808s7s6b8ljia5allbrkqcgrvrx3rq4w09kwffwmwd43jxgc1bfl8af3v8d9"; sha512 = "3nh42a9s8hzs3823mddqdcrhjb2nrphaz9v94mmp4xx4vra18mhsyddszk6xg5mx33wamvlalicws6l9h1d4i4dnnpchh2l6ch8m9kc";
}; };
patches = [ patches = [
@ -62,10 +62,10 @@ rec {
firefox-esr-60 = common rec { firefox-esr-60 = common rec {
pname = "firefox-esr"; pname = "firefox-esr";
ffversion = "60.6.0esr"; ffversion = "60.6.1esr";
src = fetchurl { src = fetchurl {
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
sha512 = "14vymgczx37q3yj8ndxq6wmmachaf08kx6n3wgjd0qqg5xr18abns999f7ng51abnfrribkrpzmn22vc061sm6wldszawwq6w5r2lg4"; sha512 = "3nl3cisn1sw3y6dxnv0bm143dpp091h1s9j7g73qfx5s6sfxl832lan177ikm00ay7fsly251vi1xz17wwicch1himsmhjisnd3ws51";
}; };
patches = [ patches = [

View File

@ -4,7 +4,7 @@
}: }:
let let
version = "1.32.0"; version = "1.33.0";
# Update these on version bumps according to Makefile # Update these on version bumps according to Makefile
centOsIsoVersion = "v1.15.0"; centOsIsoVersion = "v1.15.0";
@ -18,7 +18,7 @@ in buildGoPackage rec {
owner = "minishift"; owner = "minishift";
repo = "minishift"; repo = "minishift";
rev = "v${version}"; rev = "v${version}";
sha256 = "06qhcycnr06fw5dmmzwizmknm0j34j43894nl3kxa5mxh8x542pa"; sha256 = "0n3pj410bgjblv27p55piln0vi618mnyzzswcyfc2v73bfnzrydf";
}; };
nativeBuildInputs = [ pkgconfig go-bindata makeWrapper ]; nativeBuildInputs = [ pkgconfig go-bindata makeWrapper ];

View File

@ -4,15 +4,15 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-acme"; repo = "terraform-provider-acme";
version = "1.1.0"; version = "1.1.1";
sha256 = "1ha56pr5hixpz2nmqy5558ljkvcs4c23i0jnw4vqdv1a00hi035z"; sha256 = "0fva2kw82s94r4s4dpk38kcmssmcr71ia9jyg1rqmc00ifilfrzj";
}; };
alicloud = alicloud =
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-alicloud"; repo = "terraform-provider-alicloud";
version = "1.32.1"; version = "1.34.0";
sha256 = "0gdx54iw6q3w5pkci7433rd5yrplv1f08svsl7r3a75pww16j103"; sha256 = "1vcf3jvwn7vgbsyp6lqibh3yy301sykjzl9hgzzwxg4p1wq6i038";
}; };
archive = archive =
{ {
@ -39,22 +39,22 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-aws"; repo = "terraform-provider-aws";
version = "2.0.0"; version = "2.1.0";
sha256 = "17hf59wavv44a8a2vy2smcs3sxnws30h81jxiimg91vh1rrhisrw"; sha256 = "1gz7y8k6x3jg8jqy6n105vg2p4vj5zayfhand7xi82w0ykf8kipn";
}; };
azuread = azuread =
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-azuread"; repo = "terraform-provider-azuread";
version = "0.1.0"; version = "0.2.0";
sha256 = "0jrsg3a9cb16jinzjhg2pfm65b1bfhdwnyhag1x3x4kffm3gm148"; sha256 = "01aiynw905gbn6dv23971yhwv0kfcbckcqp4f65sypn1l8szqyjg";
}; };
azurerm = azurerm =
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-azurerm"; repo = "terraform-provider-azurerm";
version = "1.22.1"; version = "1.23.0";
sha256 = "0jg2vsfkk3z1gppcfwla5aqbn9vaxbl8px1hps7nhmylp06l9avv"; sha256 = "11v1832sxnigyiyy4i34mxwn7j18i6iwsff8sqabpa7v9a405ngp";
}; };
azurestack = azurestack =
{ {
@ -109,8 +109,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-cloudflare"; repo = "terraform-provider-cloudflare";
version = "1.11.0"; version = "1.12.0";
sha256 = "14v4461bxxr5zdr11v1s89m1x9kpjxa1mff9inx2vwkdz9s02w0i"; sha256 = "1kq9mbs3if7w9jnsdkj104lvy532lwkd9wr4m0ilh7zql0vm9mpk";
}; };
cloudscale = cloudscale =
{ {
@ -144,8 +144,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-datadog"; repo = "terraform-provider-datadog";
version = "1.6.0"; version = "1.7.0";
sha256 = "16rp6kqax7i8fnl4id3sg0jmhjswx7wrnn1mp4z29gca46ji1nfh"; sha256 = "0a7nvq2nhfv2jg6jc83jjg11yzzkiwyifdj5ni76nri82mbhb14q";
}; };
digitalocean = digitalocean =
{ {
@ -179,8 +179,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-docker"; repo = "terraform-provider-docker";
version = "1.1.0"; version = "1.1.1";
sha256 = "1ba9z9fd69hpg6kg30nf95zzskzipi74s1aadywc068gfrkdm9jj"; sha256 = "0bqwdx8hb7bym4hh01a0n1zrgb1081rvn0qawck712wz0jkzv1r3";
}; };
dyn = dyn =
{ {
@ -228,15 +228,15 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-google"; repo = "terraform-provider-google";
version = "2.1.0"; version = "2.2.0";
sha256 = "1dcdk60xwqr9sazllzxai8g6ghk0pnrz4zwm5qf6m9d3l39y2gkr"; sha256 = "1cnybx6gbd6yfl8nmk2i0k4wag1x5srq927k3ayivr0jgk01d8cl";
}; };
google-beta = google-beta =
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-google-beta"; repo = "terraform-provider-google-beta";
version = "2.1.0"; version = "2.2.0";
sha256 = "04lx43bb1kwd36a78l49knk8n6g5bh6p970yhniyypr28zrss1by"; sha256 = "0m34qas6plh4pchp9vf0hnb3f07y8lzywwmrycfllqg6f7c38869";
}; };
grafana = grafana =
{ {
@ -249,8 +249,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-hcloud"; repo = "terraform-provider-hcloud";
version = "1.8.0"; version = "1.8.1";
sha256 = "1gahka6012rq1p2wwvsbb1w353vm4aaifgb08a6s9la47ca7944s"; sha256 = "07s2fgd9dxajqj0w7pyma0fz5q5a96s7hbpmk1pmbw9lqvxmabgf";
}; };
hedvig = hedvig =
{ {
@ -263,8 +263,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-helm"; repo = "terraform-provider-helm";
version = "0.8.0"; version = "0.9.0";
sha256 = "1v30sr5dql2365bf63gcr0hqn85gk6lk9lzz1i3w0j232jw700bh"; sha256 = "1psqabifb1kabg268ca1x4l79z1xga1pr2sf8x9lrd7z856v18l9";
}; };
heroku = heroku =
{ {
@ -305,8 +305,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-influxdb"; repo = "terraform-provider-influxdb";
version = "1.0.3"; version = "1.1.0";
sha256 = "1mdarb65v977680q55bis9ds84vx8vv84p7sgf0f0svfwq8z9r0k"; sha256 = "1mxvc3pwzgj7r79a5vz8n489xny12wa75zpppgh7948fy8m8b23f";
}; };
kubernetes = kubernetes =
{ {
@ -417,8 +417,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-oci"; repo = "terraform-provider-oci";
version = "3.17.0-rc1"; version = "3.18.0-rc1";
sha256 = "0c49i4fic0bqgpwg05q60a99w7a236kxyhdww5k4sk04cdg3aa1f"; sha256 = "08i08lvvi3i2xyz49yk59k9qsiywds9l0cp6xijj16vkkgwysiw2";
}; };
oneandone = oneandone =
{ {
@ -613,8 +613,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-tencentcloud"; repo = "terraform-provider-tencentcloud";
version = "1.2.2"; version = "1.3.0";
sha256 = "1ypsfm48c30szg3zc1sknblhwcnca8aapfgp62bhszyqxq6zq37s"; sha256 = "1pdzzrg4qrsjiv67yr2g6a9l1n9vqi5n4m53kbb1fp04g3s2sw31";
}; };
terraform = terraform =
{ {
@ -648,8 +648,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-ucloud"; repo = "terraform-provider-ucloud";
version = "1.2.0"; version = "1.3.0";
sha256 = "1pq0288lgj288xjs647n740fbpxgbly0hxy5kz9xr3lf7ld1cclq"; sha256 = "16mnkm781x5ijbdcsxc56kw7ppag4js0gmlx64ry8fwywm8ma0pp";
}; };
ultradns = ultradns =
{ {
@ -662,8 +662,8 @@
{ {
owner = "terraform-providers"; owner = "terraform-providers";
repo = "terraform-provider-vault"; repo = "terraform-provider-vault";
version = "1.5.0"; version = "1.6.0";
sha256 = "1lny94555ws0nd2lp9zkbq6c1324h50izfk88941irl7apjmwzw5"; sha256 = "06hykz37yhwhj6fjz2zi5c80mzv8i91kpsr5cdqkc8rnfmcbhzqx";
}; };
vcd = vcd =
{ {

View File

@ -1,7 +1,7 @@
{ callPackage, stdenv }: { callPackage, stdenv }:
let let
stableVersion = "2.1.14"; stableVersion = "2.1.15";
previewVersion = "2.2.0a2"; previewVersion = "2.2.0a2";
addVersion = args: addVersion = args:
let version = if args.stable then stableVersion else previewVersion; let version = if args.stable then stableVersion else previewVersion;
@ -9,8 +9,8 @@ let
in args // { inherit version branch; }; in args // { inherit version branch; };
mkGui = args: callPackage (import ./gui.nix (addVersion args)) { }; mkGui = args: callPackage (import ./gui.nix (addVersion args)) { };
mkServer = args: callPackage (import ./server.nix (addVersion args)) { }; mkServer = args: callPackage (import ./server.nix (addVersion args)) { };
guiSrcHash = "1k4g1sd9s6nc3rsc918chnkr515qik4hfd4z5lw065bp3lshf48b"; guiSrcHash = "116wigkh5kwna00q200yv2wm8dpi4kmsns96iglzwrrl19fk538p";
serverSrcHash = "0npm9p52jk04g9cmflsfph4dkj6373mfyvd3hff1caqmjalnfxg4"; serverSrcHash = "1mqwydxn58v5ddpnsxvf6vgqwhrfm3mwjwf030lv83zmcjhx237q";
in { in {
guiStable = mkGui { guiStable = mkGui {
stable = true; stable = true;

View File

@ -0,0 +1,15 @@
{
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
"version": "1.0.4",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"dependencies": {
"auto-launch": "^5.0.1",
"electron-store": "^2.0.0",
"electron-window-state": "^4.1.0",
"minimist": "^1.2.0",
"png-to-ico": "^1.0.2"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,77 @@
{ stdenv, fetchFromGitHub, yarn2nix, makeWrapper, makeDesktopItem, electron, riot-web }:
let
executableName = "riot-desktop";
version = "1.0.4";
riot-web-src = fetchFromGitHub {
owner = "vector-im";
repo = "riot-web";
rev = "v${version}";
sha256 = "152mi81miams5a7l9rd12bnf6wkd1r0lyicgr35r5fq0p6z7a4dk";
};
in yarn2nix.mkYarnPackage rec {
name = "riot-desktop-${version}";
inherit version;
src = "${riot-web-src}/electron_app";
# The package manifest should be copied on each update of this package.
# > cp ${riot-web-src}/electron_app/package.json riot-desktop-package.json
packageJSON = ./riot-desktop-package.json;
# The dependency expression can be regenerated using nixos.yarn2nix with the following command:
# > yarn2nix --lockfile=${riot-web-src}/electron_app/yarn.lock > riot-desktop-yarndeps.nix
yarnNix = ./riot-desktop-yarndeps.nix;
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
# resources
mkdir -p "$out/share/riot"
ln -s '${riot-web}' "$out/share/riot/webapp"
cp -r '${riot-web-src}/origin_migrator' "$out/share/riot/origin_migrator"
cp -r '.' "$out/share/riot/electron"
# icons
for icon in $out/share/riot/electron/build/icons/*.png; do
mkdir -p "$out/share/icons/hicolor/$(basename $icon .png)/apps"
ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/riot.png"
done
# desktop item
mkdir -p "$out/share"
ln -s "${desktopItem}/share/applications" "$out/share/applications"
# executable wrapper
makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
--add-flags "$out/share/riot/electron"
'';
# The desktop item properties should be kept in sync with data from upstream:
# * productName and description from
# https://github.com/vector-im/riot-web/blob/develop/electron_app/package.json
# * category and StartupWMClass from the build.linux section of
# https://github.com/vector-im/riot-web/blob/develop/package.json
desktopItem = makeDesktopItem {
inherit name;
exec = executableName;
icon = "riot";
desktopName = "Riot";
genericName = "Matrix Client";
comment = meta.description;
categories = "Network;InstantMessaging;Chat;";
extraEntries = ''
StartupWMClass="riot"
'';
};
meta = with stdenv.lib; {
description = "A feature-rich client for Matrix.org";
homepage = https://about.riot.im/;
license = licenses.asl20;
maintainers = with maintainers; [ pacien ];
inherit (electron.meta) platforms;
};
}

View File

@ -13,11 +13,11 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "eagle-${version}"; name = "eagle-${version}";
version = "9.1.2"; version = "9.3.1";
src = fetchurl { src = fetchurl {
url = "https://eagle-updates.circuits.io/downloads/${builtins.replaceStrings ["."] ["_"] version}/Autodesk_EAGLE_${version}_English_Linux_64bit.tar.gz"; url = "https://eagle-updates.circuits.io/downloads/${builtins.replaceStrings ["."] ["_"] version}/Autodesk_EAGLE_${version}_English_Linux_64bit.tar.gz";
sha256 = "0y7ahl9z5a7l9cjk8hzmyv6ga8chlry5rr8v116q5mnsgs4i11an"; sha256 = "0hrbw368kskjzwjnqrri5j7c10d0z5m81h3s9zhqfrmwym42vdc5";
}; };
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {

View File

@ -2,7 +2,7 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
name = "elan-${version}"; name = "elan-${version}";
version = "0.7.4"; version = "0.7.5";
cargoSha256 = "0vv7kr7rc3lvas7ngp5dp99ajjd5v8k5937ish7zqz1k4970q2f1"; cargoSha256 = "0vv7kr7rc3lvas7ngp5dp99ajjd5v8k5937ish7zqz1k4970q2f1";
@ -10,7 +10,7 @@ rustPlatform.buildRustPackage rec {
owner = "kha"; owner = "kha";
repo = "elan"; repo = "elan";
rev = "v${version}"; rev = "v${version}";
sha256 = "0yf8mfgp4l78f5cjq1imh462axaa24jfhn69cgf7prw4jrmw3bch"; sha256 = "1147f3lzr6lgvf580ppspn20bdwnf6l8idh1h5ana0p0lf5a0dn1";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];

View File

@ -121,8 +121,8 @@ in {
}; };
subversion_1_10 = common { subversion_1_10 = common {
version = "1.10.3"; version = "1.10.4";
sha256 = "1z6r3n91a4znsh68rl3jisfr7k4faymhbpalmmvsmvsap34al3cz"; sha256 = "18c1vdq32nil76w678lxmp73jsbqha3dmzgmfrj76nc0xjmywql2";
extraBuildInputs = [ lz4 utf8proc ]; extraBuildInputs = [ lz4 utf8proc ];
}; };

View File

@ -0,0 +1,42 @@
{ stdenv, fetchFromGitHub, gnumake,
libX11, libXinerama, libXrandr, libXpm, libXft, imlib2 }:
stdenv.mkDerivation rec {
name = "wmfs-${version}";
version = "201902";
src = fetchFromGitHub {
owner = "xorg62";
repo = "wmfs";
sha256 = "sha256:1m7dsmmlhq2qipim659cp9aqlriz1cwrrgspl8baa5pncln0gd5c";
rev = "b7b8ff812d28c79cb22a73db2739989996fdc6c2";
};
nativeBuildInputs = [
gnumake
];
buildInputs = [
imlib2
libX11
libXinerama
libXrandr
libXpm
libXft
];
preConfigure = "substituteInPlace configure --replace '-lxft' '-lXft'";
makeFlags = [
"PREFIX=${placeholder "out"}"
"XDG_CONFIG_DIR=${placeholder "out"}/etc/xdg"
"MANPREFIX=${placeholder "out"}/share/man"
];
meta = with stdenv.lib; {
description = "Window manager from scratch";
license = licenses.bsd2;
maintainers = [ maintainers.balsoft ];
platforms = platforms.linux;
};
}

View File

@ -200,7 +200,7 @@ rec {
# Unpack all of the parent layers into the image. # Unpack all of the parent layers into the image.
lowerdir="" lowerdir=""
extractionID=0 extractionID=0
for layerTar in $(cat layer-list); do for layerTar in $(tac layer-list); do
echo "Unpacking layer $layerTar" echo "Unpacking layer $layerTar"
extractionID=$((extractionID + 1)) extractionID=$((extractionID + 1))

View File

@ -15,7 +15,7 @@ index 6a1a2121..f03fd349 100644
@@ -4,11 +4,6 @@ add_subdirectory(ksyncdbusenv) @@ -4,11 +4,6 @@ add_subdirectory(ksyncdbusenv)
add_subdirectory(waitforname) add_subdirectory(waitforname)
add_subdirectory(kcheckrunning) add_subdirectory(kcheckrunning)
-#FIXME: reconsider, looks fishy -#FIXME: reconsider, looks fishy
-if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr") -if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
- set(EXPORT_XCURSOR_PATH "XCURSOR_PATH=${KDE_INSTALL_FULL_DATAROOTDIR}/icons:$XCURSOR_PATH\":~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons\"; export XCURSOR_PATH") - set(EXPORT_XCURSOR_PATH "XCURSOR_PATH=${KDE_INSTALL_FULL_DATAROOTDIR}/icons:$XCURSOR_PATH\":~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons\"; export XCURSOR_PATH")
@ -45,7 +45,7 @@ index b68f0c68..a18efd96 100644
-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) -# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ )
+# NIXPKGS KDE STARTUP SCRIPT ( @PROJECT_VERSION@ ) +# NIXPKGS KDE STARTUP SCRIPT ( @PROJECT_VERSION@ )
# #
+if test "x$1" = x--failsafe; then +if test "x$1" = x--failsafe; then
+ KDE_FAILSAFE=1 # General failsafe flag + KDE_FAILSAFE=1 # General failsafe flag
+ KWIN_COMPOSE=N # Disable KWin's compositing + KWIN_COMPOSE=N # Disable KWin's compositing
@ -56,7 +56,7 @@ index b68f0c68..a18efd96 100644
# When the X server dies we get a HUP signal from xinit. We must ignore it # When the X server dies we get a HUP signal from xinit. We must ignore it
# because we still need to do some cleanup. # because we still need to do some cleanup.
trap 'echo GOT SIGHUP' HUP trap 'echo GOT SIGHUP' HUP
-# Check if a Plasma session already is running and whether it's possible to connect to X -# Check if a Plasma session already is running and whether it's possible to connect to X
-kcheckrunning -kcheckrunning
+# we have to unset this for Darwin since it will screw up KDE's dynamic-loading +# we have to unset this for Darwin since it will screw up KDE's dynamic-loading
@ -79,12 +79,12 @@ index b68f0c68..a18efd96 100644
+ echo "\$DISPLAY is not set or cannot connect to the X server." + echo "\$DISPLAY is not set or cannot connect to the X server."
+ exit 1 + exit 1
fi fi
# Boot sequence: # Boot sequence:
@@ -33,62 +42,134 @@ fi @@ -33,62 +42,134 @@ fi
# #
# * Then ksmserver is started which takes control of the rest of the startup sequence # * Then ksmserver is started which takes control of the rest of the startup sequence
-if [ ${XDG_CONFIG_HOME} ]; then -if [ ${XDG_CONFIG_HOME} ]; then
- configDir=$XDG_CONFIG_HOME; - configDir=$XDG_CONFIG_HOME;
-else -else
@ -122,7 +122,7 @@ index b68f0c68..a18efd96 100644
+ @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf + @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf
fi fi
sysConfigDirs=${XDG_CONFIG_DIRS:-/etc/xdg} sysConfigDirs=${XDG_CONFIG_DIRS:-/etc/xdg}
-# We need to create config folder so we can write startupconfigkeys -# We need to create config folder so we can write startupconfigkeys
-mkdir -p $configDir -mkdir -p $configDir
+@NIXPKGS_KBUILDSYCOCA5@ +@NIXPKGS_KBUILDSYCOCA5@
@ -176,7 +176,7 @@ index b68f0c68..a18efd96 100644
+cursorSize=0 +cursorSize=0
+EOF +EOF
+fi +fi
#This is basically setting defaults so we can use them with kstartupconfig5 #This is basically setting defaults so we can use them with kstartupconfig5
-cat >$configDir/startupconfigkeys <<EOF -cat >$configDir/startupconfigkeys <<EOF
+cat >"$XDG_CONFIG_HOME/startupconfigkeys" <<EOF +cat >"$XDG_CONFIG_HOME/startupconfigkeys" <<EOF
@ -190,7 +190,7 @@ index b68f0c68..a18efd96 100644
kcmfonts General forceFontDPI 0 kcmfonts General forceFontDPI 0
+kcmfonts General dontChangeAASettings true +kcmfonts General dontChangeAASettings true
EOF EOF
# preload the user's locale on first start # preload the user's locale on first start
-plasmalocalerc=$configDir/plasma-localerc -plasmalocalerc=$configDir/plasma-localerc
-test -f $plasmalocalerc || { -test -f $plasmalocalerc || {
@ -203,7 +203,7 @@ index b68f0c68..a18efd96 100644
EOF EOF
-} -}
+fi +fi
# export LC_* variables set by kcmshell5 formats into environment # export LC_* variables set by kcmshell5 formats into environment
# so it can be picked up by QLocale and friends. # so it can be picked up by QLocale and friends.
-exportformatssettings=$configDir/plasma-locale-settings.sh -exportformatssettings=$configDir/plasma-locale-settings.sh
@ -214,7 +214,7 @@ index b68f0c68..a18efd96 100644
+if [ -r "$exportformatssettings" ]; then +if [ -r "$exportformatssettings" ]; then
+ . "$exportformatssettings" + . "$exportformatssettings"
+fi +fi
# Write a default kdeglobals file to set up the font # Write a default kdeglobals file to set up the font
-kdeglobalsfile=$configDir/kdeglobals -kdeglobalsfile=$configDir/kdeglobals
-test -f $kdeglobalsfile || { -test -f $kdeglobalsfile || {
@ -237,7 +237,7 @@ index b68f0c68..a18efd96 100644
EOF EOF
-} -}
+fi +fi
-kstartupconfig5 -kstartupconfig5
-returncode=$? -returncode=$?
-if test $returncode -ne 0; then -if test $returncode -ne 0; then
@ -251,13 +251,13 @@ index b68f0c68..a18efd96 100644
+if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then +if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then
+ . "$XDG_CONFIG_HOME/startupconfig" + . "$XDG_CONFIG_HOME/startupconfig"
+fi +fi
#Do not sync any of this section with the wayland versions as there scale factors are #Do not sync any of this section with the wayland versions as there scale factors are
#sent properly over wl_output #sent properly over wl_output
@@ -104,26 +185,33 @@ fi @@ -104,26 +185,33 @@ fi
#otherwise apps that manually opt in for high DPI get auto scaled by the developer AND manually scaled by us #otherwise apps that manually opt in for high DPI get auto scaled by the developer AND manually scaled by us
export QT_AUTO_SCREEN_SCALE_FACTOR=0 export QT_AUTO_SCREEN_SCALE_FACTOR=0
+#Set the QtQuickControls style to our own: for QtQuickControls1 +#Set the QtQuickControls style to our own: for QtQuickControls1
+#it will fall back to Desktop, while it will use our own org.kde.desktop +#it will fall back to Desktop, while it will use our own org.kde.desktop
+#for QtQuickControlsStyle and Kirigami +#for QtQuickControlsStyle and Kirigami
@ -293,7 +293,7 @@ index b68f0c68..a18efd96 100644
+ export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" + export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize"
fi fi
fi fi
-if test "$kcmfonts_general_forcefontdpi" -ne 0; then -if test "$kcmfonts_general_forcefontdpi" -ne 0; then
- xrdb -quiet -merge -nocpp <<EOF - xrdb -quiet -merge -nocpp <<EOF
+if [ "${kcmfonts_general_forcefontdpi:-0}" -ne 0 ]; then +if [ "${kcmfonts_general_forcefontdpi:-0}" -ne 0 ]; then
@ -303,7 +303,7 @@ index b68f0c68..a18efd96 100644
fi fi
@@ -132,11 +220,11 @@ dl=$DESKTOP_LOCKED @@ -132,11 +220,11 @@ dl=$DESKTOP_LOCKED
unset DESKTOP_LOCKED # Don't want it in the environment unset DESKTOP_LOCKED # Don't want it in the environment
ksplash_pid= ksplash_pid=
-if test -z "$dl"; then -if test -z "$dl"; then
+if [ -z "$dl" ]; then +if [ -z "$dl" ]; then
@ -318,7 +318,7 @@ index b68f0c68..a18efd96 100644
@@ -145,27 +233,6 @@ if test -z "$dl"; then @@ -145,27 +233,6 @@ if test -z "$dl"; then
esac esac
fi fi
-# Source scripts found in <config locations>/plasma-workspace/env/*.sh -# Source scripts found in <config locations>/plasma-workspace/env/*.sh
-# (where <config locations> correspond to the system and user's configuration -# (where <config locations> correspond to the system and user's configuration
-# directory. -# directory.
@ -349,19 +349,19 @@ index b68f0c68..a18efd96 100644
export KDE_FULL_SESSION export KDE_FULL_SESSION
-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true -xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
+@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true +@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
KDE_SESSION_VERSION=5 KDE_SESSION_VERSION=5
export KDE_SESSION_VERSION export KDE_SESSION_VERSION
-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 -xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
+@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 +@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
-KDE_SESSION_UID=`id -ru` -KDE_SESSION_UID=`id -ru`
+KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) +KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru)
export KDE_SESSION_UID export KDE_SESSION_UID
XDG_CURRENT_DESKTOP=KDE XDG_CURRENT_DESKTOP=KDE
export XDG_CURRENT_DESKTOP export XDG_CURRENT_DESKTOP
+# Enforce xcb QPA. Helps switching between Wayland and X sessions. +# Enforce xcb QPA. Helps switching between Wayland and X sessions.
+export QT_QPA_PLATFORM=xcb +export QT_QPA_PLATFORM=xcb
+ +
@ -404,7 +404,7 @@ index b68f0c68..a18efd96 100644
- xmessage -geometry 500x100 "Could not sync environment to dbus." - xmessage -geometry 500x100 "Could not sync environment to dbus."
exit 1 exit 1
fi fi
# We set LD_BIND_NOW to increase the efficiency of kdeinit. # We set LD_BIND_NOW to increase the efficiency of kdeinit.
# kdeinit unsets this variable before loading applications. # kdeinit unsets this variable before loading applications.
-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup -LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup
@ -416,10 +416,10 @@ index b68f0c68..a18efd96 100644
- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." - xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
exit 1 exit 1
fi fi
-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & -qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
+@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & +@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
# finally, give the session control to the session manager # finally, give the session control to the session manager
# see kdebase/ksmserver for the description of the rest of the startup sequence # see kdebase/ksmserver for the description of the rest of the startup sequence
@@ -270,12 +358,16 @@ qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & @@ -270,12 +358,16 @@ qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
@ -445,10 +445,10 @@ index b68f0c68..a18efd96 100644
@@ -286,36 +378,36 @@ fi @@ -286,36 +378,36 @@ fi
#Anything after here is logout #Anything after here is logout
#It is not called after shutdown/restart #It is not called after shutdown/restart
-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` -wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true`
+wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) +wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true)
-if test x"$wait_drkonqi"x = x"true"x ; then -if test x"$wait_drkonqi"x = x"true"x ; then
+if [ x"$wait_drkonqi"x = x"true"x ]; then +if [ x"$wait_drkonqi"x = x"true"x ]; then
# wait for remaining drkonqi instances with timeout (in seconds) # wait for remaining drkonqi instances with timeout (in seconds)
@ -471,18 +471,18 @@ index b68f0c68..a18efd96 100644
fi fi
done done
fi fi
echo 'startkde: Shutting down...' 1>&2 echo 'startkde: Shutting down...' 1>&2
# just in case # just in case
-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null -test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+if [ -n "$ksplash_pid" ]; then +if [ -n "$ksplash_pid" ]; then
+ kill "$ksplash_pid" 2>/dev/null + kill "$ksplash_pid" 2>/dev/null
+fi +fi
# Clean up # Clean up
-kdeinit5_shutdown -kdeinit5_shutdown
+@NIXPKGS_KDEINIT5_SHUTDOWN@ +@NIXPKGS_KDEINIT5_SHUTDOWN@
unset KDE_FULL_SESSION unset KDE_FULL_SESSION
-xprop -root -remove KDE_FULL_SESSION -xprop -root -remove KDE_FULL_SESSION
+@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION +@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION
@ -490,7 +490,7 @@ index b68f0c68..a18efd96 100644
-xprop -root -remove KDE_SESSION_VERSION -xprop -root -remove KDE_SESSION_VERSION
+@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION +@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION
unset KDE_SESSION_UID unset KDE_SESSION_UID
echo 'startkde: Done.' 1>&2 echo 'startkde: Done.' 1>&2
diff --git a/startkde/startplasma.cmake b/startkde/startplasma.cmake diff --git a/startkde/startplasma.cmake b/startkde/startplasma.cmake
index 1fe41c59..39c0b521 100644 index 1fe41c59..39c0b521 100644
@ -502,12 +502,12 @@ index 1fe41c59..39c0b521 100644
-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) -# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ )
+# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) +# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ )
# #
# Boot sequence: # Boot sequence:
@@ -17,28 +17,26 @@ @@ -17,28 +17,26 @@
# #
# * Then ksmserver is started which takes control of the rest of the startup sequence # * Then ksmserver is started which takes control of the rest of the startup sequence
-# We need to create config folder so we can write startupconfigkeys -# We need to create config folder so we can write startupconfigkeys
-if [ ${XDG_CONFIG_HOME} ]; then -if [ ${XDG_CONFIG_HOME} ]; then
- configDir=$XDG_CONFIG_HOME; - configDir=$XDG_CONFIG_HOME;
@ -517,7 +517,7 @@ index 1fe41c59..39c0b521 100644
+if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then +if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then
+ . "$XDG_CONFIG_HOME/startupconfig" + . "$XDG_CONFIG_HOME/startupconfig"
fi fi
-[ -r $configDir/startupconfig ] && . $configDir/startupconfig -[ -r $configDir/startupconfig ] && . $configDir/startupconfig
- -
-xrdb -quiet -merge -nocpp <<EOF -xrdb -quiet -merge -nocpp <<EOF
@ -526,10 +526,10 @@ index 1fe41c59..39c0b521 100644
Xft.dpi: $QT_WAYLAND_FORCE_DPI Xft.dpi: $QT_WAYLAND_FORCE_DPI
EOF EOF
+fi +fi
dl=$DESKTOP_LOCKED dl=$DESKTOP_LOCKED
unset DESKTOP_LOCKED # Don't want it in the environment unset DESKTOP_LOCKED # Don't want it in the environment
ksplash_pid= ksplash_pid=
-if test -z "$dl"; then -if test -z "$dl"; then
+if [ -z "$dl" ]; then +if [ -z "$dl" ]; then
@ -557,19 +557,19 @@ index 1fe41c59..39c0b521 100644
- export GS_LIB - export GS_LIB
-fi -fi
+@NIXPKGS_XSETROOT@ -cursor_name left_ptr +@NIXPKGS_XSETROOT@ -cursor_name left_ptr
echo 'startplasma: Starting up...' 1>&2 echo 'startplasma: Starting up...' 1>&2
# export our session variables to the Xwayland server # export our session variables to the Xwayland server
-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true -xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 -xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
+@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true +@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
+@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 +@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
# At this point all environment variables are set, let's send it to the DBus session server to update the activation environment # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment
if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then
@@ -90,16 +78,15 @@ fi @@ -90,16 +78,15 @@ fi
# We set LD_BIND_NOW to increase the efficiency of kdeinit. # We set LD_BIND_NOW to increase the efficiency of kdeinit.
# kdeinit unsets this variable before loading applications. # kdeinit unsets this variable before loading applications.
-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup -LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup
@ -581,21 +581,21 @@ index 1fe41c59..39c0b521 100644
- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." - xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
exit 1 exit 1
fi fi
-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & -qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
+@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & +@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
# finally, give the session control to the session manager # finally, give the session control to the session manager
# see kdebase/ksmserver for the description of the rest of the startup sequence # see kdebase/ksmserver for the description of the rest of the startup sequence
@@ -125,19 +112,19 @@ fi @@ -125,19 +112,19 @@ fi
#Anything after here is logout #Anything after here is logout
#It is not called after shutdown/restart #It is not called after shutdown/restart
-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` -wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true`
- -
-if test x"$wait_drkonqi"x = x"true"x ; then -if test x"$wait_drkonqi"x = x"true"x ; then
+wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) +wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true)
+ +
+if [ x"$wait_drkonqi"x = x"true"x ]; then +if [ x"$wait_drkonqi"x = x"true"x ]; then
# wait for remaining drkonqi instances with timeout (in seconds) # wait for remaining drkonqi instances with timeout (in seconds)
- wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900` - wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
@ -616,18 +616,18 @@ index 1fe41c59..39c0b521 100644
break break
fi fi
@@ -146,15 +133,17 @@ fi @@ -146,15 +133,17 @@ fi
echo 'startplasma: Shutting down...' 1>&2 echo 'startplasma: Shutting down...' 1>&2
# just in case # just in case
-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null -test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+if [ -n "$ksplash_pid" ]; then +if [ -n "$ksplash_pid" ]; then
+ "$ksplash_pid" 2>/dev/null + "$ksplash_pid" 2>/dev/null
+fi +fi
# Clean up # Clean up
-kdeinit5_shutdown -kdeinit5_shutdown
+@NIXPKGS_KDEINIT5_SHUTDOWN@ +@NIXPKGS_KDEINIT5_SHUTDOWN@
unset KDE_FULL_SESSION unset KDE_FULL_SESSION
-xprop -root -remove KDE_FULL_SESSION -xprop -root -remove KDE_FULL_SESSION
+@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION +@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION
@ -635,7 +635,7 @@ index 1fe41c59..39c0b521 100644
-xprop -root -remove KDE_SESSION_VERSION -xprop -root -remove KDE_SESSION_VERSION
+@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION +@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION
unset KDE_SESSION_UID unset KDE_SESSION_UID
echo 'startplasma: Done.' 1>&2 echo 'startplasma: Done.' 1>&2
diff --git a/startkde/startplasmacompositor.cmake b/startkde/startplasmacompositor.cmake diff --git a/startkde/startplasmacompositor.cmake b/startkde/startplasmacompositor.cmake
index dcb473a4..48dbf465 100644 index dcb473a4..48dbf465 100644
@ -647,7 +647,7 @@ index dcb473a4..48dbf465 100644
-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) -# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ )
+# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) +# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ )
# #
-# We need to create config folder so we can write startupconfigkeys -# We need to create config folder so we can write startupconfigkeys
-if [ ${XDG_CONFIG_HOME} ]; then -if [ ${XDG_CONFIG_HOME} ]; then
- configDir=$XDG_CONFIG_HOME; - configDir=$XDG_CONFIG_HOME;
@ -714,7 +714,7 @@ index dcb473a4..48dbf465 100644
+EOF +EOF
fi fi
sysConfigDirs=${XDG_CONFIG_DIRS:-/etc/xdg} sysConfigDirs=${XDG_CONFIG_DIRS:-/etc/xdg}
-# We need to create config folder so we can write startupconfigkeys -# We need to create config folder so we can write startupconfigkeys
-mkdir -p $configDir -mkdir -p $configDir
+# Set the default GTK 3 theme +# Set the default GTK 3 theme
@ -743,7 +743,7 @@ index dcb473a4..48dbf465 100644
+cursorSize=0 +cursorSize=0
+EOF +EOF
+fi +fi
#This is basically setting defaults so we can use them with kstartupconfig5 #This is basically setting defaults so we can use them with kstartupconfig5
-cat >$configDir/startupconfigkeys <<EOF -cat >$configDir/startupconfigkeys <<EOF
+cat >"$XDG_CONFIG_HOME/startupconfigkeys" <<EOF +cat >"$XDG_CONFIG_HOME/startupconfigkeys" <<EOF
@ -757,7 +757,7 @@ index dcb473a4..48dbf465 100644
+kcmfonts General forceFontDPI 0 +kcmfonts General forceFontDPI 0
+kcmfonts General dontChangeAASettings true +kcmfonts General dontChangeAASettings true
EOF EOF
# preload the user's locale on first start # preload the user's locale on first start
-plasmalocalerc=$configDir/plasma-localerc -plasmalocalerc=$configDir/plasma-localerc
-test -f $plasmalocalerc || { -test -f $plasmalocalerc || {
@ -770,7 +770,7 @@ index dcb473a4..48dbf465 100644
EOF EOF
-} -}
+fi +fi
# export LC_* variables set by kcmshell5 formats into environment # export LC_* variables set by kcmshell5 formats into environment
# so it can be picked up by QLocale and friends. # so it can be picked up by QLocale and friends.
-exportformatssettings=$configDir/plasma-locale-settings.sh -exportformatssettings=$configDir/plasma-locale-settings.sh
@ -781,7 +781,7 @@ index dcb473a4..48dbf465 100644
+if [ -r "$exportformatssettings" ]; then +if [ -r "$exportformatssettings" ]; then
+ . "$exportformatssettings" + . "$exportformatssettings"
+fi +fi
# Write a default kdeglobals file to set up the font # Write a default kdeglobals file to set up the font
-kdeglobalsfile=$configDir/kdeglobals -kdeglobalsfile=$configDir/kdeglobals
-test -f $kdeglobalsfile || { -test -f $kdeglobalsfile || {
@ -835,7 +835,7 @@ index dcb473a4..48dbf465 100644
- test -h $oxygenDir || ln -s $prefixDir $oxygenDir && fc-cache $oxygenDir - test -h $oxygenDir || ln -s $prefixDir $oxygenDir && fc-cache $oxygenDir
- } - }
fi fi
-kstartupconfig5 -kstartupconfig5
+@CMAKE_INSTALL_FULL_BINDIR@/kstartupconfig5 +@CMAKE_INSTALL_FULL_BINDIR@/kstartupconfig5
returncode=$? returncode=$?
@ -846,11 +846,11 @@ index dcb473a4..48dbf465 100644
+if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then +if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then
+ . "$XDG_CONFIG_HOME/startupconfig" + . "$XDG_CONFIG_HOME/startupconfig"
+fi +fi
#Manually disable auto scaling because we are scaling above #Manually disable auto scaling because we are scaling above
#otherwise apps that manually opt in for high DPI get auto scaled by the developer AND scaled by the wl_output #otherwise apps that manually opt in for high DPI get auto scaled by the developer AND scaled by the wl_output
export QT_AUTO_SCREEN_SCALE_FACTOR=0 export QT_AUTO_SCREEN_SCALE_FACTOR=0
+XCURSOR_PATH=~/.icons +XCURSOR_PATH=~/.icons
+IFS=":" read -r -a xdgDirs <<< "$XDG_DATA_DIRS" +IFS=":" read -r -a xdgDirs <<< "$XDG_DATA_DIRS"
+for xdgDir in "${xdgDirs[@]}"; do +for xdgDir in "${xdgDirs[@]}"; do
@ -883,20 +883,20 @@ index dcb473a4..48dbf465 100644
+ export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" + export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize"
fi fi
fi fi
-if test "$kcmfonts_general_forcefontdpiwayland" -ne 0; then -if test "$kcmfonts_general_forcefontdpiwayland" -ne 0; then
+if [ "${kcmfonts_general_forcefontdpiwayland:-0}" -ne 0 ]; then +if [ "${kcmfonts_general_forcefontdpiwayland:-0}" -ne 0 ]; then
export QT_WAYLAND_FORCE_DPI=$kcmfonts_general_forcefontdpiwayland export QT_WAYLAND_FORCE_DPI=$kcmfonts_general_forcefontdpiwayland
else else
export QT_WAYLAND_FORCE_DPI=96 export QT_WAYLAND_FORCE_DPI=96
@@ -120,12 +167,12 @@ fi @@ -120,12 +167,12 @@ fi
# Get a property value from org.freedesktop.locale1 # Get a property value from org.freedesktop.locale1
queryLocale1() { queryLocale1() {
- qdbus --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1" - qdbus --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1"
+ @NIXPKGS_QDBUS@ --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1" + @NIXPKGS_QDBUS@ --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1"
} }
# Query whether org.freedesktop.locale1 is available. If it is, try to # Query whether org.freedesktop.locale1 is available. If it is, try to
# set XKB_DEFAULT_{MODEL,LAYOUT,VARIANT,OPTIONS} accordingly. # set XKB_DEFAULT_{MODEL,LAYOUT,VARIANT,OPTIONS} accordingly.
-if qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then -if qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then
@ -907,7 +907,7 @@ index dcb473a4..48dbf465 100644
@@ -141,41 +188,10 @@ if qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then @@ -141,41 +188,10 @@ if qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then
fi fi
fi fi
-# Source scripts found in <config locations>/plasma-workspace/env/*.sh -# Source scripts found in <config locations>/plasma-workspace/env/*.sh
-# (where <config locations> correspond to the system and user's configuration -# (where <config locations> correspond to the system and user's configuration
-# directories, as identified by Qt's qtpaths, e.g. $HOME/.config -# directories, as identified by Qt's qtpaths, e.g. $HOME/.config
@ -931,7 +931,7 @@ index dcb473a4..48dbf465 100644
-done -done
- -
echo 'startplasmacompositor: Starting up...' 1>&2 echo 'startplasmacompositor: Starting up...' 1>&2
-# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all. -# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all.
-# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend -# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend
-# to set it to a list of paths *not* including the KDE prefix if it's not /usr or -# to set it to a list of paths *not* including the KDE prefix if it's not /usr or
@ -950,16 +950,16 @@ index dcb473a4..48dbf465 100644
@@ -212,7 +228,7 @@ export KDE_FULL_SESSION @@ -212,7 +228,7 @@ export KDE_FULL_SESSION
KDE_SESSION_VERSION=5 KDE_SESSION_VERSION=5
export KDE_SESSION_VERSION export KDE_SESSION_VERSION
-KDE_SESSION_UID=`id -ru` -KDE_SESSION_UID=`id -ru`
+KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) +KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru)
export KDE_SESSION_UID export KDE_SESSION_UID
XDG_CURRENT_DESKTOP=KDE XDG_CURRENT_DESKTOP=KDE
@@ -221,20 +237,41 @@ export XDG_CURRENT_DESKTOP @@ -221,20 +237,41 @@ export XDG_CURRENT_DESKTOP
XDG_SESSION_TYPE=wayland XDG_SESSION_TYPE=wayland
export XDG_SESSION_TYPE export XDG_SESSION_TYPE
+# Source scripts found in <config locations>/plasma-workspace/env/*.sh +# Source scripts found in <config locations>/plasma-workspace/env/*.sh
+# (where <config locations> correspond to the system and user's configuration +# (where <config locations> correspond to the system and user's configuration
+# directories, as identified by Qt's qtpaths, e.g. $HOME/.config +# directories, as identified by Qt's qtpaths, e.g. $HOME/.config
@ -1002,9 +1002,9 @@ index dcb473a4..48dbf465 100644
+ echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2 + echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2
+ exit 1 + exit 1
fi fi
-@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@CMAKE_INSTALL_FULL_LIBEXECDIR@/startplasma -@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@CMAKE_INSTALL_FULL_LIBEXECDIR@/startplasma
+@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@NIXPKGS_STARTPLASMA@ +@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@NIXPKGS_STARTPLASMA@
echo 'startplasmacompositor: Shutting down...' 1>&2 echo 'startplasmacompositor: Shutting down...' 1>&2

View File

@ -13,7 +13,7 @@ let
inherit version; inherit version;
sha256 = "678c98275431fad324275dec63791e4a17558b40e5a110e20a82866139a85a5a"; sha256 = "678c98275431fad324275dec63791e4a17558b40e5a110e20a82866139a85a5a";
}; };
patches = []; postPatch = "";
}); });
platformio = self.callPackage ./core.nix { }; platformio = self.callPackage ./core.nix { };

View File

@ -147,7 +147,11 @@ let
done < <(find $out $lib $doc -type f -print0) done < <(find $out $lib $doc -type f -print0)
''; '';
doInstallCheck = true; # cuda-gdb doesn't run correctly when not using sandboxing, so
# temporarily disabling the install check. This should be set to true
# when we figure out how to get `cuda-gdb --version` to run correctly
# when not using sandboxing.
doInstallCheck = false;
postInstallCheck = let postInstallCheck = let
in '' in ''
# Smoke test binaries # Smoke test binaries

View File

@ -2474,7 +2474,6 @@ unsupported-platforms:
gi-ostree: [ x86_64-darwin ] gi-ostree: [ x86_64-darwin ]
gtk-mac-integration: [ i686-linux, x86_64-linux ] gtk-mac-integration: [ i686-linux, x86_64-linux ]
hcwiid: [ x86_64-darwin ] hcwiid: [ x86_64-darwin ]
hfsevents: [ x86_64-darwin ]
HFuse: [ x86_64-darwin ] HFuse: [ x86_64-darwin ]
hommage-ds: [ i686-linux, x86_64-linux, x86_64-darwin ] hommage-ds: [ i686-linux, x86_64-linux, x86_64-darwin ]
lio-fs: [ x86_64-darwin ] lio-fs: [ x86_64-darwin ]

View File

@ -63,10 +63,10 @@ in {
sourceVersion = { sourceVersion = {
major = "3"; major = "3";
minor = "5"; minor = "5";
patch = "6"; patch = "7";
suffix = ""; suffix = "";
}; };
sha256 = "0pqmf51zy2lzhbaj4yya2py2qr653j9152d0rg3p7wi1yl2dwp7m"; sha256 = "1p67pnp2ca5przx2s45r8m55dcn6f5hsm0l4s1zp7mglkf4r4n18";
inherit (darwin) CF configd; inherit (darwin) CF configd;
inherit passthruFun; inherit passthruFun;
}; };

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "fstrm-${version}"; name = "fstrm-${version}";
version = "0.4.0"; version = "0.5.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "farsightsec"; owner = "farsightsec";
repo = "fstrm"; repo = "fstrm";
rev = "v${version}"; rev = "v${version}";
sha256 = "11i8b3wy6j3z3fcv816xccxxlrfkczdr8bm2gnan6yv4ppbji4ny"; sha256 = "1vm880h6vpnxqh7v0x17yfim6f2fbxwkm03ms58s2h9akmph9xm5";
}; };
outputs = [ "bin" "out" "dev" ]; outputs = [ "bin" "out" "dev" ];

View File

@ -3,6 +3,7 @@
, autoreconfHook, fetchpatch , autoreconfHook, fetchpatch
, git , git
, texinfo , texinfo
, buildPackages
, qtbase ? null , qtbase ? null
, pythonSupport ? false, swig2 ? null, python ? null , pythonSupport ? false, swig2 ? null, python ? null
}: }:
@ -31,6 +32,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ file pkgconfig gnupg autoreconfHook git texinfo ] nativeBuildInputs = [ file pkgconfig gnupg autoreconfHook git texinfo ]
++ lib.optionals pythonSupport [ python swig2 which ncurses ]; ++ lib.optionals pythonSupport [ python swig2 which ncurses ];
depsBuildBuild = [ buildPackages.stdenv.cc ];
patches = [ patches = [
(fetchpatch { (fetchpatch {
name = "fix-key-expiry.patch"; name = "fix-key-expiry.patch";
@ -46,6 +49,7 @@ stdenv.mkDerivation rec {
configureFlags = [ configureFlags = [
"--enable-fixed-path=${gnupg}/bin" "--enable-fixed-path=${gnupg}/bin"
"--with-libgpg-error-prefix=${libgpgerror.dev}" "--with-libgpg-error-prefix=${libgpgerror.dev}"
"--with-libassuan-prefix=${libassuan.dev}"
] ++ lib.optional pythonSupport "--enable-languages=python"; ] ++ lib.optional pythonSupport "--enable-languages=python";
NIX_CFLAGS_COMPILE = NIX_CFLAGS_COMPILE =

View File

@ -19,6 +19,17 @@ stdenv.mkDerivation rec {
cmocka cmocka
]; ];
patches = [
# CVE-2019-3824
# downloading the patch from debian as they have ported the patch from samba to ldb but otherwise is identical to
# https://bugzilla.samba.org/attachment.cgi?id=14857
(fetchurl {
name = "CVE-2019-3824.patch";
url = "https://sources.debian.org/data/main/l/ldb/2:1.1.27-1+deb9u1/debian/patches/CVE-2019-3824-master-v4-5-02.patch";
sha256 = "1idnqckvjh18rh9sbq90rr4sxfviha9nd1ca9pd6lai0y6r6q4yd";
})
];
preConfigure = '' preConfigure = ''
sed -i 's,#!/usr/bin/env python,#!${python}/bin/python,g' buildtools/bin/waf sed -i 's,#!/usr/bin/env python,#!${python}/bin/python,g' buildtools/bin/waf
''; '';

View File

@ -0,0 +1,27 @@
{ stdenv, lib, fetchurl, cmake, pkgconfig, gtest, doxygen
, graphviz, lcov, writeText }:
stdenv.mkDerivation rec {
pname = "properties-cpp";
version = "0.0.1";
src = let srcver = version+"+14.10.20140730"; in
fetchurl {
url = "https://launchpad.net/ubuntu/+archive/primary/+files/${pname}_${srcver}.orig.tar.gz";
sha256 = "08vjyv7ibn6jh2ikj5v48kjpr3n6hlkp9qlvdn8r0vpiwzah0m2w";
};
buildInputs = [ cmake gtest doxygen pkgconfig graphviz lcov ];
patchPhase = ''
sed -i "/add_subdirectory(tests)/d" CMakeLists.txt
'';
meta = with stdenv.lib; {
homepage = https://launchpad.net/properties-cpp;
description = "A very simple convenience library for handling properties and signals in C++11.";
license = licenses.lgpl3;
maintainers = with maintainers; [ edwtjo ];
};
}

View File

@ -45,6 +45,7 @@
, "ionic" , "ionic"
, "ios-deploy" , "ios-deploy"
, "imapnotify" , "imapnotify"
, "indium"
, "jake" , "jake"
, "javascript-typescript-langserver" , "javascript-typescript-langserver"
, "jsdoc" , "jsdoc"

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
{ stdenv, buildPythonPackage, fetchPypi, substituteAll, locale, pytest }: { lib, buildPythonPackage, fetchPypi, substituteAll, locale, pytest }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "click"; pname = "click";
@ -10,10 +10,10 @@ buildPythonPackage rec {
sha256 = "5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"; sha256 = "5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7";
}; };
patches = stdenv.lib.optional (stdenv.lib.versionAtLeast version "6.7") (substituteAll { postPatch = ''
src = ./fix-paths.patch; substituteInPlace click/_unicodefun.py \
locale = "${locale}/bin/locale"; --replace "'locale'" "'${locale}/bin/locale'"
}); '';
buildInputs = [ pytest ]; buildInputs = [ pytest ];
@ -24,7 +24,7 @@ buildPythonPackage rec {
# https://github.com/pallets/click/issues/823 # https://github.com/pallets/click/issues/823
doCheck = false; doCheck = false;
meta = with stdenv.lib; { meta = with lib; {
homepage = http://click.pocoo.org/; homepage = http://click.pocoo.org/;
description = "Create beautiful command line interfaces in Python"; description = "Create beautiful command line interfaces in Python";
longDescription = '' longDescription = ''

View File

@ -1,13 +0,0 @@
diff --git a/click/_unicodefun.py b/click/_unicodefun.py
index 620edff..85a3c98 100644
--- a/click/_unicodefun.py
+++ b/click/_unicodefun.py
@@ -63,7 +63,7 @@ def _verify_python3_env():
if os.name == 'posix':
import subprocess
try:
- rv = subprocess.Popen(['locale', '-a'], stdout=subprocess.PIPE,
+ rv = subprocess.Popen(['@locale@', '-a'], stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()[0]
except OSError:
rv = b''

View File

@ -45,13 +45,6 @@ buildPythonPackage rec {
funcsigs funcsigs
]; ];
postPatch = ''
substituteInPlace setup.cfg \
--replace 'click>=6.7,<7.0' 'click'
substituteInPlace setup.py \
--replace 'click>=6.7,<7.0' 'click'
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/elastic/curator; homepage = https://github.com/elastic/curator;
description = "Curate, or manage, your Elasticsearch indices and snapshots"; description = "Curate, or manage, your Elasticsearch indices and snapshots";
@ -69,5 +62,8 @@ buildPythonPackage rec {
* Perform various actions on the items which remain in the actionable list. * Perform various actions on the items which remain in the actionable list.
''; '';
maintainers = with maintainers; [ basvandijk ]; maintainers = with maintainers; [ basvandijk ];
# https://github.com/elastic/curator/pull/1280
broken = versionAtLeast click.version "7.0";
}; };
} }

View File

@ -1,5 +1,6 @@
{ lib, buildPythonPackage, fetchPypi { lib, buildPythonPackage, fetchPypi
, click, jinja2, terminaltables }: , mock, jinja2, click, terminaltables
}:
buildPythonPackage rec { buildPythonPackage rec {
pname = "envs"; pname = "envs";
@ -10,7 +11,7 @@ buildPythonPackage rec {
sha256 = "ccf5cd85ddb8ed335e39ed8a22e0d23658f5a6d7da430f225e6f750c6f50ae42"; sha256 = "ccf5cd85ddb8ed335e39ed8a22e0d23658f5a6d7da430f225e6f750c6f50ae42";
}; };
checkInputs = [ click jinja2 terminaltables ]; checkInputs = [ mock jinja2 click terminaltables ];
meta = with lib; { meta = with lib; {
description = "Easy access to environment variables from Python"; description = "Easy access to environment variables from Python";

View File

@ -8,11 +8,11 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "fonttools"; pname = "fonttools";
version = "3.37.3"; version = "3.39.0";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "c898a455a39afbe6707bc17a0e4f720ebe2087fec67683e7c86a13183078204d"; sha256 = "0hgv83b4nhk2bl33xa41x0xvsl2b138p974ywkglzckp1123a7z2";
extension = "zip"; extension = "zip";
}; };

View File

@ -1,19 +1,19 @@
{ stdenv { stdenv
, buildPythonPackage , buildPythonPackage
, fetchFromGitHub , fetchPypi
, isPy3k
, nose , nose
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "munkres"; pname = "munkres";
version = "1.0.12"; version = "1.1.2";
# No sdist for 1.0.12, see https://github.com/bmc/munkres/issues/25 disabled = !isPy3k;
src = fetchFromGitHub {
owner = "bmc"; src = fetchPypi {
repo = pname; inherit pname version;
rev = "release-${version}"; sha256 = "81e9ced40c3d0ffc48be4b6da5cfdfaa49041faaaba8075b159974ec47926aea";
sha256 = "0m3rkn0z3ialndxmyg26xn081znna34i5maa1i4nkhy6nf0ixdjm";
}; };
checkInputs = [ nose ]; checkInputs = [ nose ];

View File

@ -2,7 +2,7 @@
let let
pname = "nbxmpp"; pname = "nbxmpp";
version = "0.6.9"; version = "0.6.10";
name = "${pname}-${version}"; name = "${pname}-${version}";
in buildPythonPackage rec { in buildPythonPackage rec {
inherit pname version; inherit pname version;
@ -11,7 +11,7 @@ in buildPythonPackage rec {
name = "${name}.tar.bz2"; name = "${name}.tar.bz2";
url = "https://dev.gajim.org/gajim/python-nbxmpp/repository/archive.tar.bz2?" url = "https://dev.gajim.org/gajim/python-nbxmpp/repository/archive.tar.bz2?"
+ "ref=${name}"; + "ref=${name}";
sha256 = "14xrq0r5k1dk7rwj4cxyxfapi6gbnqg70mz94g6hn9ij06284mi7"; sha256 = "1w31a747mj9rvlp3n20z0fnvyvihphkgkyr22sk2kap3migw8vai";
}; };
propagatedBuildInputs = [ pyopenssl ]; propagatedBuildInputs = [ pyopenssl ];

View File

@ -1,6 +1,6 @@
{ stdenv, buildPythonPackage, fetchPypi { stdenv, buildPythonPackage, fetchPypi
, pytest, setuptools-git, pytest-shutil, pytest-fixture-config, psutil , pytest_3, pytest-shutil, pytest-fixture-config, psutil
, requests, future }: , requests, future, retry }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "pytest-server-fixtures"; pname = "pytest-server-fixtures";
@ -11,8 +11,8 @@ buildPythonPackage rec {
sha256 = "c89f9532f62cf851489082ece1ec692b6ed5b0f88f20823bea25e2a963ebee8f"; sha256 = "c89f9532f62cf851489082ece1ec692b6ed5b0f88f20823bea25e2a963ebee8f";
}; };
buildInputs = [ pytest ]; buildInputs = [ pytest_3 ];
propagatedBuildInputs = [ setuptools-git pytest-shutil pytest-fixture-config psutil requests future ]; propagatedBuildInputs = [ pytest-shutil pytest-fixture-config psutil requests future retry ];
# RuntimeError: Unable to find a free server number to start Xvfb # RuntimeError: Unable to find a free server number to start Xvfb
doCheck = false; doCheck = false;

View File

@ -8,7 +8,16 @@
, pycairo , pycairo
}: }:
buildPythonPackage rec { let
boost = pkgs.boost.override {
enablePython = true;
inherit python;
};
mapnik = pkgs.mapnik.override {
inherit python boost;
};
in buildPythonPackage rec {
pname = "python-mapnik"; pname = "python-mapnik";
version = "3.0.16"; version = "3.0.16";
@ -28,25 +37,25 @@ buildPythonPackage rec {
export BOOST_THREAD_LIB="boost_thread" export BOOST_THREAD_LIB="boost_thread"
export BOOST_SYSTEM_LIB="boost_system" export BOOST_SYSTEM_LIB="boost_system"
''; '';
buildInputs = with pkgs; [
(boost.override { nativeBuildInputs = [
enablePython = true; mapnik # for mapnik_config
inherit python; ];
})
(mapnik.override { buildInputs = [
inherit python; mapnik
boost = (boost.override { enablePython = true; inherit python; }); boost
}) ] ++ (with pkgs; [
cairo cairo
harfbuzz harfbuzz
icu icu
libjpeg libjpeg
libpng libpng
libtiff libtiff
libwebp libwebp
proj proj
zlib zlib
]; ]);
propagatedBuildInputs = [ pillow pycairo ]; propagatedBuildInputs = [ pillow pycairo ];
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,43 @@
{ lib
, buildPythonPackage
, fetchPypi
, pbr
, decorator
, py
, mock
, pytest
}:
buildPythonPackage rec {
pname = "retry";
version = "0.9.2";
src = fetchPypi {
inherit pname version;
sha256 = "f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4";
};
nativeBuildInputs = [
pbr
];
propagatedBuildInputs = [
decorator
py
];
checkInputs = [
mock
pytest
];
checkPhase = ''
pytest
'';
meta = with lib; {
description = "Easy to use retry decorator";
homepage = https://github.com/invl/retry;
license = licenses.asl20;
};
}

View File

@ -1,7 +1,7 @@
{ stdenv { stdenv
, buildPythonPackage , buildPythonPackage
, fetchPypi , fetchPypi
, pytest , pytest_3
, isPyPy , isPyPy
}: }:
@ -16,9 +16,13 @@ buildPythonPackage rec {
sha256 = "1s4radwf38kdh3jrn5acbidqlr66sx786fkwi0rgq61hn4n2bdqw"; sha256 = "1s4radwf38kdh3jrn5acbidqlr66sx786fkwi0rgq61hn4n2bdqw";
}; };
buildInputs = [ pytest ]; checkInputs = [ pytest_3 ];
doCheck = false; # v0.6 is broken with recent pytest 4.x postPatch = ''
# fails
substituteInPlace tests/test_transport_http.py \
--replace "test_sending_unicode_data" "noop"
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Lightweight SOAP client (Jurko's fork)"; description = "Lightweight SOAP client (Jurko's fork)";

View File

@ -16,7 +16,8 @@ buildPythonPackage rec {
disabled = !isPy27; disabled = !isPy27;
src = fetchPypi { src = fetchPypi {
inherit pname version; pname = "TileStache";
inherit version;
sha256 = "11e15dd85501345bcfeb18dce5b1c8fb74ac8d867df2520afe0eefe1edd85f27"; sha256 = "11e15dd85501345bcfeb18dce5b1c8fb74ac8d867df2520afe0eefe1edd85f27";
}; };

View File

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, ocamlPackages, cf-private, CoreServices }: { stdenv, fetchFromGitHub, ocamlPackages, cf-private, CoreServices }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.94.0"; version = "0.95.1";
name = "flow-${version}"; name = "flow-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "facebook"; owner = "facebook";
repo = "flow"; repo = "flow";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "1bdxbyy2gchqffsk2qi0sbdlyaxp7fgmikrk7nsn5vdfzqswa6gq"; sha256 = "0sxmk8qg61j6wdylkw53di65152mynv4agji865h23ay66nyi3lw";
}; };
installPhase = '' installPhase = ''

View File

@ -0,0 +1,24 @@
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "libwhich";
version = "2019-03-20";
src = fetchFromGitHub {
owner = "vtjnash";
repo = pname;
rev = "b348872107c77cba50b60475aa8ce2ddba86aac0";
sha256 = "0fd8hsdc9b9v83j89mxvisgrz77q9rlxnbzd6j63wq66h95r02r9";
};
installPhase = ''
install -Dm755 -t $out/bin libwhich
'';
meta = with stdenv.lib; {
description = "Like `which`, for dynamic libraries";
homepage = https://github.com/vtjnash/libwhich;
license = licenses.mit;
maintainers = with maintainers; [ dtzWill ];
};
}

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "strace-${version}"; name = "strace-${version}";
version = "4.26"; version = "5.0";
src = fetchurl { src = fetchurl {
url = "https://strace.io/files/${version}/${name}.tar.xz"; url = "https://strace.io/files/${version}/${name}.tar.xz";
sha256 = "070yz8xii8gnb4psiz628zwm5srh266sfb06f7f1qzagxzz2ykbw"; sha256 = "1nj7wvsdmhpp53yffj1pnrkjn96mxrbcraa6h03wc7dqn9zdfyiv";
}; };
depsBuildBuild = [ buildPackages.stdenv.cc ]; depsBuildBuild = [ buildPackages.stdenv.cc ];

View File

@ -2,9 +2,9 @@
buildGoPackage rec { buildGoPackage rec {
name = "skaffold-${version}"; name = "skaffold-${version}";
version = "0.24.0"; version = "0.25.0";
# rev is the 0.24.0 commit, mainly for skaffold version command output # rev is the 0.25.0 commit, mainly for skaffold version command output
rev = "6a829c4b29e3a102b0b14c4584cd174f780402e9"; rev = "0f4b8fe88969e9fa38346934ea6af7c46772d603";
goPackagePath = "github.com/GoogleContainerTools/skaffold"; goPackagePath = "github.com/GoogleContainerTools/skaffold";
subPackages = ["cmd/skaffold"]; subPackages = ["cmd/skaffold"];
@ -20,7 +20,7 @@ buildGoPackage rec {
owner = "GoogleContainerTools"; owner = "GoogleContainerTools";
repo = "skaffold"; repo = "skaffold";
rev = "v${version}"; rev = "v${version}";
sha256 = "0i1gafyi8wlnfpmkivxarvh2kiickz105cdmpjkxya54rhl4c7i7"; sha256 = "0adcim029w64494sb3cw14xhv2vf33l8vhwm2wz8mnmr402nbvkx";
}; };
meta = { meta = {

View File

@ -0,0 +1,116 @@
{ stdenv, fetchurl, glibc, cups, libusb, libxml2, ghostscript, perl }:
let
arch = if stdenv.system == "x86_64-linux"
then "x86_64"
else "i386";
in stdenv.mkDerivation rec {
name = "samsung-unified-linux-driver-${version}";
version = "1.00.36";
src = fetchurl {
sha256 = "1a7ngd03x0bkdl7pszy5zqqic0plxvdxqm5w7klr6hbdskx1lir9";
url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz";
};
buildInputs = [
cups
libusb
libxml2
perl
];
installPhase = ''
mkdir -p $out/bin
cp -R ${arch}/{gettext,pstosecps,rastertospl,smfpnetdiscovery,usbresetter} $out/bin
mkdir -p $out/etc/sane.d/dll.d/
install -m644 noarch/etc/smfp.conf $out/etc/sane.d
echo smfp >> $out/etc/sane.d/dll.d/smfp-scanner.conf
mkdir -p $out/etc/smfp-common/scanner/share/
install -m644 noarch/libsane-smfp.cfg $out/etc/smfp-common/scanner/share/
install -m644 noarch/pagesize.xml $out/etc/smfp-common/scanner/share/
mkdir -p $out/etc/samsung/scanner/share/
install -m644 noarch/oem.conf $out/etc/samsung/scanner/share/
mkdir -p $out/lib
install -m755 ${arch}/libscmssc.so* $out/lib
mkdir -p $out/lib/cups/backend
ln -s $out/bin/smfpnetdiscovery $out/lib/cups/backend
mkdir -p $out/lib/cups/filter
ln -s $out/bin/{pstosecps,rastertospl} $out/lib/cups/filter
ln -s $ghostscript/bin/gs $out/lib/cups/filter
mkdir -p $out/lib/sane
install -m755 ${arch}/libsane-smfp.so* $out/lib/sane
ln -s libsane-smfp.so.1.0.1 $out/lib/sane/libsane-smfp.so.1
ln -s libsane-smfp.so.1 $out/lib/sane/libsane-smfp.so
perl -pi -e \
's|/opt/smfp-common/scanner/.usedby/|/tmp/\0\0fp-common/scanner/.usedby/|g' \
$out/lib/sane/libsane-smfp.so.1.0.1
perl -pi -e 's|/opt|/etc|g' \
$out/lib/sane/libsane-smfp.so.1.0.1 \
$out/bin/rastertospl \
noarch/package_utils \
noarch/pre_install.sh
mkdir -p $out/lib/udev/rules.d
(
OEM_FILE=noarch/oem.conf
INSTALL_LOG_FILE=/dev/null
. noarch/scripting_utils
. noarch/package_utils
. noarch/scanner-script.pkg
fill_full_template noarch/etc/smfp.rules.in $out/lib/udev/rules.d/60_smfp_samsung.rules
chmod -x $out/lib/udev/rules.d/60_smfp_samsung.rules
)
mkdir -p $out/share
cp -R noarch/share/* $out/share
gzip -9 $out/share/ppd/*.ppd
rm -r $out/share/locale/*/*/install.mo
mkdir -p $out/share/cups
cd $out/share/cups
ln -s ../ppd .
ln -s ppd model
'';
preFixup = ''
for bin in "$out/bin/"*; do
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$bin"
patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$bin"
done
patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$out/lib/libscmssc.so"
patchelf --set-rpath "$out/lib:${libxml2.out}/lib:${libusb.out}/lib" "$out/lib/sane/libsane-smfp.so.1.0.1"
ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/
'';
# all binaries are already stripped
dontStrip = true;
# we did this in prefixup already
dontPatchELF = true;
meta = with stdenv.lib; {
description = "Unified Linux Driver for Samsung printers and scanners";
homepage = http://www.bchemnet.com/suldr;
downloadPage = http://www.bchemnet.com/suldr/driver/;
license = licenses.unfree;
# Tested on linux-x86_64. Might work on linux-i386.
# Probably won't work on anything else.
platforms = platforms.linux;
maintainers = with maintainers; [ tohl ];
};
}

View File

@ -0,0 +1,44 @@
# the original samsung-unified-linux-driver_1_00_36 has some paths
# hardcoded in binary files
#
# nixos samsung-unified-linux-driver_1_00_36 tries to fix those paths
# by patching the binaries
#
# this module is needed to put the expected files in the new paths
#
# printing works without problems
#
# scanning works, except one detail: sometimes it is possible to scan
# more pages in sequence. most of the time though, scanning stops
# working after one page. this problem happens both with scanimage
# and simple-scan. errors indicate an I/O error. scanning works
# again after turning the device off and on. atm i have no idea how
# to fix this and no time to do more about it.
{config, pkgs, lib ? pkgs.lib, ...}:
with lib;
let
cfg = config.services.samsung-unified-linux-driver_1_00_36;
pkg = pkgs.samsung-unified-linux-driver_1_00_36;
in {
options = {
services.samsung-unified-linux-driver_1_00_36 = {
enable = mkEnableOption "enable samsung-unified-linux-driver_1_00_36";
};
};
config = mkIf cfg.enable {
services.printing.drivers = [pkg];
hardware.sane.extraBackends = [pkg];
environment.etc = {
"samsung/scanner/share/oem.conf".source
= "${pkg}/etc/samsung/scanner/share/oem.conf";
"smfp-common/scanner/share/libsane-smfp.cfg".source
= "${pkg}/etc/smfp-common/scanner/share/libsane-smfp.cfg";
"smfp-common/scanner/share/pagesize.xml".source
= "${pkg}/etc/smfp-common/scanner/share/pagesize.xml";
"sane.d/smfp.conf".source
= "${pkg}/etc/sane.d/smfp.conf";
"sane.d/dll.d/smfp-scanner.conf".source
= "${pkg}/etc/sane.d/dll.d/smfp-scanner.conf";
};
};
}

View File

@ -3,19 +3,19 @@
}: }:
let let
version = "1.1.0"; version = "1.1.1";
rev = "a12239148332ca7a0b1c44a93e1585452d3631c9"; rev = "af12e2e4da586275ba931eae8f40a2201251bf59";
baseUrl = "https://emux.cc/versions/${stdenv.lib.substring 0 8 rev}/CCEmuX"; baseUrl = "https://emux.cc/versions/${stdenv.lib.substring 0 8 rev}/CCEmuX";
jar = jar =
if useCCTweaked if useCCTweaked
then fetchurl { then fetchurl {
url = "${baseUrl}-cct.jar"; url = "${baseUrl}-cct.jar";
sha256 = "1i767v3wnb8jsh7ciqqvw548pka1b8vl18k1rdv5dn21la6n0r1d"; sha256 = "0d9gzi1h5vz32fp4lfn7dam189jcm7bwbqwmlpj0c47p8l0d4lsv";
} }
else fetchurl { else fetchurl {
url = "${baseUrl}-cc.jar"; url = "${baseUrl}-cc.jar";
sha256 = "0x9hs814ln193cwybd565mcj6vhnii4wirkiz9na7vcas0y5vmmq"; sha256 = "0ky5vxh8m1v98zllifxif8xxd25j2xdp19hjnj4xlkck71lbnb34";
}; };
desktopIcon = fetchurl { desktopIcon = fetchurl {

View File

@ -1244,6 +1244,17 @@ let
}; };
}; };
nord-vim = buildVimPluginFrom2Nix {
pname = "nord-vim";
version = "2019-03-21";
src = fetchFromGitHub {
owner = "arcticicestudio";
repo = "nord-vim";
rev = "bfa069b12b3af000b07eb23c01ff516bab452db7";
sha256 = "1wyslhazi9vwnk3z68ibd4gswvc340mwnffg9lnpskqi56qpw005";
};
};
nvim-cm-racer = buildVimPluginFrom2Nix { nvim-cm-racer = buildVimPluginFrom2Nix {
pname = "nvim-cm-racer"; pname = "nvim-cm-racer";
version = "2017-07-27"; version = "2017-07-27";

View File

@ -11,6 +11,7 @@ andreshazard/vim-logreview
andsild/peskcolor.vim andsild/peskcolor.vim
andviro/flake8-vim andviro/flake8-vim
ap/vim-css-color ap/vim-css-color
arcticicestudio/nord-vim
artur-shaik/vim-javacomplete2 artur-shaik/vim-javacomplete2
bazelbuild/vim-bazel bazelbuild/vim-bazel
bbchung/clighter8 bbchung/clighter8

View File

@ -0,0 +1,127 @@
{ stdenv, lib, fetchFromGitHub, fetchurl
, cmake, pkgconfig, dbus, makeWrapper
, gtest
, boost
, libcap
, systemd
, mesa
, libGL
, libglvnd
, glib
, git
, SDL2
, SDL2_image
, properties-cpp
, protobuf
, protobufc
, python
, lxc
}:
stdenv.mkDerivation rec {
pname = "anbox";
version = "2019-03-07";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "d521e282965462e82465045ab95d4ae1c4619685";
sha256 = "1wfx4bsyxvrjl16dq5pqgial8rnnsnxzbak2ap0waddz847czxwz";
};
buildInputs = [
cmake pkgconfig dbus boost libcap gtest systemd mesa glib
SDL2 SDL2_image protobuf protobufc properties-cpp lxc python
makeWrapper libGL
];
patchPhase = ''
patchShebangs scripts
cat >cmake/FindGMock.cmake <<'EOF'
add_library(gtest INTERFACE)
target_include_directories(gtest INTERFACE ${gtest.dev}/include)
target_link_libraries(gtest INTERFACE ${gtest}/lib/libgtest.so ''${CMAKE_THREAD_LIBS_INIT})
add_dependencies(gtest GMock)
add_library(gtest_main INTERFACE)
target_include_directories(gtest_main INTERFACE ${gtest.dev}/include)
target_link_libraries(gtest_main INTERFACE ${gtest}/lib/libgtest_main.so gtest)
add_library(gmock INTERFACE)
target_include_directories(gmock INTERFACE ${gtest.dev}/include)
target_link_libraries(gmock INTERFACE ${gtest}/lib/libgmock.so gtest)
add_library(gmock_main INTERFACE)
target_include_directories(gmock_main INTERFACE ${gtest.dev}/include)
target_link_libraries(gmock_main INTERFACE ${gtest}/lib/libgmock_main.so gmock gtest_main)
set(GTEST_LIBRARIES gtest)
set(GTEST_MAIN_LIBRARIES gtest_main)
set(GMOCK_LIBRARIES gmock gmock_main)
set(GTEST_BOTH_LIBRARIES ''${GTEST_LIBRARIES} ''${GTEST_MAIN_LIBRARIES})
EOF
'';
postInstall = ''
wrapProgram $out/bin/anbox \
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [libGL libglvnd]} \
--prefix PATH : ${git}/bin
mkdir -p $out/share/dbus-1/services/
cat <<END > $out/share/dbus-1/services/org.anbox.service
[D-BUS Service]
Name=org.anbox
Exec=$out/libexec/anbox-session-manager
END
mkdir $out/libexec
cat > $out/libexec/anbox-session-manager <<EOF
#!${stdenv.shell}
exec $out/bin/anbox session-manager
EOF
chmod +x $out/libexec/anbox-session-manager
cat > $out/bin/anbox-application-manager <<EOF
#!${stdenv.shell}
${systemd}/bin/busctl --user call \
org.freedesktop.DBus \
/org/freedesktop/DBus \
org.freedesktop.DBus \
StartServiceByName "su" org.anbox 0
$out/bin/anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity
EOF
chmod +x $out/bin/anbox-application-manager
'';
passthru.image = let
imgroot = "https://build.anbox.io/android-images";
arches = {
armv7l-linux = {
url = imgroot + "/2017/06/12/android_1_armhf.img";
sha256 = "1za4q6vnj8wgphcqpvyq1r8jg6khz7v6b7h6ws1qkd5ljangf1w5";
};
aarch64-linux = {
url = imgroot + "/2017/08/04/android_1_arm64.img";
sha256 = "02yvgpx7n0w0ya64y5c7bdxilaiqj9z3s682l5s54vzfnm5a2bg5";
};
x86_64-linux = {
url = imgroot + "/2018/07/19/android_amd64.img";
sha256 = "1jlcda4q20w30cm9ikm6bjq01p547nigik1dz7m4v0aps4rws13b";
};
};
in
fetchurl {
inherit (arches.${stdenv.system}) url sha256;
};
meta = with stdenv.lib; {
homepage = https://anbox.io;
description = "Android in a box.";
license = licenses.gpl2;
maintainers = with maintainers; [ edwtjo ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,43 @@
{ stdenv, lib, kernel, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "anbox-modules";
version = "2018-09-08-" + kernel.version;
src = fetchFromGitHub {
owner = "anbox";
repo = "anbox-modules";
rev = "27fd47e11ef6eef93738f8f3df3e42c88975544e";
sha256 = "1hnf5x5swjcws6mnxmd3byll8l7qsxxj9pgki2k31rbmqqf2sb0x";
};
nativeBuildInputs = kernel.moduleBuildDependencies;
KERNEL_SRC="${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
buildPhase = ''
for d in ashmem binder;do
cd $d
make
cd -
done
'';
installPhase = ''
modDir=$out/lib/modules/${kernel.modDirVersion}/kernel/updates/
mkdir -p $modDir
for d in ashmem binder;do
mv $d/$d*.ko $modDir/.
done
'';
meta = with stdenv.lib; {
description = "Anbox ashmem and binder drivers.";
homepage = https://github.com/anbox/anbox-modules;
license = licenses.gpl2;
platforms = platforms.linux;
broken = (versionOlder kernel.version "4.4") || (kernel.features.grsecurity);
maintainers = with maintainers; [ edwtjo ];
};
}

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgconfig, udev }: { stdenv, fetchurl, pkgconfig, udev, buildPackages }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libatasmart-0.19"; name = "libatasmart-0.19";
@ -8,6 +8,7 @@ stdenv.mkDerivation rec {
sha256 = "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"; sha256 = "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31";
}; };
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ udev ]; buildInputs = [ udev ];

View File

@ -12,21 +12,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "sssd-${version}"; name = "sssd-${version}";
version = "1.16.3"; version = "1.16.4";
src = fetchurl { src = fetchurl {
url = "https://fedorahosted.org/released/sssd/${name}.tar.gz"; url = "https://fedorahosted.org/released/sssd/${name}.tar.gz";
sha256 = "1i2fq37w0k71xwqcq1i4l3nglmwybc4694xbrccrih33qsh1fpgf"; sha256 = "0ngr7cgimyjc6flqkm7psxagp1m4jlzpqkn28pliifbmdg6i5ckb";
}; };
patches = [
(fetchpatch {
name = "duplicate-case-value.diff";
url = "https://github.com/SSSD/sssd/commit/1ee12b05570fcfb8.diff";
sha256 = "01y8i8cfs2gydn84097cl5fynx0db8b0vr345gh57ypp84in3ixw";
})
];
# Something is looking for <libxml/foo.h> instead of <libxml2/libxml/foo.h> # Something is looking for <libxml/foo.h> instead of <libxml2/libxml/foo.h>
NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2"; NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2";

View File

@ -8,7 +8,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "slurm-${version}"; name = "slurm-${version}";
version = "18.08.5.2"; version = "18.08.6.2";
# N.B. We use github release tags instead of https://www.schedmd.com/downloads.php # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
# because the latter does not keep older releases. # because the latter does not keep older releases.
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
repo = "slurm"; repo = "slurm";
# The release tags use - instead of . # The release tags use - instead of .
rev = "${builtins.replaceStrings ["."] ["-"] name}"; rev = "${builtins.replaceStrings ["."] ["-"] name}";
sha256 = "0x1pdq58sdf0m28cai0lcyzvhhjl7l85gq324pwh8fi3zy2h0n4k"; sha256 = "0py1795jrgip00k46gr9f9y49gpv5478kc3v68d90nl158fngixc";
}; };
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];

View File

@ -4,11 +4,11 @@ with python3.pkgs;
buildPythonPackage rec { buildPythonPackage rec {
pname = "mautrix-telegram"; pname = "mautrix-telegram";
version = "0.5.0"; version = "0.5.1";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "3d5156f205b94dbac76f7eafb0ca732ba16fa568d4440210f7dd4be5c3252dda"; sha256 = "51951845e52c4ca5410e0f4a51d99014dd6df2fcedfca8b7241e045359cbf112";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View File

@ -0,0 +1,34 @@
{ stdenv, lib, fetchgit, cmake, openssl, boost, zlib, rippled }:
stdenv.mkDerivation rec {
name = "rippled-validator-keys-tool-20180927-${builtins.substring 0 7 rev}";
rev = "d7774bcc1dc9439c586ea1c175fcd5ff3960b15f";
src = fetchgit {
url = "https://github.com/ripple/validator-keys-tool.git";
inherit rev;
sha256 = "1hcbwwa21n692qpbm0vqy5jvvnf4aias309610m4kwdsnzfw0902";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ openssl boost zlib rippled ];
hardeningDisable = ["format"];
preConfigure = ''
export CXX="$(command -v $CXX)"
export CC="$(command -v $CC)"
'';
installPhase = ''
install -D validator-keys $out/bin/validator-keys
'';
meta = with lib; {
description = "Generate master and ephemeral rippled validator keys";
homepage = https://github.com/ripple/validator-keys-tool;
maintainers = with maintainers; [ offline ];
license = licenses.isc;
platforms = [ "x86_64-linux" ];
};
}

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