Merge remote-tracking branch 'origin/master' into staging

* origin/master: (693 commits)
  buildGoModule: use go_1_12 instead of go_1_11 (#58103)
  gitAndTools.lab: 0.15.2 -> 0.15.3 (#58091)
  signal-desktop: 1.22.0 -> 1.23.0
  added missing semicolon to documentation
  terminus_font_ttf: 4.46.0 -> 4.47.0
  buildGoModule: remove SSL env vars in favor of cacert in buildInputs (#58071)
  dav1d: init at 0.2.1
  dropbox-cli: 2018.11.28 -> 2019.02.14
  atlassian-confluence: 6.14.1 -> 6.14.2
  maintainers: update email for dywedir
  python.pkgs.hglib: use patch to specify hg path (#57926)
  chkrootkit: 0.52 -> 0.53
  radare2-cutter: 1.7.2 -> 1.8.0
  autorandr: 1.7 -> 1.8
  pythonPackages.pyhepmc: fix build
  llvm-polly/clang-polly: use latest llvm
  apulse: 0.1.11.1 -> 0.1.12, cleanup
  factorio: experimental 0.17.14 → 0.17.16 (#58000)
  sequeler: 0.6.7 -> 0.6.8
  nasc: 0.5.1 -> 0.5.2
  ...
This commit is contained in:
Wael M. Nasreddine 2019-03-21 21:01:25 -07:00
commit 5af0780492
No known key found for this signature in database
GPG Key ID: FD437548E0BF0F5F
722 changed files with 34695 additions and 27611 deletions

View File

@ -1,4 +1,4 @@
Copyright (c) 2003-2018 Eelco Dolstra and the Nixpkgs/NixOS contributors Copyright (c) 2003-2019 Eelco Dolstra and the Nixpkgs/NixOS contributors
Permission is hereby granted, free of charge, to any person obtaining Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the a copy of this software and associated documentation files (the

View File

@ -3,12 +3,91 @@
xml:id="sec-language-go"> xml:id="sec-language-go">
<title>Go</title> <title>Go</title>
<para> <section xml:id="ssec-go-modules">
The function <varname>buildGoPackage</varname> builds standard Go programs. <title>Go modules</title>
</para>
<example xml:id='ex-buildGoPackage'> <para>
<title>buildGoPackage</title> The function <varname> buildGoModule </varname> builds Go programs managed
with Go modules. It builds a
<link xlink:href="https://github.com/golang/go/wiki/Modules">Go
modules</link> through a two phase build:
<itemizedlist>
<listitem>
<para>
An intermediate fetcher derivation. This derivation will be used to fetch
all of the dependencies of the Go module.
</para>
</listitem>
<listitem>
<para>
A final derivation will use the output of the intermediate derivation to
build the binaries and produce the final output.
</para>
</listitem>
</itemizedlist>
</para>
<example xml:id='ex-buildGoModule'>
<title>buildGoModule</title>
<programlisting>
pet = buildGoModule rec {
name = "pet-${version}";
version = "0.3.4";
src = fetchFromGitHub {
owner = "knqyf263";
repo = "pet";
rev = "v${version}";
sha256 = "0m2fzpqxk7hrbxsgqplkg7h2p7gv6s1miymv3gvw0cz039skag0s";
};
modSha256 = "1879j77k96684wi554rkjxydrj8g3hpp0kvxz03sd8dmwr3lh83j"; <co xml:id='ex-buildGoModule-1' />
subPackages = [ "." ]; <co xml:id='ex-buildGoModule-2' />
meta = with lib; {
description = "Simple command-line snippet manager, written in Go";
homepage = https://github.com/knqyf263/pet;
license = licenses.mit;
maintainers = with maintainers; [ kalbasit ];
platforms = platforms.linux ++ platforms.darwin;
};
}
</programlisting>
</example>
<para>
<xref linkend='ex-buildGoModule'/> is an example expression using
buildGoModule, the following arguments are of special significance to the
function:
<calloutlist>
<callout arearefs='ex-buildGoModule-1'>
<para>
<varname>modSha256</varname> is the hash of the output of the
intermediate fetcher derivation.
</para>
</callout>
<callout arearefs='ex-buildGoModule-2'>
<para>
<varname>subPackages</varname> limits the builder from building child
packages that have not been listed. If <varname>subPackages</varname> is
not specified, all child packages will be built.
</para>
</callout>
</calloutlist>
</para>
</section>
<section xml:id="ssec-go-legacy">
<title>Go legacy</title>
<para>
The function <varname> buildGoPackage </varname> builds legacy Go programs,
not supporting Go modules.
</para>
<example xml:id='ex-buildGoPackage'>
<title>buildGoPackage</title>
<programlisting> <programlisting>
deis = buildGoPackage rec { deis = buildGoPackage rec {
name = "deis-${version}"; name = "deis-${version}";
@ -29,56 +108,56 @@ deis = buildGoPackage rec {
buildFlags = "--tags release"; <co xml:id='ex-buildGoPackage-4' /> buildFlags = "--tags release"; <co xml:id='ex-buildGoPackage-4' />
} }
</programlisting> </programlisting>
</example> </example>
<para> <para>
<xref linkend='ex-buildGoPackage'/> is an example expression using <xref linkend='ex-buildGoPackage'/> is an example expression using
buildGoPackage, the following arguments are of special significance to the buildGoPackage, the following arguments are of special significance to the
function: function:
<calloutlist> <calloutlist>
<callout arearefs='ex-buildGoPackage-1'> <callout arearefs='ex-buildGoPackage-1'>
<para> <para>
<varname>goPackagePath</varname> specifies the package's canonical Go <varname>goPackagePath</varname> specifies the package's canonical Go
import path. import path.
</para> </para>
</callout> </callout>
<callout arearefs='ex-buildGoPackage-2'> <callout arearefs='ex-buildGoPackage-2'>
<para> <para>
<varname>subPackages</varname> limits the builder from building child <varname>subPackages</varname> limits the builder from building child
packages that have not been listed. If <varname>subPackages</varname> is packages that have not been listed. If <varname>subPackages</varname> is
not specified, all child packages will be built. not specified, all child packages will be built.
</para> </para>
<para> <para>
In this example only <literal>github.com/deis/deis/client</literal> will In this example only <literal>github.com/deis/deis/client</literal> will
be built. be built.
</para> </para>
</callout> </callout>
<callout arearefs='ex-buildGoPackage-3'> <callout arearefs='ex-buildGoPackage-3'>
<para> <para>
<varname>goDeps</varname> is where the Go dependencies of a Go program are <varname>goDeps</varname> is where the Go dependencies of a Go program
listed as a list of package source identified by Go import path. It could are listed as a list of package source identified by Go import path. It
be imported as a separate <varname>deps.nix</varname> file for could be imported as a separate <varname>deps.nix</varname> file for
readability. The dependency data structure is described below. readability. The dependency data structure is described below.
</para> </para>
</callout> </callout>
<callout arearefs='ex-buildGoPackage-4'> <callout arearefs='ex-buildGoPackage-4'>
<para> <para>
<varname>buildFlags</varname> is a list of flags passed to the go build <varname>buildFlags</varname> is a list of flags passed to the go build
command. command.
</para> </para>
</callout> </callout>
</calloutlist> </calloutlist>
</para> </para>
<para> <para>
The <varname>goDeps</varname> attribute can be imported from a separate The <varname>goDeps</varname> attribute can be imported from a separate
<varname>nix</varname> file that defines which Go libraries are needed and <varname>nix</varname> file that defines which Go libraries are needed and
should be included in <varname>GOPATH</varname> for should be included in <varname>GOPATH</varname> for
<varname>buildPhase</varname>. <varname>buildPhase</varname>.
</para> </para>
<example xml:id='ex-goDeps'> <example xml:id='ex-goDeps'>
<title>deps.nix</title> <title>deps.nix</title>
<programlisting> <programlisting>
[ <co xml:id='ex-goDeps-1' /> [ <co xml:id='ex-goDeps-1' />
{ {
@ -101,60 +180,62 @@ deis = buildGoPackage rec {
} }
] ]
</programlisting> </programlisting>
</example> </example>
<para> <para>
<calloutlist> <calloutlist>
<callout arearefs='ex-goDeps-1'> <callout arearefs='ex-goDeps-1'>
<para> <para>
<varname>goDeps</varname> is a list of Go dependencies. <varname>goDeps</varname> is a list of Go dependencies.
</para> </para>
</callout> </callout>
<callout arearefs='ex-goDeps-2'> <callout arearefs='ex-goDeps-2'>
<para> <para>
<varname>goPackagePath</varname> specifies Go package import path. <varname>goPackagePath</varname> specifies Go package import path.
</para> </para>
</callout> </callout>
<callout arearefs='ex-goDeps-3'> <callout arearefs='ex-goDeps-3'>
<para> <para>
<varname>fetch type</varname> that needs to be used to get package source. <varname>fetch type</varname> that needs to be used to get package
If <varname>git</varname> is used there should be <varname>url</varname>, source. If <varname>git</varname> is used there should be
<varname>rev</varname> and <varname>sha256</varname> defined next to it. <varname>url</varname>, <varname>rev</varname> and
</para> <varname>sha256</varname> defined next to it.
</callout> </para>
</calloutlist> </callout>
</para> </calloutlist>
</para>
<para> <para>
To extract dependency information from a Go package in automated way use To extract dependency information from a Go package in automated way use
<link xlink:href="https://github.com/kamilchm/go2nix">go2nix</link>. It can <link xlink:href="https://github.com/kamilchm/go2nix">go2nix</link>. It can
produce complete derivation and <varname>goDeps</varname> file for Go produce complete derivation and <varname>goDeps</varname> file for Go
programs. programs.
</para> </para>
<para> <para>
<varname>buildGoPackage</varname> produces <varname>buildGoPackage</varname> produces
<xref linkend='chap-multiple-output' xrefstyle="select: title" /> where <xref linkend='chap-multiple-output' xrefstyle="select: title" /> where
<varname>bin</varname> includes program binaries. You can test build a Go <varname>bin</varname> includes program binaries. You can test build a Go
binary as follows: binary as follows:
<screen> <screen>
$ nix-build -A deis.bin $ nix-build -A deis.bin
</screen> </screen>
or build all outputs with: or build all outputs with:
<screen> <screen>
$ nix-build -A deis.all $ nix-build -A deis.all
</screen> </screen>
<varname>bin</varname> output will be installed by default with <varname>bin</varname> output will be installed by default with
<varname>nix-env -i</varname> or <varname>systemPackages</varname>. <varname>nix-env -i</varname> or <varname>systemPackages</varname>.
</para> </para>
<para> <para>
You may use Go packages installed into the active Nix profiles by adding the You may use Go packages installed into the active Nix profiles by adding the
following to your ~/.bashrc: following to your ~/.bashrc:
<screen> <screen>
for p in $NIX_PROFILES; do for p in $NIX_PROFILES; do
GOPATH="$p/share/go:$GOPATH" GOPATH="$p/share/go:$GOPATH"
done done
</screen> </screen>
</para> </para>
</section>
</section> </section>

View File

@ -2633,7 +2633,8 @@ addEnvHooks "$hostOffset" myBashFunction
happens. It prevents nix from cleaning up the build environment happens. It prevents nix from cleaning up the build environment
immediately and allows the user to attach to a build environment using immediately and allows the user to attach to a build environment using
the <command>cntr</command> command. Upon build error it will print the <command>cntr</command> command. Upon build error it will print
instructions on how to use <command>cntr</command>. Installing cntr and instructions on how to use <command>cntr</command>, which can be used
to enter the environment for debugging. Installing cntr and
running the command will provide shell access to the build sandbox of running the command will provide shell access to the build sandbox of
failed build. At <filename>/var/lib/cntr</filename> the sandboxed failed build. At <filename>/var/lib/cntr</filename> the sandboxed
filesystem is mounted. All commands and files of the system are still filesystem is mounted. All commands and files of the system are still

View File

@ -90,7 +90,7 @@ rec {
/* Same as `concatMapStringsSep`, but the mapping function /* Same as `concatMapStringsSep`, but the mapping function
additionally receives the position of its argument. additionally receives the position of its argument.
Type: concatMapStringsSep :: string -> (int -> string -> string) -> [string] -> string Type: concatIMapStringsSep :: string -> (int -> string -> string) -> [string] -> string
Example: Example:
concatImapStringsSep "-" (pos: x: toString (x / pos)) [ 6 6 6 ] concatImapStringsSep "-" (pos: x: toString (x / pos)) [ 6 6 6 ]

View File

@ -523,6 +523,11 @@
email = "sivaraman.balaji@gmail.com"; email = "sivaraman.balaji@gmail.com";
name = "Balaji Sivaraman"; name = "Balaji Sivaraman";
}; };
balsoft = {
email = "balsoft75@gmail.com";
github = "balsoft";
name = "Alexander Bantyev";
};
bandresen = { bandresen = {
email = "bandresen@gmail.com"; email = "bandresen@gmail.com";
github = "bandresen"; github = "bandresen";
@ -1294,7 +1299,7 @@
name = "Tim Dysinger"; name = "Tim Dysinger";
}; };
dywedir = { dywedir = {
email = "dywedir@protonmail.ch"; email = "dywedir@gra.red";
github = "dywedir"; github = "dywedir";
name = "Vladyslav M."; name = "Vladyslav M.";
}; };
@ -2365,6 +2370,11 @@
github = "juliendehos"; github = "juliendehos";
name = "Julien Dehos"; name = "Julien Dehos";
}; };
justinwoo = {
email = "moomoowoo@gmail.com";
github = "justinwoo";
name = "Justin Woo";
};
jwiegley = { jwiegley = {
email = "johnw@newartisans.com"; email = "johnw@newartisans.com";
github = "jwiegley"; github = "jwiegley";
@ -2658,6 +2668,11 @@
github = "limeytexan"; github = "limeytexan";
name = "Michael Brantley"; name = "Michael Brantley";
}; };
linarcx = {
email = "linarcx@gmail.com";
github = "linarcx";
name = "Kaveh Ahangar";
};
linc01n = { linc01n = {
email = "git@lincoln.hk"; email = "git@lincoln.hk";
github = "linc01n"; github = "linc01n";
@ -2673,6 +2688,11 @@
github = "listx"; github = "listx";
name = "Linus Arver"; name = "Linus Arver";
}; };
luis = {
email = "luis.nixos@gmail.com";
github = "Luis-Hebendanz";
name = "Luis Hebendanz";
};
lionello = { lionello = {
email = "lio@lunesu.com"; email = "lio@lunesu.com";
github = "lionello"; github = "lionello";
@ -2865,6 +2885,11 @@
github = "mathnerd314"; github = "mathnerd314";
name = "Mathnerd314"; name = "Mathnerd314";
}; };
matklad = {
email = "aleksey.kladov@gmail.com";
github = "matklad";
name = "matklad";
};
matthewbauer = { matthewbauer = {
email = "mjbauer95@gmail.com"; email = "mjbauer95@gmail.com";
github = "matthewbauer"; github = "matthewbauer";
@ -2875,6 +2900,11 @@
github = "matthiasbeyer"; github = "matthiasbeyer";
name = "Matthias Beyer"; name = "Matthias Beyer";
}; };
matti-kariluoma = {
email = "matti@kariluo.ma";
github = "matti-kariluoma";
name = "Matti Kariluoma";
};
maurer = { maurer = {
email = "matthew.r.maurer+nix@gmail.com"; email = "matthew.r.maurer+nix@gmail.com";
github = "maurer"; github = "maurer";
@ -2945,6 +2975,11 @@
github = "meisternu"; github = "meisternu";
name = "Matt Miemiec"; name = "Matt Miemiec";
}; };
melchips = {
email = "truphemus.francois@gmail.com";
github = "melchips";
name = "Francois Truphemus";
};
melsigl = { melsigl = {
email = "melanie.bianca.sigl@gmail.com"; email = "melanie.bianca.sigl@gmail.com";
github = "melsigl"; github = "melsigl";
@ -2959,6 +2994,11 @@
email = "softs@metabarcoding.org"; email = "softs@metabarcoding.org";
name = "Celine Mercier"; name = "Celine Mercier";
}; };
mfossen = {
email = "msfossen@gmail.com";
github = "mfossen";
name = "Mitchell Fossen";
};
mgdelacroix = { mgdelacroix = {
email = "mgdelacroix@gmail.com"; email = "mgdelacroix@gmail.com";
github = "mgdelacroix"; github = "mgdelacroix";
@ -3712,6 +3752,11 @@
github = "polyrod"; github = "polyrod";
name = "Maurizio Di Pietro"; name = "Maurizio Di Pietro";
}; };
pombeirp = {
email = "nix@endgr.33mail.com";
github = "PombeirP";
name = "Pedro Pombeiro";
};
pradeepchhetri = { pradeepchhetri = {
email = "pradeep.chhetri89@gmail.com"; email = "pradeep.chhetri89@gmail.com";
github = "pradeepchhetri"; github = "pradeepchhetri";
@ -3812,6 +3857,16 @@
fingerprint = "7573 56D7 79BB B888 773E 415E 736C CDF9 EF51 BD97"; fingerprint = "7573 56D7 79BB B888 773E 415E 736C CDF9 EF51 BD97";
}]; }];
}; };
rafaelgg = {
email = "rafael.garcia.gallego@gmail.com";
github = "rafaelgg";
name = "Rafael García";
};
raquelgb = {
email = "raquel.garcia.bautista@gmail.com";
github = "raquelgb";
name = "Raquel García";
};
ragge = { ragge = {
email = "r.dahlen@gmail.com"; email = "r.dahlen@gmail.com";
github = "ragnard"; github = "ragnard";
@ -3951,6 +4006,11 @@
github = "rittelle"; github = "rittelle";
name = "Lennart Rittel"; name = "Lennart Rittel";
}; };
rixed = {
email = "rixed-github@happyleptic.org";
github = "rixed";
name = "Cedric Cellier";
};
rkoe = { rkoe = {
email = "rk@simple-is-better.org"; email = "rk@simple-is-better.org";
github = "rkoe"; github = "rkoe";
@ -4031,6 +4091,11 @@
github = "rprospero"; github = "rprospero";
name = "Adam Washington"; name = "Adam Washington";
}; };
rps = {
email = "robbpseaton@gmail.com";
github = "robertseaton";
name = "Robert P. Seaton";
};
rszibele = { rszibele = {
email = "richard@szibele.com"; email = "richard@szibele.com";
github = "rszibele"; github = "rszibele";
@ -4459,6 +4524,11 @@
github = "stesie"; github = "stesie";
name = "Stefan Siegl"; name = "Stefan Siegl";
}; };
steve-chavez = {
email = "stevechavezast@gmail.com";
github = "steve-chavez";
name = "Steve Chávez";
};
steveej = { steveej = {
email = "mail@stefanjunker.de"; email = "mail@stefanjunker.de";
github = "steveej"; github = "steveej";
@ -4643,6 +4713,11 @@
github = "teozkr"; github = "teozkr";
name = "Teo Klestrup Röijezon"; name = "Teo Klestrup Röijezon";
}; };
terlar = {
email = "terlar@gmail.com";
github = "terlar";
name = "Terje Larsen";
};
teto = { teto = {
email = "mcoudron@hotmail.com"; email = "mcoudron@hotmail.com";
github = "teto"; github = "teto";

View File

@ -21,6 +21,7 @@
<xi:include href="xfce.xml" /> <xi:include href="xfce.xml" />
<xi:include href="networking.xml" /> <xi:include href="networking.xml" />
<xi:include href="linux-kernel.xml" /> <xi:include href="linux-kernel.xml" />
<xi:include href="matrix.xml" />
<xi:include href="../generated/modules.xml" xpointer="xpointer(//section[@id='modules']/*)" /> <xi:include href="../generated/modules.xml" xpointer="xpointer(//section[@id='modules']/*)" />
<xi:include href="profiles.xml" /> <xi:include href="profiles.xml" />
<xi:include href="kubernetes.xml" /> <xi:include href="kubernetes.xml" />

View File

@ -0,0 +1,197 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="module-services-matrix">
<title>Matrix</title>
<para>
<link xlink:href="https://matrix.org/">Matrix</link>
is an open standard for interoperable, decentralised, real-time communication over IP.
It can be used to power Instant Messaging, VoIP/WebRTC signalling, Internet of Things communication -
or anywhere you need a standard HTTP API for publishing and subscribing to data whilst tracking the conversation history.
</para>
<para>
This chapter will show you how to set up your own, self-hosted Matrix homeserver using the Synapse reference homeserver,
and how to serve your own copy of the Riot web client.
See the <link xlink:href="https://matrix.org/docs/projects/try-matrix-now.html">Try 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>
<section xml:id="module-services-matrix-synapse">
<title>Synapse Homeserver</title>
<para>
<link xlink:href="https://github.com/matrix-org/synapse">Synapse</link>
is the reference homeserver implementation of Matrix from the core development team at matrix.org.
The following configuration example will set up a synapse server for the <literal>example.org</literal>
domain, served from 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">
installation instructions of Synapse
</link>.
<programlisting>
let
fqdn =
let
join = hostName: domain: hostName + optionalString (domain != null) ".${domain}";
in join config.networking.hostName config.networking.domain;
in {
networking = {
hostName = "myhostname";
domain = "example.org";
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.nginx = {
enable = true;
# only recommendedProxySettings and recommendedGzipSettings are strictly required,
# but the rest make sense as well
recommendedTlsSettings = true;
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedProxySettings = true;
virtualHosts = {
# This host section can be placed on a different host than the rest,
# i.e. to delegate from the host being accessible as ${config.networking.domain}
# to another host actually running the Matrix homeserver.
"${config.networking.domain}" = {
locations."= /.well-known/matrix/server".extraConfig =
let
# use 443 instead of the default 8448 port to unite
# the client-server and server-server port for simplicity
server = { "m.server" = "${fqdn}:443"; };
in ''
add_header Content-Type application/json;
return 200 '${builtins.toJSON server}';
'';
locations."= /.well-known/matrix/client".extraConfig =
let
client = {
"m.homeserver" = { "base_url" = "https://${fqdn}"; };
"m.identity_server" = { "base_url" = "https://vector.im"; };
};
# ACAO required to allow riot-web on any URL to request this json file
in ''
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '${builtins.toJSON client}';
'';
};
# Reverse proxy for Matrix client-server and server-server communication
${fqdn} = {
enableACME = true;
forceSSL = true;
# Or do a redirect instead of the 404, or whatever is appropriate for you.
# But do not put a Matrix Web client here! See the Riot Web section below.
locations."/".extraConfig = ''
return 404;
'';
# forward all Matrix API calls to the synapse Matrix homeserver
locations."/_matrix" = {
proxyPass = "http://[::1]:8008";
};
};
};
};
services.matrix-synapse = {
enable = true;
server_name = config.networking.domain;
listeners = [
{
port = 8008;
bind_address = "::1";
type = "http";
tls = false;
x_forwarded = true;
resources = [
{ names = [ "client" "federation" ]; compress = false; }
];
}
];
};
};
</programlisting>
</para>
<para>
If the <code>A</code> and <code>AAAA</code> DNS records on <literal>example.org</literal>
do not point on the same host as the records for <code>myhostname.example.org</code>,
you can easily move the <code>/.well-known</code> virtualHost section of the code
to the host that is serving <literal>example.org</literal>,
while the rest stays on <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>
to <literal>myotherhost.example.org</literal> by only changing the <code>/.well-known</code> redirection target.
</para>
<para>
If you want to run a server with public registration by anybody,
you can then enable
<option>services.matrix-synapse.enable_registration = true;</option>.
Otherwise, or you can generate a registration secret with <command>pwgen -s 64 1</command>
and set it with
<option>services.matrix-synapse.registration_shared_secret</option>.
To create a new user or admin,
run the following after you have set the secret and have rebuilt NixOS:
<programlisting>
$ nix run nixpkgs.matrix-synapse
$ register_new_matrix_user -k &lt;your-registration-shared-secret&gt; http://localhost:8008
New user localpart: &lt;your-username&gt;
Password:
Confirm password:
Make admin [no]:
Success!
</programlisting>
In the example, this would create a user with the Matrix Identifier
<literal>@your-username:example.org</literal>.
Note that the registration secret ends up in the nix store and therefore is world-readable
by any user 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.
</para>
</section>
<section xml:id="module-services-matrix-riot-web">
<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>
services.nginx.virtualHosts."riot.${fqdn}" = {
enableACME = true;
forceSSL = true;
serverAliases = [
"riot.${config.networking.domain}"
];
root = pkgs.riot-web;
};
</programlisting>
</para>
<para>
Note that the Riot developers do not recommend running Riot and your Matrix homeserver
on the same fully-qualified domain name for security reasons.
In the example, this means that you should not reuse the <literal>myhostname.example.org</literal>
virtualHost to also serve Riot, but instead serve it on a different subdomain,
like <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>
for more information on this subject.
</para>
</section>
</chapter>

View File

@ -23,7 +23,7 @@
psk = "abcdefgh"; psk = "abcdefgh";
}; };
"free.wifi" = {}; "free.wifi" = {};
} };
</programlisting> </programlisting>
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

View File

@ -512,7 +512,7 @@ config.mod.two = { foo = 2; bar = "two"; };</screen>
The function to type check the value. Takes a value as parameter and The function to type check the value. Takes a value as parameter and
return a boolean. It is possible to extend a type check with the return a boolean. It is possible to extend a type check with the
<literal>addCheck</literal> function <literal>addCheck</literal> function
(<xref (<xref
linkend='ex-extending-type-check-1' />), or to fully linkend='ex-extending-type-check-1' />), or to fully
override the check function override the check function
(<xref linkend='ex-extending-type-check-2' />). (<xref linkend='ex-extending-type-check-2' />).
@ -522,7 +522,7 @@ config.mod.two = { foo = 2; bar = "two"; };</screen>
<screen> <screen>
byte = mkOption { byte = mkOption {
description = "An integer between 0 and 255."; description = "An integer between 0 and 255.";
type = addCheck types.int (x: x &gt;= 0 &amp;&amp; x &lt;= 255); type = types.addCheck types.int (x: x &gt;= 0 &amp;&amp; x &lt;= 255);
};</screen> };</screen>
</example> </example>
<example xml:id='ex-extending-type-check-2'> <example xml:id='ex-extending-type-check-2'>

View File

@ -476,6 +476,8 @@
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>. 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 As such, it is now recommended to use a proper certificate verified by a
root CA (for example Let's Encrypt). 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> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -560,6 +562,15 @@
of maintainers. of maintainers.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
The manual gained a
<link linkend="module-services-matrix">
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>
</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 astah-community package was removed from nixpkgs due to it being discontinued and the downloads not being available anymore.

View File

@ -53,6 +53,7 @@ in {
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
partitionTableType = if config.ec2.hvm then "legacy" else "none"; partitionTableType = if config.ec2.hvm then "legacy" else "none";
diskSize = cfg.sizeMB; diskSize = cfg.sizeMB;
fsType = "ext4";
configFile = pkgs.writeText "configuration.nix" configFile = pkgs.writeText "configuration.nix"
'' ''
{ {

View File

@ -165,6 +165,8 @@ let
else else
"# No refind for ${targetArch}" "# No refind for ${targetArch}"
; ;
grubPkgs = if config.boot.loader.grub.forcei686 then pkgs.pkgsi686Linux else pkgs;
grubMenuCfg = '' grubMenuCfg = ''
# #
@ -241,7 +243,7 @@ let
# Modules that may or may not be available per-platform. # Modules that may or may not be available per-platform.
echo "Adding additional modules:" echo "Adding additional modules:"
for mod in efi_uga; do for mod in efi_uga; do
if [ -f ${pkgs.grub2_efi}/lib/grub/${pkgs.grub2_efi.grubTarget}/$mod.mod ]; then if [ -f ${grubPkgs.grub2_efi}/lib/grub/${grubPkgs.grub2_efi.grubTarget}/$mod.mod ]; then
echo " - $mod" echo " - $mod"
MODULES+=" $mod" MODULES+=" $mod"
fi fi
@ -249,9 +251,9 @@ let
# Make our own efi program, we can't rely on "grub-install" since it seems to # Make our own efi program, we can't rely on "grub-install" since it seems to
# probe for devices, even with --skip-fs-probe. # probe for devices, even with --skip-fs-probe.
${pkgs.grub2_efi}/bin/grub-mkimage -o $out/EFI/boot/boot${targetArch}.efi -p /EFI/boot -O ${pkgs.grub2_efi.grubTarget} \ ${grubPkgs.grub2_efi}/bin/grub-mkimage -o $out/EFI/boot/boot${targetArch}.efi -p /EFI/boot -O ${grubPkgs.grub2_efi.grubTarget} \
$MODULES $MODULES
cp ${pkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/ cp ${grubPkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/
cat <<EOF > $out/EFI/boot/grub.cfg cat <<EOF > $out/EFI/boot/grub.cfg
@ -362,7 +364,7 @@ let
# Name used by UEFI for architectures. # Name used by UEFI for architectures.
targetArch = targetArch =
if pkgs.stdenv.isi686 then if pkgs.stdenv.isi686 || config.boot.loader.grub.forcei686 then
"ia32" "ia32"
else if pkgs.stdenv.isx86_64 then else if pkgs.stdenv.isx86_64 then
"x64" "x64"
@ -506,7 +508,7 @@ in
# here and it causes a cyclic dependency. # here and it causes a cyclic dependency.
boot.loader.grub.enable = false; boot.loader.grub.enable = false;
environment.systemPackages = [ pkgs.grub2 pkgs.grub2_efi ] environment.systemPackages = [ grubPkgs.grub2 grubPkgs.grub2_efi ]
++ optional canx86BiosBoot pkgs.syslinux ++ optional canx86BiosBoot pkgs.syslinux
; ;

View File

@ -35,6 +35,7 @@
./config/users-groups.nix ./config/users-groups.nix
./config/vpnc.nix ./config/vpnc.nix
./config/zram.nix ./config/zram.nix
./hardware/acpilight.nix
./hardware/all-firmware.nix ./hardware/all-firmware.nix
./hardware/bladeRF.nix ./hardware/bladeRF.nix
./hardware/brightnessctl.nix ./hardware/brightnessctl.nix
@ -129,7 +130,6 @@
./programs/sysdig.nix ./programs/sysdig.nix
./programs/systemtap.nix ./programs/systemtap.nix
./programs/sway.nix ./programs/sway.nix
./programs/sway-beta.nix
./programs/thefuck.nix ./programs/thefuck.nix
./programs/tmux.nix ./programs/tmux.nix
./programs/udevil.nix ./programs/udevil.nix
@ -137,6 +137,7 @@
./programs/vim.nix ./programs/vim.nix
./programs/wavemon.nix ./programs/wavemon.nix
./programs/way-cooler.nix ./programs/way-cooler.nix
./programs/waybar.nix
./programs/wireshark.nix ./programs/wireshark.nix
./programs/xfs_quota.nix ./programs/xfs_quota.nix
./programs/xonsh.nix ./programs/xonsh.nix
@ -311,6 +312,7 @@
./services/hardware/ratbagd.nix ./services/hardware/ratbagd.nix
./services/hardware/sane.nix ./services/hardware/sane.nix
./services/hardware/sane_extra_backends/brscan4.nix ./services/hardware/sane_extra_backends/brscan4.nix
./services/hardware/sane_extra_backends/dsseries.nix
./services/hardware/tcsd.nix ./services/hardware/tcsd.nix
./services/hardware/tlp.nix ./services/hardware/tlp.nix
./services/hardware/thinkfan.nix ./services/hardware/thinkfan.nix
@ -578,6 +580,7 @@
./services/networking/keepalived/default.nix ./services/networking/keepalived/default.nix
./services/networking/keybase.nix ./services/networking/keybase.nix
./services/networking/kippo.nix ./services/networking/kippo.nix
./services/networking/knot.nix
./services/networking/kresd.nix ./services/networking/kresd.nix
./services/networking/lambdabot.nix ./services/networking/lambdabot.nix
./services/networking/libreswan.nix ./services/networking/libreswan.nix
@ -765,6 +768,7 @@
./services/web-servers/nginx/default.nix ./services/web-servers/nginx/default.nix
./services/web-servers/nginx/gitweb.nix ./services/web-servers/nginx/gitweb.nix
./services/web-servers/phpfpm/default.nix ./services/web-servers/phpfpm/default.nix
./services/web-servers/unit/default.nix
./services/web-servers/shellinabox.nix ./services/web-servers/shellinabox.nix
./services/web-servers/tomcat.nix ./services/web-servers/tomcat.nix
./services/web-servers/traefik.nix ./services/web-servers/traefik.nix

View File

@ -1,91 +0,0 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.programs.sway-beta;
swayPackage = cfg.package;
swayWrapped = pkgs.writeShellScriptBin "sway" ''
set -o errexit
if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then
export _SWAY_WRAPPER_ALREADY_EXECUTED=1
${cfg.extraSessionCommands}
fi
if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then
export DBUS_SESSION_BUS_ADDRESS
exec ${swayPackage}/bin/sway "$@"
else
exec ${pkgs.dbus}/bin/dbus-run-session ${swayPackage}/bin/sway "$@"
fi
'';
swayJoined = pkgs.symlinkJoin {
name = "sway-joined";
paths = [ swayWrapped swayPackage ];
};
in {
options.programs.sway-beta = {
enable = mkEnableOption ''
Sway, the i3-compatible tiling Wayland compositor. This module will be removed after the final release of Sway 1.0
'';
package = mkOption {
type = types.package;
default = pkgs.sway-beta;
defaultText = "pkgs.sway-beta";
description = ''
The package to be used for `sway`.
'';
};
extraSessionCommands = mkOption {
type = types.lines;
default = "";
example = ''
export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
'';
description = ''
Shell commands executed just before Sway is started.
'';
};
extraPackages = mkOption {
type = with types; listOf package;
default = with pkgs; [
swaylock swayidle
xwayland rxvt_unicode dmenu
];
defaultText = literalExample ''
with pkgs; [ swaylock swayidle xwayland rxvt_unicode dmenu ];
'';
example = literalExample ''
with pkgs; [
xwayland
i3status i3status-rust
termite rofi light
]
'';
description = ''
Extra packages to be installed system wide.
'';
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages;
security.pam.services.swaylock = {};
hardware.opengl.enable = mkDefault true;
fonts.enableDefaultFonts = mkDefault true;
programs.dconf.enable = mkDefault true;
};
meta.maintainers = with lib.maintainers; [ gnidorah primeos colemickens ];
}

View File

@ -16,9 +16,9 @@ let
if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then
export DBUS_SESSION_BUS_ADDRESS export DBUS_SESSION_BUS_ADDRESS
exec sway-setcap "$@" exec ${swayPackage}/bin/sway "$@"
else else
exec ${pkgs.dbus}/bin/dbus-run-session sway-setcap "$@" exec ${pkgs.dbus}/bin/dbus-run-session ${swayPackage}/bin/sway "$@"
fi fi
''; '';
swayJoined = pkgs.symlinkJoin { swayJoined = pkgs.symlinkJoin {
@ -28,22 +28,24 @@ let
in { in {
options.programs.sway = { options.programs.sway = {
enable = mkEnableOption '' enable = mkEnableOption ''
the tiling Wayland compositor Sway. After adding yourself to the "sway" Sway, the i3-compatible tiling Wayland compositor. You can manually launch
group you can manually launch Sway by executing "sway" from a terminal. Sway by executing "exec sway" on a TTY. Copy /etc/sway/config to
If you call "sway" with any parameters the extraSessionCommands won't be ~/.config/sway/config to modify the default configuration. See
executed and Sway won't be launched with dbus-launch''; https://github.com/swaywm/sway/wiki and "man 5 sway" for more information.
Please have a look at the "extraSessionCommands" example for running
programs natively under Wayland'';
extraSessionCommands = mkOption { extraSessionCommands = mkOption {
type = types.lines; type = types.lines;
default = ""; default = "";
example = '' example = ''
# Define a keymap (US QWERTY is the default) export SDL_VIDEODRIVER=wayland
export XKB_DEFAULT_LAYOUT=de,us # needs qt5.qtwayland in systemPackages
export XKB_DEFAULT_VARIANT=nodeadkeys export QT_QPA_PLATFORM=wayland
export XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle,caps:escape export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Change the Keyboard repeat delay and rate # Fix for some Java AWT applications (e.g. Android Studio),
export WLC_REPEAT_DELAY=660 # use this if they aren't displayed properly:
export WLC_REPEAT_RATE=25 export _JAVA_AWT_WM_NONREPARENTING=1
''; '';
description = '' description = ''
Shell commands executed just before Sway is started. Shell commands executed just before Sway is started.
@ -53,14 +55,17 @@ in {
extraPackages = mkOption { extraPackages = mkOption {
type = with types; listOf package; type = with types; listOf package;
default = with pkgs; [ default = with pkgs; [
i3status xwayland rxvt_unicode dmenu swaylock swayidle
xwayland rxvt_unicode dmenu
]; ];
defaultText = literalExample '' defaultText = literalExample ''
with pkgs; [ i3status xwayland rxvt_unicode dmenu ]; with pkgs; [ swaylock swayidle xwayland rxvt_unicode dmenu ];
''; '';
example = literalExample '' example = literalExample ''
with pkgs; [ with pkgs; [
i3lock light termite xwayland
i3status i3status-rust
termite rofi light
] ]
''; '';
description = '' description = ''
@ -70,23 +75,19 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages; environment = {
security.wrappers.sway = { systemPackages = [ swayJoined ] ++ cfg.extraPackages;
program = "sway-setcap"; etc = {
source = "${swayPackage}/bin/sway"; "sway/config".source = "${swayPackage}/etc/sway/config";
capabilities = "cap_sys_ptrace,cap_sys_tty_config=eip"; #"sway/security.d".source = "${swayPackage}/etc/sway/security.d/";
owner = "root"; #"sway/config.d".source = "${swayPackage}/etc/sway/config.d/";
group = "sway"; };
permissions = "u+rx,g+rx";
}; };
users.groups.sway = {};
security.pam.services.swaylock = {}; security.pam.services.swaylock = {};
hardware.opengl.enable = mkDefault true; hardware.opengl.enable = mkDefault true;
fonts.enableDefaultFonts = mkDefault true; fonts.enableDefaultFonts = mkDefault true;
programs.dconf.enable = mkDefault true; programs.dconf.enable = mkDefault true;
}; };
meta.maintainers = with lib.maintainers; [ gnidorah primeos ]; meta.maintainers = with lib.maintainers; [ gnidorah primeos colemickens ];
} }

View File

@ -0,0 +1,20 @@
{ lib, pkgs, config, ... }:
with lib;
{
options.programs.waybar = {
enable = mkEnableOption "waybar";
};
config = mkIf config.programs.waybar.enable {
systemd.user.services.waybar = {
description = "Waybar as systemd service";
wantedBy = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
script = "${pkgs.waybar}/bin/waybar";
};
};
meta.maintainers = [ maintainers.FlorianFranzen ];
}

View File

@ -79,6 +79,33 @@ in
type = types.lines; type = types.lines;
}; };
histSize = mkOption {
default = 2000;
description = ''
Change history size.
'';
type = types.int;
};
histFile = mkOption {
default = "$HOME/.zsh_history";
description = ''
Change history file.
'';
type = types.str;
};
setOptions = mkOption {
type = types.listOf types.str;
default = [
"HIST_IGNORE_DUPS" "SHARE_HISTORY" "HIST_FCNTL_LOCK"
];
example = [ "EXTENDED_HISTORY" "RM_STAR_WAIT" ];
description = ''
Configure zsh options.
'';
};
enableCompletion = mkOption { enableCompletion = mkOption {
default = true; default = true;
description = '' description = ''
@ -162,12 +189,11 @@ in
. /etc/zinputrc . /etc/zinputrc
# history defaults export SAVEHIST=${toString cfg.histSize}
SAVEHIST=2000 export HISTSIZE=${toString cfg.histSize}
HISTSIZE=2000 export HISTFILE=${cfg.histFile}
HISTFILE=$HOME/.zsh_history
setopt HIST_IGNORE_DUPS SHARE_HISTORY HIST_FCNTL_LOCK ${optionalString (cfg.setOptions != []) "setopt ${concatStringsSep " " cfg.setOptions}"}
HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help" HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help"

View File

@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
with lib;
{
options = {
hardware.sane.dsseries.enable =
mkEnableOption "Brother DSSeries scan backend" // {
description = ''
When enabled, will automatically register the "dsseries" SANE backend.
This supports the Brother DSmobile scanner series, including the
DS-620, DS-720D, DS-820W, and DS-920DW scanners.
'';
};
};
config = mkIf (config.hardware.sane.enable && config.hardware.sane.dsseries.enable) {
hardware.sane.extraBackends = [ pkgs.dsseries ];
services.udev.packages = [ pkgs.dsseries ];
boot.kernelModules = [ "sg" ];
};
}

View File

@ -515,6 +515,8 @@ in {
gitAndTools.git gitAndTools.git
cfg.packages.gitaly.rubyEnv cfg.packages.gitaly.rubyEnv
cfg.packages.gitaly.rubyEnv.wrappedRuby cfg.packages.gitaly.rubyEnv.wrappedRuby
gzip
bzip2
]; ];
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";

View File

@ -235,7 +235,7 @@ in {
''; '';
script = '' script = ''
export DD_API_KEY=$(head -n 1 ${cfg.apiKeyFile}) export DD_API_KEY=$(head -n 1 ${cfg.apiKeyFile})
exec ${datadogPkg}/bin/agent start -c /etc/datadog-agent/datadog.yaml exec ${datadogPkg}/bin/agent run -c /etc/datadog-agent/datadog.yaml
''; '';
serviceConfig.PermissionsStartOnly = true; serviceConfig.PermissionsStartOnly = true;
}; };

View File

@ -119,7 +119,7 @@ let
mkExporterConf = { name, conf, serviceOpts }: mkExporterConf = { name, conf, serviceOpts }:
mkIf conf.enable { mkIf conf.enable {
networking.firewall.extraCommands = mkIf conf.openFirewall (concatStrings [ networking.firewall.extraCommands = mkIf conf.openFirewall (concatStrings [
"ip46tables -I nixos-fw ${conf.firewallFilter} " "ip46tables -A nixos-fw ${conf.firewallFilter} "
"-m comment --comment ${name}-exporter -j nixos-fw-accept" "-m comment --comment ${name}-exporter -j nixos-fw-accept"
]); ]);
systemd.services."prometheus-${name}-exporter" = mkMerge ([{ systemd.services."prometheus-${name}-exporter" = mkMerge ([{

View File

@ -161,6 +161,7 @@ in {
FLANNELD_KUBECONFIG_FILE = cfg.kubeconfig; FLANNELD_KUBECONFIG_FILE = cfg.kubeconfig;
NODE_NAME = cfg.nodeName; NODE_NAME = cfg.nodeName;
}; };
path = [ pkgs.iptables ];
preStart = '' preStart = ''
mkdir -p /run/flannel mkdir -p /run/flannel
touch /run/flannel/docker touch /run/flannel/docker

View File

@ -0,0 +1,95 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.knot;
configFile = pkgs.writeText "knot.conf" cfg.extraConfig;
socketFile = "/run/knot/knot.sock";
knotConfCheck = file: pkgs.runCommand "knot-config-checked"
{ buildInputs = [ cfg.package ]; } ''
ln -s ${configFile} $out
knotc --config=${configFile} conf-check
'';
knot-cli-wrappers = pkgs.stdenv.mkDerivation {
name = "knot-cli-wrappers";
buildInputs = [ pkgs.makeWrapper ];
buildCommand = ''
mkdir -p $out/bin
makeWrapper ${cfg.package}/bin/knotc "$out/bin/knotc" \
--add-flags "--config=${configFile}" \
--add-flags "--socket=${socketFile}"
makeWrapper ${cfg.package}/bin/keymgr "$out/bin/keymgr" \
--add-flags "--config=${configFile}"
for executable in kdig khost kjournalprint knsec3hash knsupdate kzonecheck
do
ln -s "${cfg.package}/bin/$executable" "$out/bin/$executable"
done
mkdir -p "$out/share"
ln -s '${cfg.package}/share/man' "$out/share/"
'';
};
in {
options = {
services.knot = {
enable = mkEnableOption "Knot authoritative-only DNS server";
extraArgs = mkOption {
type = types.listOf types.str;
default = [];
description = ''
List of additional command line paramters for knotd
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Extra lines to be added verbatim to knot.conf
'';
};
package = mkOption {
type = types.package;
default = pkgs.knot-dns;
description = ''
Which Knot DNS package to use
'';
};
};
};
config = mkIf config.services.knot.enable {
systemd.services.knot = {
unitConfig.Documentation = "man:knotd(8) man:knot.conf(5) man:knotc(8) https://www.knot-dns.cz/docs/${cfg.package.version}/html/";
description = cfg.package.meta.description;
wantedBy = [ "multi-user.target" ];
wants = [ "network.target" ];
after = ["network.target" ];
serviceConfig = {
Type = "notify";
ExecStart = "${cfg.package}/bin/knotd --config=${knotConfCheck configFile} --socket=${socketFile} ${concatStringsSep " " cfg.extraArgs}";
ExecReload = "${knot-cli-wrappers}/bin/knotc reload";
CapabilityBoundingSet = "CAP_NET_BIND_SERVICE CAP_SETPCAP";
AmbientCapabilities = "CAP_NET_BIND_SERVICE CAP_SETPCAP";
NoNewPrivileges = true;
DynamicUser = "yes";
RuntimeDirectory = "knot";
StateDirectory = "knot";
StateDirectoryMode = "0700";
PrivateDevices = true;
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
SystemCallArchitectures = "native";
Restart = "on-abort";
};
};
environment.systemPackages = [ knot-cli-wrappers ];
};
}

View File

@ -197,7 +197,7 @@ let
listenString = { addr, port, ssl, extraParameters ? [], ... }: listenString = { addr, port, ssl, extraParameters ? [], ... }:
"listen ${addr}:${toString port} " "listen ${addr}:${toString port} "
+ optionalString ssl "ssl " + optionalString ssl "ssl "
+ optionalString vhost.http2 "http2 " + optionalString (ssl && vhost.http2) "http2 "
+ optionalString vhost.default "default_server " + optionalString vhost.default "default_server "
+ optionalString (extraParameters != []) (concatStringsSep " " extraParameters) + optionalString (extraParameters != []) (concatStringsSep " " extraParameters)
+ ";"; + ";";

View File

@ -0,0 +1,125 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.unit;
configFile = pkgs.writeText "unit.json" cfg.config;
in {
options = {
services.unit = {
enable = mkEnableOption "Unit App Server";
package = mkOption {
type = types.package;
default = pkgs.unit;
defaultText = "pkgs.unit";
description = "Unit package to use.";
};
user = mkOption {
type = types.str;
default = "unit";
description = "User account under which unit runs.";
};
group = mkOption {
type = types.str;
default = "unit";
description = "Group account under which unit runs.";
};
stateDir = mkOption {
default = "/var/spool/unit";
description = "Unit data directory.";
};
logDir = mkOption {
default = "/var/log/unit";
description = "Unit log directory.";
};
config = mkOption {
type = types.str;
default = ''
{
"listeners": {},
"applications": {}
}
'';
example = literalExample ''
{
"listeners": {
"*:8300": {
"application": "example-php-72"
}
},
"applications": {
"example-php-72": {
"type": "php 7.2",
"processes": 4,
"user": "nginx",
"group": "nginx",
"root": "/var/www",
"index": "index.php",
"options": {
"file": "/etc/php.d/default.ini",
"admin": {
"max_execution_time": "30",
"max_input_time": "30",
"display_errors": "off",
"display_startup_errors": "off",
"open_basedir": "/dev/urandom:/proc/cpuinfo:/proc/meminfo:/etc/ssl/certs:/var/www",
"disable_functions": "exec,passthru,shell_exec,system"
}
}
}
}
}
'';
description = "Unit configuration in JSON format. More details here https://unit.nginx.org/configuration";
};
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
systemd.tmpfiles.rules = [
"d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group} - -"
"d '${cfg.logDir}' 0750 ${cfg.user} ${cfg.group} - -"
];
systemd.services.unit = {
description = "Unit App Server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ curl ];
preStart = ''
test -f '/run/unit/control.unit.sock' || rm -f '/run/unit/control.unit.sock'
'';
postStart = ''
curl -X PUT --data-binary '@${configFile}' --unix-socket '/run/unit/control.unit.sock' 'http://localhost/config'
'';
serviceConfig = {
User = cfg.user;
Group = cfg.group;
AmbientCapabilities = "CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID";
CapabilityBoundingSet = "CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID";
ExecStart = ''
${cfg.package}/bin/unitd --control 'unix:/run/unit/control.unit.sock' --pid '/run/unit/unit.pid' \
--log '${cfg.logDir}/unit.log' --state '${cfg.stateDir}' --no-daemon \
--user ${cfg.user} --group ${cfg.group}
'';
RuntimeDirectory = "unit";
RuntimeDirectoryMode = "0750";
};
};
users.users = optionalAttrs (cfg.user == "unit") (singleton {
name = "unit";
group = cfg.group;
});
users.groups = optionalAttrs (cfg.group == "unit") (singleton {
name = "unit";
});
};
}

View File

@ -108,26 +108,26 @@ in
([ pkgs.pantheon.switchboard-plug-power ]) ([ pkgs.pantheon.switchboard-plug-power ])
(mkIf config.services.printing.enable ([pkgs.system-config-printer]) ) (mkIf config.services.printing.enable ([pkgs.system-config-printer]) )
]; ];
services.pantheon.contractor.enable = true; services.pantheon.contractor.enable = mkDefault true;
services.geoclue2.enable = mkDefault true; services.geoclue2.enable = mkDefault true;
# pantheon has pantheon-agent-geoclue2 # pantheon has pantheon-agent-geoclue2
services.geoclue2.enableDemoAgent = false; services.geoclue2.enableDemoAgent = false;
services.gnome3.at-spi2-core.enable = true; services.gnome3.at-spi2-core.enable = true;
services.gnome3.evolution-data-server.enable = true; services.gnome3.evolution-data-server.enable = true;
services.gnome3.file-roller.enable = true; services.gnome3.file-roller.enable = mkDefault true;
# TODO: gnome-keyring's xdg autostarts will still be in the environment (from elementary-session-settings) if disabled forcefully # TODO: gnome-keyring's xdg autostarts will still be in the environment (from elementary-session-settings) if disabled forcefully
services.gnome3.gnome-keyring.enable = true; services.gnome3.gnome-keyring.enable = true;
services.gnome3.gnome-settings-daemon.enable = true; services.gnome3.gnome-settings-daemon.enable = true;
services.gnome3.gnome-settings-daemon.package = pkgs.pantheon.elementary-settings-daemon; services.gnome3.gnome-settings-daemon.package = pkgs.pantheon.elementary-settings-daemon;
services.gnome3.gvfs.enable = true; services.gnome3.gvfs.enable = true;
services.gnome3.rygel.enable = true; services.gnome3.rygel.enable = mkDefault true;
services.gsignond.enable = true; services.gsignond.enable = mkDefault true;
services.gsignond.plugins = with pkgs.gsignondPlugins; [ lastfm mail oauth ]; services.gsignond.plugins = with pkgs.gsignondPlugins; [ lastfm mail oauth ];
services.udisks2.enable = true; services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable; services.upower.enable = config.powerManagement.enable;
services.xserver.libinput.enable = mkDefault true; services.xserver.libinput.enable = mkDefault true;
services.xserver.updateDbusEnvironment = true; services.xserver.updateDbusEnvironment = true;
services.zeitgeist.enable = true; services.zeitgeist.enable = mkDefault true;
networking.networkmanager.enable = mkDefault true; networking.networkmanager.enable = mkDefault true;
networking.networkmanager.basePackages = networking.networkmanager.basePackages =
@ -152,19 +152,15 @@ in
"/share" "/share"
]; ];
environment.systemPackages = pkgs.pantheon.artwork ++ pkgs.pantheon.desktop ++ pkgs.pantheon.services ++ cfg.sessionPath environment.systemPackages =
++ (pkgs.gnome3.removePackagesByName pkgs.pantheon.apps config.environment.pantheon.excludePackages) pkgs.pantheon.artwork ++ pkgs.pantheon.desktop ++ pkgs.pantheon.services ++ cfg.sessionPath
++ (with pkgs.gnome3; ++ (with pkgs; gnome3.removePackagesByName
[ ([
adwaita-icon-theme gnome3.geary
dconf gnome3.epiphany
epiphany gnome3.gnome-font-viewer
evince evince
geary ] ++ pantheon.apps) config.environment.pantheon.excludePackages)
gnome-bluetooth
gnome-font-viewer
gnome-power-manager
])
++ (with pkgs; ++ (with pkgs;
[ [
adwaita-qt adwaita-qt
@ -172,6 +168,8 @@ in
glib glib
glib-networking glib-networking
gnome-menus gnome-menus
gnome3.adwaita-icon-theme
gnome3.dconf
gtk3.out gtk3.out
hicolor-icon-theme hicolor-icon-theme
lightlocker lightlocker
@ -187,6 +185,7 @@ in
roboto-mono roboto-mono
pantheon.elementary-redacted-script # needed by screenshot-tool pantheon.elementary-redacted-script # needed by screenshot-tool
]; ];
fonts.fontconfig.defaultFonts = { fonts.fontconfig.defaultFonts = {
monospace = [ "Roboto Mono" ]; monospace = [ "Roboto Mono" ];
sansSerif = [ "Open Sans" ]; sansSerif = [ "Open Sans" ];

View File

@ -226,7 +226,29 @@ in
security.pam.services.slim.enableKwallet = true; security.pam.services.slim.enableKwallet = true;
# Update the start menu for each user that is currently logged in # Update the start menu for each user that is currently logged in
system.userActivationScripts.plasmaSetup = "${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5"; system.userActivationScripts.plasmaSetup = ''
# The KDE icon cache is supposed to update itself
# automatically, but it uses the timestamp on the icon
# theme directory as a trigger. Since in Nix the
# timestamp is always the same, this doesn't work. So as
# a workaround, nuke the icon cache on login. This isn't
# perfect, since it may require logging out after
# installing new applications to update the cache.
# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html
rm -fv $HOME/.cache/icon-cache.kcache
# xdg-desktop-settings generates this empty file but
# it makes kbuildsyscoca5 fail silently. To fix this
# remove that menu if it exists.
rm -fv $HOME/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu
# Remove the kbuildsyscoca5 cache. It will be regenerated
# immediately after. This is necessary for kbuildsyscoca5 to
# recognize that software that has been removed.
rm -fv $HOME/.cache/ksycoca*
${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5
'';
}) })
]; ];

View File

@ -8,13 +8,17 @@ let
efi = config.boot.loader.efi; efi = config.boot.loader.efi;
realGrub = if cfg.version == 1 then pkgs.grub grubPkgs =
else if cfg.zfsSupport then pkgs.grub2.override { zfsSupport = true; } # Package set of targeted architecture
if cfg.forcei686 then pkgs.pkgsi686Linux else pkgs;
realGrub = if cfg.version == 1 then grubPkgs.grub
else if cfg.zfsSupport then grubPkgs.grub2.override { zfsSupport = true; }
else if cfg.trustedBoot.enable else if cfg.trustedBoot.enable
then if cfg.trustedBoot.isHPLaptop then if cfg.trustedBoot.isHPLaptop
then pkgs.trustedGrub-for-HP then grubPkgs.trustedGrub-for-HP
else pkgs.trustedGrub else grubPkgs.trustedGrub
else pkgs.grub2; else grubPkgs.grub2;
grub = grub =
# Don't include GRUB if we're only generating a GRUB menu (e.g., # Don't include GRUB if we're only generating a GRUB menu (e.g.,
@ -58,14 +62,10 @@ let
version extraConfig extraPerEntryConfig extraEntries forceInstall useOSProber version extraConfig extraPerEntryConfig extraEntries forceInstall useOSProber
extraEntriesBeforeNixOS extraPrepareConfig extraInitrd configurationLimit copyKernels extraEntriesBeforeNixOS extraPrepareConfig extraInitrd configurationLimit copyKernels
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios; default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
path = (makeBinPath ([ path = with pkgs; makeBinPath (
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfs-progs [ coreutils gnused gnugrep findutils diffutils btrfs-progs utillinux mdadm ]
pkgs.utillinux ] ++ optional (cfg.efiSupport && (cfg.version == 2)) efibootmgr
++ (optional (cfg.efiSupport && (cfg.version == 2)) pkgs.efibootmgr) ++ optionals cfg.useOSProber [ busybox os-prober ]);
++ (optionals cfg.useOSProber [pkgs.busybox pkgs.os-prober])
)) + ":" + (makeSearchPathOutput "bin" "sbin" [
pkgs.mdadm pkgs.utillinux
]);
font = if cfg.font == null then "" font = if cfg.font == null then ""
else (if lib.last (lib.splitString "." cfg.font) == "pf2" else (if lib.last (lib.splitString "." cfg.font) == "pf2"
then cfg.font then cfg.font
@ -512,6 +512,15 @@ in
''; '';
}; };
forcei686 = mkOption {
default = false;
type = types.bool;
description = ''
Whether to force the use of a ia32 boot loader on x64 systems. Required
to install and run NixOS on 64bit x86 systems with 32bit (U)EFI.
'';
};
trustedBoot = { trustedBoot = {
enable = mkOption { enable = mkOption {

View File

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

View File

@ -43,6 +43,7 @@ in
clickhouse = handleTest ./clickhouse.nix {}; clickhouse = handleTest ./clickhouse.nix {};
cloud-init = handleTest ./cloud-init.nix {}; cloud-init = handleTest ./cloud-init.nix {};
codimd = handleTest ./codimd.nix {}; codimd = handleTest ./codimd.nix {};
colord = handleTest ./colord.nix {};
containers-bridge = handleTest ./containers-bridge.nix {}; containers-bridge = handleTest ./containers-bridge.nix {};
containers-extra_veth = handleTest ./containers-extra_veth.nix {}; containers-extra_veth = handleTest ./containers-extra_veth.nix {};
containers-hosts = handleTest ./containers-hosts.nix {}; containers-hosts = handleTest ./containers-hosts.nix {};
@ -117,6 +118,7 @@ in
kernel-latest = handleTest ./kernel-latest.nix {}; kernel-latest = handleTest ./kernel-latest.nix {};
kernel-lts = handleTest ./kernel-lts.nix {}; kernel-lts = handleTest ./kernel-lts.nix {};
keymap = handleTest ./keymap.nix {}; keymap = handleTest ./keymap.nix {};
knot = handleTest ./knot.nix {};
kubernetes.dns = handleTestOn ["x86_64-linux"] ./kubernetes/dns.nix {}; kubernetes.dns = handleTestOn ["x86_64-linux"] ./kubernetes/dns.nix {};
# kubernetes.e2e should eventually replace kubernetes.rbac when it works # kubernetes.e2e should eventually replace kubernetes.rbac when it works
#kubernetes.e2e = handleTestOn ["x86_64-linux"] ./kubernetes/e2e.nix {}; #kubernetes.e2e = handleTestOn ["x86_64-linux"] ./kubernetes/e2e.nix {};
@ -172,6 +174,7 @@ in
osquery = handleTest ./osquery.nix {}; osquery = handleTest ./osquery.nix {};
osrm-backend = handleTest ./osrm-backend.nix {}; osrm-backend = handleTest ./osrm-backend.nix {};
ostree = handleTest ./ostree.nix {}; ostree = handleTest ./ostree.nix {};
overlayfs = handleTest ./overlayfs.nix {};
pam-oath-login = handleTest ./pam-oath-login.nix {}; pam-oath-login = handleTest ./pam-oath-login.nix {};
pam-u2f = handleTest ./pam-u2f.nix {}; pam-u2f = handleTest ./pam-u2f.nix {};
pantheon = handleTest ./pantheon.nix {}; pantheon = handleTest ./pantheon.nix {};

18
nixos/tests/colord.nix Normal file
View File

@ -0,0 +1,18 @@
# run installed tests
import ./make-test.nix ({ pkgs, ... }:
{
name = "colord";
meta = {
maintainers = pkgs.colord.meta.maintainers;
};
machine = { pkgs, ... }: {
environment.systemPackages = with pkgs; [ gnome-desktop-testing ];
};
testScript = ''
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.colord.installedTests}/share'");
'';
})

View File

@ -1,5 +1,8 @@
# This test runs gitlab and checks if it works # This test runs gitlab and checks if it works
let
initialRootPassword = "notproduction";
in
import ./make-test.nix ({ pkgs, lib, ...} : with lib; { import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
name = "gitlab"; name = "gitlab";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
@ -27,7 +30,7 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
services.gitlab = { services.gitlab = {
enable = true; enable = true;
databasePassword = "dbPassword"; databasePassword = "dbPassword";
initialRootPassword = "notproduction"; inherit initialRootPassword;
smtp.enable = true; smtp.enable = true;
secrets = { secrets = {
secret = "secret"; secret = "secret";
@ -69,7 +72,27 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
}; };
}; };
testScript = '' testScript =
let
auth = pkgs.writeText "auth.json" (builtins.toJSON {
grant_type = "password";
username = "root";
password = initialRootPassword;
});
createProject = pkgs.writeText "create-project.json" (builtins.toJSON {
name = "test";
});
putFile = pkgs.writeText "put-file.json" (builtins.toJSON {
branch = "master";
author_email = "author@example.com";
author_name = "Firstname Lastname";
content = "some content";
commit_message = "create a new file";
});
in
''
$gitlab->start(); $gitlab->start();
$gitlab->waitForUnit("gitaly.service"); $gitlab->waitForUnit("gitaly.service");
$gitlab->waitForUnit("gitlab-workhorse.service"); $gitlab->waitForUnit("gitlab-workhorse.service");
@ -78,6 +101,13 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
$gitlab->waitForFile("/var/gitlab/state/tmp/sockets/gitlab.socket"); $gitlab->waitForFile("/var/gitlab/state/tmp/sockets/gitlab.socket");
$gitlab->waitUntilSucceeds("curl -sSf http://gitlab/users/sign_in"); $gitlab->waitUntilSucceeds("curl -sSf http://gitlab/users/sign_in");
$gitlab->succeed("curl -isSf http://gitlab | grep -i location | grep -q http://gitlab/users/sign_in"); $gitlab->succeed("curl -isSf http://gitlab | grep -i location | grep -q http://gitlab/users/sign_in");
$gitlab->succeed("${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2") $gitlab->succeed("${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2");
$gitlab->succeed("echo \"Authorization: Bearer \$(curl -X POST -H 'Content-Type: application/json' -d @${auth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers");
$gitlab->succeed("curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${createProject} http://gitlab/api/v4/projects");
$gitlab->succeed("curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${putFile} http://gitlab/api/v4/projects/1/repository/files/some-file.txt");
$gitlab->succeed("curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.gz > /tmp/archive.tar.gz");
$gitlab->succeed("curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.bz2 > /tmp/archive.tar.bz2");
$gitlab->succeed("test -s /tmp/archive.tar.gz");
$gitlab->succeed("test -s /tmp/archive.tar.bz2");
''; '';
}) })

197
nixos/tests/knot.nix Normal file
View File

@ -0,0 +1,197 @@
import ./make-test.nix ({ pkgs, lib, ...} :
let
common = {
networking.firewall.enable = false;
networking.useDHCP = false;
};
exampleZone = pkgs.writeTextDir "example.com.zone" ''
@ SOA ns.example.com. noc.example.com. 2019031301 86400 7200 3600000 172800
@ NS ns1
@ NS ns2
ns1 A 192.168.0.1
ns1 AAAA fd00::1
ns2 A 192.168.0.2
ns2 AAAA fd00::2
www A 192.0.2.1
www AAAA 2001:DB8::1
sub NS ns.example.com.
'';
delegatedZone = pkgs.writeTextDir "sub.example.com.zone" ''
@ SOA ns.example.com. noc.example.com. 2019031301 86400 7200 3600000 172800
@ NS ns1.example.com.
@ NS ns2.example.com.
@ A 192.0.2.2
@ AAAA 2001:DB8::2
'';
knotZonesEnv = pkgs.buildEnv {
name = "knot-zones";
paths = [ exampleZone delegatedZone ];
};
in {
name = "knot";
nodes = {
master = { lib, ... }: {
imports = [ common ];
networking.interfaces.eth1 = {
ipv4.addresses = lib.mkForce [
{ address = "192.168.0.1"; prefixLength = 24; }
];
ipv6.addresses = lib.mkForce [
{ address = "fd00::1"; prefixLength = 64; }
];
};
services.knot.enable = true;
services.knot.extraArgs = [ "-v" ];
services.knot.extraConfig = ''
server:
listen: 0.0.0.0@53
listen: ::@53
acl:
- id: slave_acl
address: 192.168.0.2
action: transfer
remote:
- id: slave
address: 192.168.0.2@53
template:
- id: default
storage: ${knotZonesEnv}
notify: [slave]
acl: [slave_acl]
dnssec-signing: on
# Input-only zone files
# https://www.knot-dns.cz/docs/2.8/html/operation.html#example-3
# prevents modification of the zonefiles, since the zonefiles are immutable
zonefile-sync: -1
zonefile-load: difference
journal-content: changes
# move databases below the state directory, because they need to be writable
journal-db: /var/lib/knot/journal
kasp-db: /var/lib/knot/kasp
timer-db: /var/lib/knot/timer
zone:
- domain: example.com
file: example.com.zone
- domain: sub.example.com
file: sub.example.com.zone
log:
- target: syslog
any: info
'';
};
slave = { lib, ... }: {
imports = [ common ];
networking.interfaces.eth1 = {
ipv4.addresses = lib.mkForce [
{ address = "192.168.0.2"; prefixLength = 24; }
];
ipv6.addresses = lib.mkForce [
{ address = "fd00::2"; prefixLength = 64; }
];
};
services.knot.enable = true;
services.knot.extraArgs = [ "-v" ];
services.knot.extraConfig = ''
server:
listen: 0.0.0.0@53
listen: ::@53
acl:
- id: notify_from_master
address: 192.168.0.1
action: notify
remote:
- id: master
address: 192.168.0.1@53
template:
- id: default
master: master
acl: [notify_from_master]
# zonefileless setup
# https://www.knot-dns.cz/docs/2.8/html/operation.html#example-2
zonefile-sync: -1
zonefile-load: none
journal-content: all
# move databases below the state directory, because they need to be writable
journal-db: /var/lib/knot/journal
kasp-db: /var/lib/knot/kasp
timer-db: /var/lib/knot/timer
zone:
- domain: example.com
file: example.com.zone
- domain: sub.example.com
file: sub.example.com.zone
log:
- target: syslog
any: info
'';
};
client = { lib, nodes, ... }: {
imports = [ common ];
networking.interfaces.eth1 = {
ipv4.addresses = [
{ address = "192.168.0.3"; prefixLength = 24; }
];
ipv6.addresses = [
{ address = "fd00::3"; prefixLength = 64; }
];
};
environment.systemPackages = [ pkgs.knot-dns ];
};
};
testScript = { nodes, ... }: let
master4 = (lib.head nodes.master.config.networking.interfaces.eth1.ipv4.addresses).address;
master6 = (lib.head nodes.master.config.networking.interfaces.eth1.ipv6.addresses).address;
slave4 = (lib.head nodes.slave.config.networking.interfaces.eth1.ipv4.addresses).address;
slave6 = (lib.head nodes.slave.config.networking.interfaces.eth1.ipv6.addresses).address;
in ''
startAll;
$client->waitForUnit("network.target");
$master->waitForUnit("knot.service");
$slave->waitForUnit("knot.service");
sub assertResponse {
my ($knot, $query_type, $query, $expected) = @_;
my $out = $client->succeed("khost -t $query_type $query $knot");
$client->log("$knot replies with: $out");
chomp $out;
die "DNS query for $query ($query_type) against $knot gave '$out' instead of '$expected'"
if ($out !~ $expected);
}
foreach ("${master4}", "${master6}", "${slave4}", "${slave6}") {
subtest $_, sub {
assertResponse($_, "SOA", "example.com", qr/start of authority.*?noc\.example\.com/);
assertResponse($_, "A", "example.com", qr/has no [^ ]+ record/);
assertResponse($_, "AAAA", "example.com", qr/has no [^ ]+ record/);
assertResponse($_, "A", "www.example.com", qr/address 192.0.2.1$/);
assertResponse($_, "AAAA", "www.example.com", qr/address 2001:db8::1$/);
assertResponse($_, "NS", "sub.example.com", qr/nameserver is ns\d\.example\.com.$/);
assertResponse($_, "A", "sub.example.com", qr/address 192.0.2.2$/);
assertResponse($_, "AAAA", "sub.example.com", qr/address 2001:db8::2$/);
assertResponse($_, "RRSIG", "www.example.com", qr/RR set signature is/);
assertResponse($_, "DNSKEY", "example.com", qr/DNSSEC key is/);
};
}
'';
})

57
nixos/tests/overlayfs.nix Normal file
View File

@ -0,0 +1,57 @@
import ./make-test.nix ({ pkgs, ... }: {
name = "overlayfs";
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ bachp ];
machine = { pkgs, ... }: {
virtualisation.emptyDiskImages = [ 512 ];
networking.hostId = "deadbeef";
environment.systemPackages = with pkgs; [ parted ];
};
testScript = ''
$machine->succeed("ls /dev");
$machine->succeed("mkdir -p /tmp/mnt");
# Test ext4 + overlayfs
$machine->succeed(
"mkfs.ext4 -F -L overlay-ext4 /dev/vdb",
"mount -t ext4 /dev/vdb /tmp/mnt",
"mkdir -p /tmp/mnt/upper /tmp/mnt/lower /tmp/mnt/work /tmp/mnt/merged",
# Setup some existing files
"echo 'Replace' > /tmp/mnt/lower/replace.txt",
"echo 'Append' > /tmp/mnt/lower/append.txt",
"echo 'Overwrite' > /tmp/mnt/lower/overwrite.txt",
"mount -t overlay overlay -o lowerdir=/tmp/mnt/lower,upperdir=/tmp/mnt/upper,workdir=/tmp/mnt/work /tmp/mnt/merged",
# Test new
"echo 'New' > /tmp/mnt/merged/new.txt",
"[[ \"\$(cat /tmp/mnt/merged/new.txt)\" == \"New\" ]]",
# Test replace
"[[ \"\$(cat /tmp/mnt/merged/replace.txt)\" == \"Replace\" ]]",
"echo 'Replaced' > /tmp/mnt/merged/replace-tmp.txt",
"mv /tmp/mnt/merged/replace-tmp.txt /tmp/mnt/merged/replace.txt",
"[[ \"\$(cat /tmp/mnt/merged/replace.txt)\" == \"Replaced\" ]]",
# Overwrite
"[[ \"\$(cat /tmp/mnt/merged/overwrite.txt)\" == \"Overwrite\" ]]",
"echo 'Overwritten' > /tmp/mnt/merged/overwrite.txt",
"[[ \"\$(cat /tmp/mnt/merged/overwrite.txt)\" == \"Overwritten\" ]]",
# Test append
"[[ \"\$(cat /tmp/mnt/merged/append.txt)\" == \"Append\" ]]",
"echo 'ed' >> /tmp/mnt/merged/append.txt",
#"cat /tmp/mnt/merged/append.txt && exit 1",
"[[ \"\$(cat /tmp/mnt/merged/append.txt)\" == \"Append\ned\" ]]",
"umount /tmp/mnt/merged",
"umount /tmp/mnt",
"udevadm settle"
);
'';
})

View File

@ -3,7 +3,7 @@
import ./make-test.nix ({pkgs, ... }: { import ./make-test.nix ({pkgs, ... }: {
name = "printing"; name = "printing";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ domenkozar eelco jgeerds ]; maintainers = [ domenkozar eelco ];
}; };
nodes = { nodes = {

View File

@ -11,6 +11,8 @@ stdenv.mkDerivation rec {
sha256 = "1v1qwv4x5agjba82s1vknmdgq67y26wzdwbmwwqavv7f7y3y860h"; sha256 = "1v1qwv4x5agjba82s1vknmdgq67y26wzdwbmwwqavv7f7y3y860h";
}; };
enableParallelBuilding = false;
qmakeFlags = ["USE_UPNP=-"]; qmakeFlags = ["USE_UPNP=-"];
# I think that openssl and zlib are required, but come through other # I think that openssl and zlib are required, but come through other

View File

@ -4,14 +4,14 @@
, pname ? "ADLplug" }: , pname ? "ADLplug" }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "${pname}-${version}"; inherit pname;
version = "v1.0.0-beta.5"; version = "1.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jpcima"; owner = "jpcima";
repo = "ADLplug"; repo = "ADLplug";
rev = version; rev = "v${version}";
sha256 = "1f8v61nv33xwpzmmk38dkr3fvm2j2xf0a74agxnl9p1yvy3a9w3s"; sha256 = "1rpd7v1rx74cv7nhs70ah0bly314rjzj70cp30mvhns2hzk66s3c";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View File

@ -3,11 +3,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = packageName + "-" + version ; name = packageName + "-" + version ;
packageName = "aj-snapshot" ; packageName = "aj-snapshot" ;
version = "0.9.8"; version = "0.9.9";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/${packageName}/${name}.tar.bz2"; url = "mirror://sourceforge/${packageName}/${name}.tar.bz2";
sha256 = "0wilky1g2mb88v2z0520s7sw1dsn10iwanc8id5p6z1xsnhg7b6p"; sha256 = "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil";
}; };
doCheck = false; doCheck = false;

View File

@ -7,12 +7,12 @@
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.3.0"; version = "2.3.1";
name = "audacity-${version}"; name = "audacity-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz"; url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
sha256 = "0pi7ksm8hfvwbn580z4kkc55sbaylrrr7v08s04dmdgfvil7y4ip"; sha256 = "089kz6hgqg0caz33sps19wpkfnza5gf7brdq2p9y6bnwkipw1w9f";
}; };
preConfigure = /* we prefer system-wide libs */ '' preConfigure = /* we prefer system-wide libs */ ''

View File

@ -3,11 +3,11 @@
bitwig-studio1.overrideAttrs (oldAttrs: rec { bitwig-studio1.overrideAttrs (oldAttrs: rec {
name = "bitwig-studio-${version}"; name = "bitwig-studio-${version}";
version = "2.4.3"; version = "2.5";
src = fetchurl { src = fetchurl {
url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb"; url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
sha256 = "17754y4ni0zj9vjxl8ldivi33gdb0nk6sdlcmlpskgffrlx8di08"; sha256 = "1zkiz36lhck3qvl0cp0dq6pwbv4lx4sh9wh0ga92kx5zhvbjm098";
}; };
runtimeDependencies = [ runtimeDependencies = [

View File

@ -1,44 +1,45 @@
{ stdenv, csound, desktop-file-utils, { stdenv, csound, desktop-file-utils,
fetchFromGitHub, python, python-qt, qmake, fetchFromGitHub, python, python-qt, qmake,
qtwebengine, rtmidi, unzip }: qtwebengine, qtxmlpatterns, rtmidi, fetchpatch }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "csound-qt-${version}"; name = "csound-qt-${version}";
version = "0.9.6-beta2"; version = "0.9.6-beta3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "CsoundQt"; owner = "CsoundQt";
repo = "CsoundQt"; repo = "CsoundQt";
rev = "${version}"; rev = "${version}";
sha256 = "12jv7cvns3wj2npha0mvpn88kkkfsxsvhgzs2wrw04kbrvbhbffi"; sha256 = "007jhkh0k6qk52r77i067999dwdiimazix6ggp2hvyc4pj6n5dip";
}; };
patches = [ ./rtmidipath.patch ]; patches = [
(fetchpatch {
name = "examplepath.patch";
url = "https://github.com/CsoundQt/CsoundQt/commit/09f2d515bff638cbcacb450979d66e273a59fdec.diff";
sha256 = "0y23kf8m1mh9mklsvf908b2b8m2w2rji8qvws44paf1kpwnwdmgm";
})
./rtmidipath.patch
];
nativeBuildInputs = [ qmake qtwebengine ]; nativeBuildInputs = [ qmake qtwebengine qtxmlpatterns ];
buildInputs = [ csound desktop-file-utils rtmidi unzip ]; buildInputs = [ csound desktop-file-utils rtmidi ];
qmakeFlags = [ "qcs.pro" "CONFIG+=rtmidi" "CONFIG+=pythonqt" qmakeFlags = [ "qcs.pro" "CONFIG+=rtmidi" "CONFIG+=pythonqt"
"CONFIG+=record_support" "CONFIG+=html_webengine"
"CSOUND_INCLUDE_DIR=${csound}/include/csound" "CSOUND_INCLUDE_DIR=${csound}/include/csound"
"CSOUND_LIBRARY_DIR=${csound}/lib" "CSOUND_LIBRARY_DIR=${csound}/lib"
"RTMIDI_DIR=${rtmidi.src}" "RTMIDI_DIR=${rtmidi.src}"
"PYTHONQT_SRC_DIR=${python-qt}/lib" "PYTHONQT_SRC_DIR=${python-qt}/include/PythonQt"
"PYTHONQT_LIB_DIR=${python-qt}/lib" "PYTHONQT_LIB_DIR=${python-qt}/lib"
"LIBS+=${python-qt}/lib/libPythonQt-Qt5-Python2.7.so" "LIBS+=-L${python-qt}/lib"
"LIBS+=${python-qt}/lib/libPythonQt_QtAll-Qt5-Python2.7.so"
"INCLUDEPATH+=${python-qt}/include/PythonQt" "INCLUDEPATH+=${python-qt}/include/PythonQt"
"INCLUDEPATH+=${python}/include/python2.7" "INCLUDEPATH+=${python}/include/python2.7"
"INSTALL_DIR=$(out)" "INSTALL_DIR=${placeholder "out"}"
"SHARE_DIR=$(out)/share" "SHARE_DIR=${placeholder "out"}/share"
]; ];
installPhase = ''
mkdir -p $out
cp -r bin $out
make install
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features."; description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features.";
homepage = https://csoundqt.github.io/; homepage = https://csoundqt.github.io/;

View File

@ -3,15 +3,15 @@ index e5e0c896..9a9fa513 100644
--- a/src/src.pri --- a/src/src.pri
+++ b/src/src.pri +++ b/src/src.pri
@@ -155,9 +155,9 @@ pythonqt { @@ -155,9 +155,9 @@ pythonqt {
"src/pyqcsobject.cpp" "src/pyqcsobject.cpp"
} }
rtmidi { rtmidi {
- HEADERS += "src/../$${RTMIDI_DIR}/RtMidi.h" - HEADERS += "src/../$${RTMIDI_DIR}/RtMidi.h"
- SOURCES += "src/../$${RTMIDI_DIR}/RtMidi.cpp" - SOURCES += "src/../$${RTMIDI_DIR}/RtMidi.cpp"
- INCLUDEPATH += src/../$${RTMIDI_DIR} - INCLUDEPATH += src/../$${RTMIDI_DIR}
+ HEADERS += "$${RTMIDI_DIR}/RtMidi.h" + HEADERS += "$${RTMIDI_DIR}/RtMidi.h"
+ SOURCES += "$${RTMIDI_DIR}/RtMidi.cpp" + SOURCES += "$${RTMIDI_DIR}/RtMidi.cpp"
+ INCLUDEPATH += $${RTMIDI_DIR} + INCLUDEPATH += $${RTMIDI_DIR}
} }
perfThread_build { perfThread_build {

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "drumkv1-${version}"; name = "drumkv1-${version}";
version = "0.9.4"; version = "0.9.5";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/drumkv1/${name}.tar.gz"; url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
sha256 = "02j10khl3wd17z0wfs3crr55wv7h9f0qhhg90xg0kvrxvw83vzy9"; sha256 = "1azzwqgrrr4zr509sib2jvigfvz5bkwnx82chdadxdwfarai8586";
}; };
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ]; buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];

View File

@ -8,13 +8,13 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "freewheeling-${version}"; name = "freewheeling-${version}";
version = "0.6.4"; version = "0.6.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "free-wheeling"; owner = "free-wheeling";
repo = "freewheeling"; repo = "freewheeling";
rev = "v${version}"; rev = "v${version}";
sha256 = "1xflbbnjdibjmyxb1zq8liylaw5k03nnl1z3272jh204pqh17ri9"; sha256 = "1gjii2kndffj9iqici4vb9zrkrdqj1hs9q43x7jv48wv9872z78r";
}; };
nativeBuildInputs = [ pkgconfig autoreconfHook libtool ]; nativeBuildInputs = [ pkgconfig autoreconfHook libtool ];

View File

@ -1,25 +0,0 @@
{ stdenv, fetchgit, python2Packages }:
python2Packages.buildPythonApplication rec {
pname = "lastwatch";
version = "0.4.1";
src = fetchgit {
url = "git://github.com/aszlig/LastWatch.git";
rev = "refs/tags/v${version}";
sha256 = "0nlng3595j5jvnikk8i5hb915zak5zsmfn2306cc4gfcns9xzjwp";
};
propagatedBuildInputs = with python2Packages; [
pyinotify
pylast
mutagen
];
meta = {
homepage = https://github.com/aszlig/LastWatch;
description = "An inotify-based last.fm audio scrobbler";
license = stdenv.lib.licenses.gpl2;
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -5,7 +5,7 @@
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "lollypop"; pname = "lollypop";
version = "0.9.923"; version = "1.0";
format = "other"; format = "other";
doCheck = false; doCheck = false;
@ -14,7 +14,7 @@ python3.pkgs.buildPythonApplication rec {
url = "https://gitlab.gnome.org/World/lollypop"; url = "https://gitlab.gnome.org/World/lollypop";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
fetchSubmodules = true; fetchSubmodules = true;
sha256 = "0jgz36lrhigcsr9vs5sp4ngv8rir3zqicygymjv7d61d6pclkx1z"; sha256 = "00hjxpgmhzhyjjdpm92cbbxwnc17xdhhk8svk5ih3n18yk5655fs";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -2,11 +2,11 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
pname = "Mopidy-Iris"; pname = "Mopidy-Iris";
version = "3.32.5"; version = "3.33.0";
src = pythonPackages.fetchPypi { src = pythonPackages.fetchPypi {
inherit pname version; inherit pname version;
sha256 = "0vs8x26zcakk6c31sc774h2lcdw3syp236vyymmx1jnfsh1jaqpn"; sha256 = "0g00rjkmsnza4gjjdm0cwrpw3gqvmjj58157dvrh7f8k7j0gdvdm";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [
@ -14,14 +14,10 @@ pythonPackages.buildPythonApplication rec {
mopidy-local-images mopidy-local-images
] ++ (with pythonPackages; [ ] ++ (with pythonPackages; [
configobj configobj
pylast requests
spotipy
raven
tornado_4 tornado_4
]); ]);
postPatch = "sed -i /tornado/d setup.py";
# no tests implemented # no tests implemented
doCheck = false; doCheck = false;

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "ncpamixer-${version}"; name = "ncpamixer-${version}";
version = "1.3"; version = "1.3.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "fulhax"; owner = "fulhax";
repo = "ncpamixer"; repo = "ncpamixer";
rev = version; rev = version;
sha256 = "02v8vsx26w3wrzkg61457diaxv1hyzsh103p53j80la9vglamdsh"; sha256 = "19pxfvfhhrbfk1wz5awx60y51jccrgrcvlq7lb622sw2z0wzw4ac";
}; };
buildInputs = [ ncurses libpulseaudio ]; buildInputs = [ ncurses libpulseaudio ];

View File

@ -0,0 +1,69 @@
{ stdenv, fetchFromGitHub, pkgconfig, meson, gnome3, at-spi2-core, dbus, gst_all_1, sphinxbase, pocketsphinx, ninja, gettext, appstream-glib, python3, glib, gobject-introspection, gsettings-desktop-schemas, itstool, wrapGAppsHook, makeWrapper, hicolor-icon-theme }:
stdenv.mkDerivation rec {
pname = "parlatype";
version = "1.6-beta";
src = fetchFromGitHub {
owner = "gkarsay";
repo = pname;
rev = "v${version}";
sha256 = "0bi0djic9kf178s7vl3y83v4rzhvynlvyf64n94fy80n2f100dj9";
};
nativeBuildInputs = [
pkgconfig
meson
ninja
gettext
appstream-glib
python3
gobject-introspection
itstool
wrapGAppsHook
];
buildInputs = [
gnome3.gtk
at-spi2-core
dbus
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-ugly
gst_all_1.gst-libav
sphinxbase
pocketsphinx
glib
gsettings-desktop-schemas
hicolor-icon-theme
];
mesonFlags = [ "-Dlibreoffice=false" ];
postPatch = ''
chmod +x data/meson_post_install.py
patchShebangs data/meson_post_install.py
'';
doCheck = false;
enableParallelBuilding = true;
buildPhase = ''
export GST_PLUGIN_SYSTEM_PATH_1_0="$out/lib/gstreamer-1.0/:$GST_PLUGIN_SYSTEM_PATH_1_0"
'';
meta = with stdenv.lib; {
description = "GNOME audio player for transcription";
longDescription = ''
Parlatype is a minimal audio player for manual speech transcription, written for the GNOME desktop environment.
It plays audio sources to transcribe them in your favourite text application.
Its intended to be useful for journalists, students, scientists and whoever needs to transcribe audio files.
'';
homepage = https://gkarsay.github.io/parlatype/;
license = licenses.gpl3Plus;
maintainers = [ maintainers.melchips ];
platforms = platforms.linux;
};
}

View File

@ -2,11 +2,12 @@
, libcanberra-gtk3, makeWrapper, gnome3 }: , libcanberra-gtk3, makeWrapper, gnome3 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "pavucontrol-3.0"; pname = "pavucontrol";
version = "4.0";
src = fetchurl { src = fetchurl {
url = "https://freedesktop.org/software/pulseaudio/pavucontrol/${name}.tar.xz"; url = "https://freedesktop.org/software/pulseaudio/${pname}/${pname}-${version}.tar.xz";
sha256 = "14486c6lmmirkhscbfygz114f6yzf97h35n3h3pdr27w4mdfmlmk"; sha256 = "1qhlkl3g8d7h72xjskii3g1l7la2cavwp69909pzmbi2jyn5pi4g";
}; };
preFixup = '' preFixup = ''
@ -35,7 +36,7 @@ stdenv.mkDerivation rec {
license = stdenv.lib.licenses.gpl2Plus; license = stdenv.lib.licenses.gpl2Plus;
maintainers = with maintainers; [ abbradar jgeerds ]; maintainers = with maintainers; [ abbradar ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -4,13 +4,13 @@ let
pythonPackages = python3Packages; pythonPackages = python3Packages;
in pythonPackages.buildPythonApplication rec { in pythonPackages.buildPythonApplication rec {
pname = "picard"; pname = "picard";
version = "2.1.2"; version = "2.1.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "metabrainz"; owner = "metabrainz";
repo = pname; repo = pname;
rev = "release-${version}"; rev = "release-${version}";
sha256 = "1p2bvfzby0nk1vh04yfmsvjcldgkj6m6s1hcv9v13hc8q1cbdfk5"; sha256 = "1armg8vpvnbpk7rrfk9q7nj5gm56rza00ni9qwdyqpxp1xaz6apj";
}; };
nativeBuildInputs = [ gettext ]; nativeBuildInputs = [ gettext ];

View File

@ -35,6 +35,6 @@ pythonPackages.buildPythonApplication rec {
description = "Pandora Internet Radio player for GNOME"; description = "Pandora Internet Radio player for GNOME";
homepage = https://pithos.github.io/; homepage = https://pithos.github.io/;
license = licenses.gpl3; license = licenses.gpl3;
maintainers = with maintainers; [ obadz jgeerds ]; maintainers = with maintainers; [ obadz ];
}; };
} }

View File

@ -23,13 +23,13 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "pulseaudio-modules-bt-${version}"; name = "pulseaudio-modules-bt-${version}";
version = "unstable-2019-01-05"; version = "unstable-2019-03-15";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "EHfive"; owner = "EHfive";
repo = "pulseaudio-modules-bt"; repo = "pulseaudio-modules-bt";
rev = "4b0cde160c96f40d860fef267a6ded49ae045be0"; rev = "0b397c26eb4fd5dc611bd3e2baa79776de646856";
sha256 = "15jw5nf2dhqqdwzyh2x5kdkrq7f3qn140gw6gmspcai9kplhk24w"; sha256 = "09q0xh9iz0crik6xpln9lijirf62aljxa1jrds1i1zgflyfidd0z";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View File

@ -1,20 +1,11 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt
index d869979..185144d 100644 index 8d20dbf..63fe7ba 100644
--- a/CMakeLists.txt --- a/CMakeLists.txt
+++ b/CMakeLists.txt +++ b/CMakeLists.txt
@@ -143,13 +143,13 @@ INSTALL(TARGETS @@ -213,5 +213,4 @@ INSTALL(TARGETS
module-bluez5-device module-bluez5-device
module-bluetooth-discover module-bluetooth-discover
module-bluetooth-policy module-bluetooth-policy
- LIBRARY DESTINATION ${PulseAudio_modlibexecdir}) - LIBRARY DESTINATION ${PulseAudio_modlibexecdir})
-
+ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pulse-${PulseAudio_VERSION}/modules/) + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pulse-${PulseAudio_VERSION}/modules/)
if(NOT ${HAVE_SYSTEM_LDAC})
INSTALL(TARGETS
ldacBT_enc
ldacBT_abr
- LIBRARY DESTINATION ${PulseAudio_modlibexecdir})
+ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pulse-${PulseAudio_VERSION}/modules/)
endif()

View File

@ -5,11 +5,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "qtractor"; pname = "qtractor";
version = "0.9.4"; version = "0.9.5";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz"; url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
sha256 = "05xrzr48b19mghbpbzjqw5fy6pl9140bm5m929lrsi4rq5hp3xgg"; sha256 = "1zsikhqj5xzhw2x3b6pqlmcwz3hxx07lbbif8v3m3j41snzjic22";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -40,13 +40,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "radiotray-ng-${version}"; name = "radiotray-ng-${version}";
version = "0.2.4"; version = "0.2.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ebruck"; owner = "ebruck";
repo = "radiotray-ng"; repo = "radiotray-ng";
rev = "v${version}"; rev = "v${version}";
sha256 = "1jk80fv8ivwdx7waivls0mczn0rx4wv0fy7a28k77m88i5gkfgyw"; sha256 = "1crvpn1mgrv7bd2k683mpgs59785mkrjvmp1f14iyq4qrr0f9zzi";
}; };
nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook makeWrapper ]; nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook makeWrapper ];
@ -61,6 +61,8 @@ stdenv.mkDerivation rec {
] ++ gstInputs ] ++ gstInputs
++ pythonInputs; ++ pythonInputs;
patches = [ ./no-dl-googletest.patch ];
postPatch = '' postPatch = ''
for x in debian/CMakeLists.txt include/radiotray-ng/common.hpp data/*.desktop; do for x in debian/CMakeLists.txt include/radiotray-ng/common.hpp data/*.desktop; do
substituteInPlace $x --replace /usr $out substituteInPlace $x --replace /usr $out
@ -80,8 +82,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
checkInputs = [ gtest ]; checkInputs = [ gtest ];
# doCheck = stdenv.hostPlatform == stdenv.buildPlatform; doCheck = !stdenv.isAarch64; # single failure that I can't explain
doCheck = false; # fails to pick up supplied gtest, tries to download it instead
preFixup = '' preFixup = ''
gappsWrapperArgs+=(--suffix PATH : ${stdenv.lib.makeBinPath [ dbus ]}) gappsWrapperArgs+=(--suffix PATH : ${stdenv.lib.makeBinPath [ dbus ]})

View File

@ -0,0 +1,55 @@
From 2ce91cd2244e61d54e0c0a3b26851912240b0667 Mon Sep 17 00:00:00 2001
From: Will Dietz <w@wdtz.org>
Date: Sat, 16 Mar 2019 11:40:00 -0500
Subject: [PATCH] don't download googletest
---
CMakeLists.txt | 18 ------------------
tests/CMakeLists.txt | 1 -
2 files changed, 19 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc1b9de..301c266 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -70,25 +70,7 @@ endif()
# build tests? Then we need googletest...
if (BUILD_TESTS)
- include(ExternalProject)
-
- ExternalProject_Add(googletest
- PREFIX "${CMAKE_CURRENT_BINARY_DIR}/googletest"
- URL https://github.com/google/googletest/archive/release-1.8.1.tar.gz
- URL_HASH SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
- TIMEOUT 30
- DOWNLOAD_NO_PROGRESS true
- INSTALL_COMMAND "")
-
- ExternalProject_Get_Property(googletest SOURCE_DIR)
- include_directories(${SOURCE_DIR}/googlemock/include ${SOURCE_DIR}/googletest/include)
- ExternalProject_Get_Property(googletest BINARY_DIR)
- link_directories(${BINARY_DIR}/googlemock ${BINARY_DIR}/googlemock/gtest)
set(GMOCK_BOTH_LIBRARIES gmock_main gmock gtest)
- set_property(DIRECTORY PROPERTY CLEAN_NO_CUSTOM "${CMAKE_CURRENT_BINARY_DIR}/googletest")
- unset(SOURCE_DIR)
- unset(BINARY_DIR)
-
enable_testing()
add_subdirectory(tests)
add_subdirectory(tests/runners/)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 859c048..58ab5c2 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -2,7 +2,6 @@ include(GoogleTest)
function(add_gmock_test target)
add_executable(${target} ${ARGN})
- add_dependencies(${target} googletest)
target_link_libraries(${target} config playlist bookmarks event_bus ${GMOCK_BOTH_LIBRARIES} ${XDG_BASEDIR_LIBRARIES} ${Boost_LIBRARIES} ${CURL_LIBRARIES} ${JSONCPP_LIBRARIES} pthread)
target_include_directories(${target} PRIVATE ${JSONCPP_INCLUDE_DIRS})
gtest_discover_tests(${target})
--
2.21.GIT

View File

@ -1,12 +1,15 @@
{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype { fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
, glib, pango, cairo, atk, gdk_pixbuf, gtk2, cups, nspr, nss, libpng , glib, pango, cairo, atk, gdk_pixbuf, gtk2, cups, nspr, nss, libpng
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg, curl, zlib, gnome3 , libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3
, at-spi2-atk , at-spi2-atk
}: }:
let let
# TO UPDATE: just execute the ./update.sh script (won't do anything if there is no update) # TO UPDATE: just execute the ./update.sh script (won't do anything if there is no update)
# "rev" decides what is actually being downloaded # "rev" decides what is actually being downloaded
# If an update breaks things, one of those might have valuable info:
# https://aur.archlinux.org/packages/spotify/
# https://community.spotify.com/t5/Desktop-Linux
version = "1.0.96.181.gf6bc1b6b-12"; version = "1.0.96.181.gf6bc1b6b-12";
# To get the latest stable revision: # To get the latest stable revision:
# curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated' # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
@ -26,7 +29,7 @@ let
curl curl
dbus dbus
expat expat
ffmpeg ffmpeg_3
fontconfig fontconfig
freetype freetype
gdk_pixbuf gdk_pixbuf
@ -118,8 +121,8 @@ stdenv.mkDerivation {
ln -s ${nspr.out}/lib/libnspr4.so $libdir/libnspr4.so ln -s ${nspr.out}/lib/libnspr4.so $libdir/libnspr4.so
ln -s ${nspr.out}/lib/libplc4.so $libdir/libplc4.so ln -s ${nspr.out}/lib/libplc4.so $libdir/libplc4.so
ln -s ${ffmpeg.out}/lib/libavcodec.so.56 $libdir/libavcodec-ffmpeg.so.56 ln -s ${ffmpeg_3.out}/lib/libavcodec.so* $libdir
ln -s ${ffmpeg.out}/lib/libavformat.so.56 $libdir/libavformat-ffmpeg.so.56 ln -s ${ffmpeg_3.out}/lib/libavformat.so* $libdir
rpath="$out/share/spotify:$libdir" rpath="$out/share/spotify:$libdir"
@ -154,7 +157,7 @@ stdenv.mkDerivation {
homepage = https://www.spotify.com/; homepage = https://www.spotify.com/;
description = "Play music from the Spotify music service"; description = "Play music from the Spotify music service";
license = licenses.unfree; license = licenses.unfree;
maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri ]; maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
} }

View File

@ -44,7 +44,7 @@ python2.pkgs.buildPythonApplication rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/whipper-team/whipper; homepage = https://github.com/whipper-team/whipper;
description = "A CD ripper aiming for accuracy over speed"; description = "A CD ripper aiming for accuracy over speed";
maintainers = with maintainers; [ rycee jgeerds ]; maintainers = with maintainers; [ rycee ];
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
platforms = platforms.linux; platforms = platforms.linux;
}; };

View File

@ -3,12 +3,12 @@
, libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }: , libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20190105"; version = "20190206";
name = "x42-plugins-${version}"; name = "x42-plugins-${version}";
src = fetchurl { src = fetchurl {
url = "https://gareus.org/misc/x42-plugins/${name}.tar.xz"; url = "https://gareus.org/misc/x42-plugins/${name}.tar.xz";
sha256 = "1bb7k3ly4qa05zgkbpm7d3x9cjch1fklgh279m6hp0ac3hhncdxp"; sha256 = "0rsp8lm8zr20l410whr98d61401rkphgpl8llbn5p2wsiw0q9aqd";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, pam, pkgconfig, autoconf, automake, libtool, libxcb { stdenv, fetchFromGitHub, pam, pkgconfig, autoconf, automake, libtool, libxcb
, glib, libXdmcp, itstool, intltool, libxklavier, libgcrypt, audit, busybox , glib, libXdmcp, itstool, intltool, libxklavier, libgcrypt, audit, busybox
, polkit, accountsservice, gtk-doc, gnome3, gobject-introspection, vala , polkit, accountsservice, gtk-doc, gnome3, gobject-introspection, vala, fetchpatch
, withQt4 ? false, qt4 , withQt4 ? false, qt4
, withQt5 ? false, qtbase , withQt5 ? false, qtbase
}: }:
@ -11,8 +11,6 @@ stdenv.mkDerivation rec {
pname = "lightdm"; pname = "lightdm";
version = "1.28.0"; version = "1.28.0";
name = "${pname}-${version}";
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
src = fetchFromGitHub { src = fetchFromGitHub {
@ -40,16 +38,22 @@ stdenv.mkDerivation rec {
accountsservice accountsservice
audit audit
glib glib
libXdmcp
libgcrypt libgcrypt
libxcb libxcb
libXdmcp
libxklavier libxklavier
pam pam
polkit polkit
] ++ optional withQt4 qt4 ] ++ optional withQt4 qt4
++ optional withQt5 qtbase; ++ optional withQt5 qtbase;
patches = [ ./run-dir.patch ]; patches = [
# Adds option to disable writing dmrc files
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/lightdm/raw/4cf0d2bed8d1c68970b0322ccd5dbbbb7a0b12bc/f/lightdm-1.25.1-disable_dmrc.patch";
sha256 = "06f7iabagrsiws2l75sx2jyljknr9js7ydn151p3qfi104d1541n";
})
];
preConfigure = "NOCONFIGURE=1 ./autogen.sh"; preConfigure = "NOCONFIGURE=1 ./autogen.sh";
@ -58,11 +62,12 @@ stdenv.mkDerivation rec {
"--sysconfdir=/etc" "--sysconfdir=/etc"
"--disable-tests" "--disable-tests"
"--disable-static" "--disable-static"
"--disable-dmrc"
] ++ optional withQt4 "--enable-liblightdm-qt" ] ++ optional withQt4 "--enable-liblightdm-qt"
++ optional withQt5 "--enable-liblightdm-qt5"; ++ optional withQt5 "--enable-liblightdm-qt5";
installFlags = [ installFlags = [
"sysconfdir=\${out}/etc" "sysconfdir=${placeholder ''out''}/etc"
"localstatedir=\${TMPDIR}" "localstatedir=\${TMPDIR}"
]; ];
@ -76,7 +81,7 @@ stdenv.mkDerivation rec {
meta = { meta = {
homepage = https://github.com/CanonicalLtd/lightdm; homepage = https://github.com/CanonicalLtd/lightdm;
description = "A cross-desktop display manager."; description = "A cross-desktop display manager";
platforms = platforms.linux; platforms = platforms.linux;
license = licenses.gpl3; license = licenses.gpl3;
maintainers = with maintainers; [ ocharles worldofpeace ]; maintainers = with maintainers; [ ocharles worldofpeace ];

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, lightdm, pkgconfig, intltool { stdenv, fetchurl, lightdm, pkgconfig, intltool
, hicolor-icon-theme, makeWrapper , hicolor-icon-theme, makeWrapper
, useGTK2 ? false, gtk2, gtk3 # gtk3 seems better supported , useGTK2 ? false, gtk2, gtk3 # gtk3 seems better supported
, exo , exo, at-spi2-core
}: }:
#ToDo: bad icons with gtk2; #ToDo: bad icons with gtk2;
@ -26,13 +26,18 @@ stdenv.mkDerivation rec {
configureFlags = [ configureFlags = [
"--localstatedir=/var" "--localstatedir=/var"
"--sysconfdir=/etc" "--sysconfdir=/etc"
"--disable-indicator-services-command"
] ++ stdenv.lib.optional useGTK2 "--with-gtk2"; ] ++ stdenv.lib.optional useGTK2 "--with-gtk2";
preConfigure = ''
configureFlagsArray+=( --enable-at-spi-command="${at-spi2-core}/libexec/at-spi-bus-launcher --launch-immediately" )
'';
NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ]; NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ];
installFlags = [ installFlags = [
"localstatedir=\${TMPDIR}" "localstatedir=\${TMPDIR}"
"sysconfdir=\${out}/etc" "sysconfdir=${placeholder "out"}/etc"
]; ];
postInstall = '' postInstall = ''

View File

@ -1,13 +0,0 @@
diff --git a/data/lightdm.conf b/data/lightdm.conf
index 16b80f7..b3af435 100644
--- a/data/lightdm.conf
+++ b/data/lightdm.conf
@@ -28,7 +28,7 @@
#guest-account-script=guest-account
#logind-check-graphical=false
#log-directory=/var/log/lightdm
-#run-directory=/var/run/lightdm
+run-directory=/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions

View File

@ -13,14 +13,14 @@ let
sha256Hash = "0smh3d3v8n0isxg7fkls20622gp52f58i2b6wa4a0g8wnvmd6mw2"; sha256Hash = "0smh3d3v8n0isxg7fkls20622gp52f58i2b6wa4a0g8wnvmd6mw2";
}; };
betaVersion = { betaVersion = {
version = "3.4.0.15"; # "Android Studio 3.4 RC 1" version = "3.4.0.16"; # "Android Studio 3.4 RC 2"
build = "183.5341121"; build = "183.5370308";
sha256Hash = "0s7wadnzbrd031ls43b5nbh1nx0paj74bxy2yiczr4qb9n562zzy"; sha256Hash = "0d7d6n7n1zzhxpdykbwwbrw139mqxkp20d4l0570pk7975p1s2q9";
}; };
latestVersion = { # canary & dev latestVersion = { # canary & dev
version = "3.5.0.5"; # "Android Studio 3.5 Canary 6" version = "3.5.0.6"; # "Android Studio 3.5 Canary 7"
build = "183.5326993"; build = "183.5346365";
sha256Hash = "06d43qw0p6zpy6vmriiihql5vgc6c4darplc2148y616hx0whrql"; sha256Hash = "0dfkhzsxabrv8cwgyv3gicpglgpccmi1ig5shlhp6a006awgfyj0";
}; };
in rec { in rec {
# Old alias (TODO @primeos: Remove after 19.03 is branched off): # Old alias (TODO @primeos: Remove after 19.03 is branched off):

View File

@ -49,6 +49,6 @@ stdenv.mkDerivation rec {
homepage = https://github.com/cask/cask; homepage = https://github.com/cask/cask;
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
platforms = platforms.all; platforms = platforms.all;
maintainers = [ maintainers.jgeerds ]; maintainers = [ ];
}; };
} }

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "focuswriter-${version}"; name = "focuswriter-${version}";
version = "1.7.1"; version = "1.7.2";
src = fetchurl { src = fetchurl {
url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2"; url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2";
sha256 = "0ny0bri9yp6wcsj9s8vd0j4mzx44yw57axjx5piv44q2jgsgz401"; sha256 = "1qsfcrscm3s0h7wcl6qn8zi0irr70zdacjxsdk73kpk1dhl2j85k";
}; };
nativeBuildInputs = [ pkgconfig qmake qttools ]; nativeBuildInputs = [ pkgconfig qmake qttools ];

View File

@ -175,7 +175,7 @@ let
providing you almost everything you need for your comfortable providing you almost everything you need for your comfortable
and productive development! and productive development!
''; '';
maintainers = with maintainers; [ jgeerds ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
}).override { }).override {

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgconfig, libbsd, ncurses }: { stdenv, fetchurl, pkgconfig, libbsd, ncurses, buildPackages }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "mg-${version}"; name = "mg-${version}";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
makeFlags = [ "PKG_CONFIG=${pkgconfig}/bin/pkg-config" ]; makeFlags = [ "PKG_CONFIG=${buildPackages.pkgconfig}/bin/pkg-config" ];
installPhase = '' installPhase = ''
install -m 555 -Dt $out/bin mg install -m 555 -Dt $out/bin mg

View File

@ -49,7 +49,6 @@ in stdenv.mkDerivation rec {
description = "A small, user-friendly console text editor"; description = "A small, user-friendly console text editor";
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
maintainers = with maintainers; [ maintainers = with maintainers; [
jgeerds
joachifm joachifm
]; ];
platforms = platforms.all; platforms = platforms.all;

View File

@ -1,8 +1,9 @@
{ stdenv, fetchurl, makeWrapper, makeDesktopItem { stdenv, fetchurl, makeWrapper, makeDesktopItem, which, unzip, libicns, imagemagick
, jdk, perl, python, unzip, which , jdk, perl, python
}: }:
let let
version = "10.0";
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
name = "netbeans"; name = "netbeans";
exec = "netbeans"; exec = "netbeans";
@ -10,13 +11,14 @@ let
desktopName = "Netbeans IDE"; desktopName = "Netbeans IDE";
genericName = "Integrated Development Environment"; genericName = "Integrated Development Environment";
categories = "Application;Development;"; categories = "Application;Development;";
icon = "netbeans";
}; };
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "netbeans-8.2"; name = "netbeans-${version}";
src = fetchurl { src = fetchurl {
url = https://download.netbeans.org/netbeans/8.2/final/zip/netbeans-8.2-201609300101.zip; url = "mirror://apache/incubator/netbeans/incubating-netbeans/incubating-${version}/incubating-netbeans-${version}-bin.zip";
sha256 = "0j092qw7aqfc9vpnvr3ix1ii94p4ik6frcnw708iyv4s9crqi65d"; sha512 = "ba83575f42c1d5515e2a5336a621bc2b4087b2e0bcacb6edb76f376f8272555609bdd4eefde8beae8ffc6c1a7db2fb721b844638ce27933c3dd78f71cbb41ad8";
}; };
buildCommand = '' buildCommand = ''
@ -26,23 +28,38 @@ stdenv.mkDerivation {
# Copy to installation directory and create a wrapper capable of starting # Copy to installation directory and create a wrapper capable of starting
# it. # it.
mkdir -p $out/bin mkdir -pv $out/bin
cp -a netbeans $out cp -a netbeans $out
makeWrapper $out/netbeans/bin/netbeans $out/bin/netbeans \ makeWrapper $out/netbeans/bin/netbeans $out/bin/netbeans \
--prefix PATH : ${stdenv.lib.makeBinPath [ jdk which ]} \ --prefix PATH : ${stdenv.lib.makeBinPath [ jdk which ]} \
--prefix JAVA_HOME : ${jdk.home} \ --prefix JAVA_HOME : ${jdk.home} \
--add-flags "--jdkhome ${jdk.home}" --add-flags "--jdkhome ${jdk.home}"
# Extract pngs from the Apple icon image and create
# the missing ones from the 1024x1024 image.
icns2png --extract $out/netbeans/nb/netbeans.icns
for size in 16 24 32 48 64 128 256 512 1024; do
mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps
if [ -e netbeans_"$size"x"$size"x32.png ]
then
mv netbeans_"$size"x"$size"x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/netbeans.png
else
convert -resize "$size"x"$size" netbeans_1024x1024x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/netbeans.png
fi
done;
# Create desktop item, so we can pick it from the KDE/GNOME menu # Create desktop item, so we can pick it from the KDE/GNOME menu
mkdir -p $out/share/applications mkdir -pv $out/share/applications
cp ${desktopItem}/share/applications/* $out/share/applications ln -s ${desktopItem}/share/applications/* $out/share/applications
''; '';
buildInputs = [ makeWrapper perl python unzip ]; buildInputs = [ makeWrapper perl python unzip libicns imagemagick ];
meta = { meta = {
description = "An integrated development environment for Java, C, C++ and PHP"; description = "An integrated development environment for Java, C, C++ and PHP";
maintainers = [ stdenv.lib.maintainers.sander ]; homepage = "https://netbeans.org/";
license = stdenv.lib.licenses.asl20;
maintainers = with stdenv.lib.maintainers; [ sander rszibele ];
platforms = stdenv.lib.platforms.unix; platforms = stdenv.lib.platforms.unix;
}; };
} }

View File

@ -4,13 +4,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "quilter"; pname = "quilter";
version = "1.7.5"; version = "1.8.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lainsce"; owner = "lainsce";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0czf6rm908pz6zwiaq2phci923q8xa8x7q7kvdk6s3km4i1rrgkn"; sha256 = "0i8rvvc5g74bgfjgsmmgpj42xmhjaz14jjzl9s5nzwpy1fn7vv0p";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -12,8 +12,8 @@ in
} {}; } {};
sublime3 = common { sublime3 = common {
buildVersion = "3176"; buildVersion = "3200";
x32sha256 = "08asz13888d4ddsz81cfk7k3319dabzz1kgbnshw0756pvyrvr23"; x32sha256 = "01krmbji8z62x4kl1hf3c1nfj4c4n4xmg1df62ljiwhkcfm74izr";
x64sha256 = "0cppkh5jx2g8f6jyy1bs81fpb90l0kn5m7y3skackpjdxhd7rwbl"; x64sha256 = "1gagc50fqb0d2bszi8m5spzb64shkaylvrwl6fxah55xcmy2kmdr";
} {}; } {};
} }

View File

@ -1,23 +1,23 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig { stdenv, lib, fetchFromGitHub, cmake, pkgconfig
, qt5, libsForQt5, hunspell , qt5, libsForQt5, hunspell
, withLua ? true, lua , withLua ? true, lua
, withPython ? true, python }: , withPython ? true, python3 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "texworks-${version}"; name = "texworks-${version}";
version = "0.6.2"; version = "0.6.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "TeXworks"; owner = "TeXworks";
repo = "texworks"; repo = "texworks";
rev = "release-${version}"; rev = "release-${version}";
sha256 = "0kj4pq5h4vs2wwg6cazxjlv83x6cwdfsa76winfkdddaqzpdklsj"; sha256 = "1ljfl784z7dmh6f1qacqhc6qhcaqdzw033yswbvpvkkck0lsk2mr";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [ qt5.qtscript libsForQt5.poppler hunspell lua python ] buildInputs = [ qt5.qtscript libsForQt5.poppler hunspell ]
++ lib.optional withLua lua ++ lib.optional withLua lua
++ lib.optional withPython python; ++ lib.optional withPython python3;
cmakeFlags = lib.optional withLua "-DWITH_LUA=ON" cmakeFlags = lib.optional withLua "-DWITH_LUA=ON"
++ lib.optional withPython "-DWITH_PYTHON=ON"; ++ lib.optional withPython "-DWITH_PYTHON=ON";

View File

@ -2,14 +2,14 @@
, python, qtbase, qttools }: , python, qtbase, qttools }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "tiled-${version}"; pname = "tiled";
version = "1.2.2"; version = "1.2.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bjorn"; owner = "bjorn";
repo = "tiled"; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "1yqw10izqhsnqwgxvws2n4ymcwawbh86srv7qmjwbsay752pfgfh"; sha256 = "1zsfhw539zwyf5qfnirzkkgy5bmrrs2cry4gimrhpky9fjlaa9h8";
}; };
nativeBuildInputs = [ pkgconfig qmake ]; nativeBuildInputs = [ pkgconfig qmake ];

View File

@ -18,16 +18,16 @@ let
}.${system}; }.${system};
sha256 = { sha256 = {
"i686-linux" = "0iqsbny25946fyvrm8qwgbd1xmwb8psg2n2c4wdk8x52259pxfvq"; "i686-linux" = "1qll0hyqyn3vb0v35h9y8rk4l3r6zzc5bkra6pb23bnr4bna4y80";
"x86_64-linux" = "0v1gbaqlaismrykl8igks5dl9bh5xh56v5aw8mffg8wxdr0alrvv"; "x86_64-linux" = "1sfvv4g7kmvabqxasil41gasr7hsmgf8wwc4dl1940pb7x19fllq";
"x86_64-darwin" = "0awq1jgqbpirrhs09x7hn4m96idb4lazm053nf5jf5yrx8pq1l9i"; "x86_64-darwin" = "0gjdppr59pyb2wawvf7yyk7357a5naxga74zf9gc7d9s1fz78hls";
}.${system}; }.${system};
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz"; archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "vscode-${version}"; name = "vscode-${version}";
version = "1.32.1"; version = "1.32.3";
src = fetchurl { src = fetchurl {
name = "VSCode_${version}_${plat}.${archive_fmt}"; name = "VSCode_${version}_${plat}.${archive_fmt}";

View File

@ -1,94 +1,27 @@
{ stdenv, fetchurl, fetchpatch, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl { stdenv, lib, makeWrapper, symlinkJoin
, qwt, fcgi, python2Packages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper , qgis-unwrapped, extraPythonPackages ? (ps: [ ])
, qjson, qca2, txt2tags, openssl, darwin, pkgconfig
, withGrass ? true, grass, saga, IOKit, ApplicationServices
}: }:
with lib;
symlinkJoin rec {
inherit (qgis-unwrapped) version;
name = "qgis-${version}";
stdenv.mkDerivation rec { paths = [ qgis-unwrapped ];
name = "qgis-2.18.28";
buildInputs = [ gdal qt4 flex openssl bison proj geos xlibsWrapper sqlite gsl qwt qscintilla nativeBuildInputs = [ makeWrapper qgis-unwrapped.python3Packages.wrapPython ];
fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags pkgconfig
saga ]
++
(stdenv.lib.optionals stdenv.isDarwin [IOKit ApplicationServices])
++
(stdenv.lib.optional withGrass grass) ++
(stdenv.lib.optional (stdenv.isDarwin && withGrass) darwin.apple_sdk.libs.utmp) ++
(with python2Packages; [ jinja2 numpy psycopg2 pygments requests python2Packages.qscintilla sip ]);
nativeBuildInputs = [ cmake makeWrapper pkgconfig ]; # extend to add to the python environment of QGIS without rebuilding QGIS application.
pythonInputs = qgis-unwrapped.pythonBuildInputs ++ (extraPythonPackages qgis-unwrapped.python3Packages);
# `make -f src/providers/wms/CMakeFiles/wmsprovider_a.dir/build.make src/providers/wms/CMakeFiles/wmsprovider_a.dir/qgswmssourceselect.cpp.o`: postBuild = ''
# fatal error: ui_qgsdelimitedtextsourceselectbase.h: No such file or directory # unpackPhase
enableParallelBuilding = false;
preConfigure = '' buildPythonPath "$pythonInputs"
NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags libspatialindex)"
wrapProgram $out/bin/qgis \
--prefix PATH : $program_PATH \
--set PYTHONPATH $program_PYTHONPATH
''; '';
# To handle the lack of 'local' RPATH; required, as they call one of meta = qgis-unwrapped.meta;
# their built binaries requiring their libs, in the build process.
preBuild = ''
export LD_LIBRARY_PATH=`pwd`/output/lib:${stdenv.lib.makeLibraryPath [ openssl ]}:$LD_LIBRARY_PATH
'';
src = fetchurl {
url = "https://qgis.org/downloads/${name}.tar.bz2";
sha256 = "18pijqls1isd2bpg0mkrw07jqvdfaiwwb9mvz7p2xrgqcjx7dxsq";
};
patches = [
# already merged upstream in QGIS-3.*, but needs to be backported to QGIS-2
(fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/qgis/QGIS/pull/7263.patch";
name = "Ensure_qgis.db_is_writable_when_copied_from_RO_source";
sha256 = "19wr2kz0x8x6p2n0ylzd4lqrdmbkxyxr0zpwf2vl9hdp92rdjxbv";
})
];
# CMAKE_FIND_FRAMEWORK=never stops the installer choosing system
# installed frameworks
# QGIS_MACAPP_BUNDLE=0 stops the installer copying the Qt binaries into the
# installation which causes havoc
# Building RelWithDebInfo allows QGIS_DEBUG to print debugging information
cmakeFlags = stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}"
++ stdenv.lib.optional stdenv.isDarwin
(["-DCMAKE_FIND_FRAMEWORK=never"]
++ ["-DQGIS_MACAPP_BUNDLE=0"]);
# ++ ["-DCMAKE_BUILD_TYPE=RelWithDebInfo"];
postInstall =
(stdenv.lib.optionalString stdenv.isLinux ''
wrapProgram $out/bin/qgis \
--set PYTHONPATH $PYTHONPATH \
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ openssl ]}
'') +
(stdenv.lib.optionalString stdenv.isDarwin ''
# Necessary for QGIS to find the correct default GRASS path
# Plugins look for gdal tools like deminfo on the PATH
${stdenv.lib.optionalString withGrass "ln -sf ${grass} $out/QGIS.app/Contents/MacOS/grass"}
# Necessary for QGIS to find the right SAGA installation
ln -sf ${saga}/bin/saga_cmd $out/QGIS.app/Contents/MacOS/bin/saga_cmd
for file in $(find $out -type f -name "QGIS"); do
wrapProgram "$file" \
--prefix DYLD_LIBRARY_PATH : "${qwt}/lib" \
--prefix DYLD_LIBRARY_PATH : "${qscintilla}/lib" \
--prefix PATH : "${gdal}/bin" \
${stdenv.lib.optionalString withGrass "--prefix PATH : ${grass}/bin"} \
--set PYTHONPATH $PYTHONPATH
done
mkdir -p $out/bin
ln -s $out/QGIS.app/Contents/MacOS/QGIS $out/bin/qgis
'');
meta = {
description = "User friendly Open Source Geographic Information System";
homepage = http://www.qgis.org;
license = stdenv.lib.licenses.gpl2Plus;
platforms = with stdenv.lib.platforms; unix;
maintainers = with stdenv.lib.maintainers; [mpickering];
};
} }

View File

@ -0,0 +1,54 @@
{ stdenv, lib, fetchurl, cmake, ninja, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl
, qwt, fcgi, python3Packages, libspatialindex, libspatialite, postgresql
, txt2tags, openssl, libzip, hdf5, netcdf
, qtbase, qtwebkit, qtsensors, qca-qt5, qtkeychain, qscintilla, qtserialport, qtxmlpatterns
, withGrass ? true, grass
}:
with lib;
let
pythonBuildInputs = with python3Packages;
[ qscintilla-qt5 gdal jinja2 numpy psycopg2
chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
in stdenv.mkDerivation rec {
version = "3.4.5";
name = "qgis-unwrapped-${version}";
src = fetchurl {
url = "http://qgis.org/downloads/qgis-${version}.tar.bz2";
sha256 = "0myw1jgz8v8wncmrjsszn9ixylx84hafn0281c4hqhz623n3lxgx";
};
passthru = {
inherit pythonBuildInputs;
inherit python3Packages;
};
buildInputs = [ openssl proj geos xlibsWrapper sqlite gsl qwt
fcgi libspatialindex libspatialite postgresql txt2tags libzip hdf5 netcdf
qtbase qtwebkit qtsensors qca-qt5 qtkeychain qscintilla qtserialport qtxmlpatterns] ++
(stdenv.lib.optional withGrass grass) ++ pythonBuildInputs;
nativeBuildInputs = [ cmake flex bison ninja ];
# Force this pyqt_sip_dir variable to point to the sip dir in PyQt5
#
# TODO: Correct PyQt5 to provide the expected directory and fix
# build to use PYQT5_SIP_DIR consistently.
postPatch = ''
substituteInPlace cmake/FindPyQt5.py \
--replace 'pyqtcfg.pyqt_sip_dir' '"${python3Packages.pyqt5}/share/sip/PyQt5"'
'';
cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF"
"-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5"
"-DQSCI_SIP_DIR=${python3Packages.qscintilla-qt5}/share/sip/PyQt5" ] ++
stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";
meta = {
description = "A Free and Open Source Geographic Information System";
homepage = http://www.qgis.org;
license = stdenv.lib.licenses.gpl2Plus;
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [ lsix ];
};
}

View File

@ -100,7 +100,6 @@ stdenv.mkDerivation rec {
description = "A software suite to create, edit, compose, or convert bitmap images"; description = "A software suite to create, edit, compose, or convert bitmap images";
platforms = platforms.linux ++ platforms.darwin; platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ the-kenny ]; maintainers = with maintainers; [ the-kenny ];
broken = ghostscript != null; # https://github.com/NixOS/nixpkgs/issues/55118
license = licenses.asl20; license = licenses.asl20;
}; };
} }

View File

@ -1,15 +1,15 @@
{ stdenv, makeDesktopItem, fetchurl, unzip { stdenv, makeDesktopItem, fetchurl, unzip
, gdk_pixbuf, glib, gtk3, atk, at-spi2-atk, pango, cairo, freetype, fontconfig, dbus, nss, nspr, alsaLib, cups, expat, udev, gnome3 , gdk_pixbuf, glib, gtk3, atk, at-spi2-atk, pango, cairo, freetype, fontconfig, dbus, nss, nspr, alsaLib, cups, expat, udev, gnome3
, xorg, mozjpeg, makeWrapper, gsettings-desktop-schemas , xorg, mozjpeg, makeWrapper, wrapGAppsHook, hicolor-icon-theme, libuuid
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "avocode-${version}"; name = "avocode-${version}";
version = "3.6.2"; version = "3.6.12";
src = fetchurl { src = fetchurl {
url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip"; url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip";
sha256 = "1slxxr3j0djqdnbk645sriwl99jp9imndyxiwd8aqggmmlp145a2"; sha256 = "1qsxwqnkqfp4b9sgmhlv6wjl4mirhnx4bjj2vaq8iyz94pz637c8";
}; };
libPath = stdenv.lib.makeLibraryPath (with xorg; [ libPath = stdenv.lib.makeLibraryPath (with xorg; [
@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
libXrender libXrender
libXtst libXtst
libXScrnSaver libXScrnSaver
libuuid
]); ]);
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
@ -54,8 +55,8 @@ stdenv.mkDerivation rec {
comment = "The bridge between designers and developers"; comment = "The bridge between designers and developers";
}; };
nativeBuildInputs = [makeWrapper]; nativeBuildInputs = [makeWrapper wrapGAppsHook];
buildInputs = [ unzip gtk3 gsettings-desktop-schemas]; buildInputs = [ unzip gtk3 gnome3.adwaita-icon-theme hicolor-icon-theme ];
# src is producing multiple folder on unzip so we must # src is producing multiple folder on unzip so we must
# override unpackCmd to extract it into newly created folder # override unpackCmd to extract it into newly created folder
@ -84,11 +85,7 @@ stdenv.mkDerivation rec {
postFixup = '' postFixup = ''
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/avocode patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/avocode
for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do
patchelf --set-rpath ${libPath}:$out/ $file patchelf --set-rpath ${libPath}:$out/ $file || true
done
for file in $out/bin/*; do
wrapProgram $file \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
done done
''; '';

View File

@ -7,12 +7,12 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.6.0"; version = "2.6.1";
name = "darktable-${version}"; name = "darktable-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz"; url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz";
sha256 = "0y04cx0a0rwdclmn16f5y0z2vnm7yxly291gzjgdhcn59a77sga8"; sha256 = "09ihbj0602spgc5lfbskf9am38n03gam2r8v3kj4dyfgxqr37ib3";
}; };
nativeBuildInputs = [ cmake ninja llvm pkgconfig intltool perl desktop-file-utils wrapGAppsHook ]; nativeBuildInputs = [ cmake ninja llvm pkgconfig intltool perl desktop-file-utils wrapGAppsHook ];

View File

@ -11,25 +11,34 @@
, libmicrohttpd , libmicrohttpd
, giflib , giflib
, miniupnpc , miniupnpc
, extra-cmake-modules
, libvpx
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "drawpile-${version}"; name = "drawpile-${version}";
version = "2.0.11"; version = "2.1.3";
src = fetchurl { src = fetchurl {
url = "https://drawpile.net/files/src/drawpile-${version}.tar.gz"; url = "https://drawpile.net/files/src/drawpile-${version}.tar.gz";
sha256 = "0h018rxhc0lwpqwmlihalz634nd0xaafk4p2b782djjd87irnjpk"; sha256 = "0fngj5hfinj66xpij2h3ag79mgmqcfrjpwynxdbjr5brch25ldwj";
}; };
nativeBuildInputs = [
extra-cmake-modules
];
buildInputs = [ buildInputs = [
# common deps:
cmake cmake
qtbase qtsvg qtmultimedia qttools qtbase qtsvg qtmultimedia qttools
karchive karchive
# optional deps: # optional deps:
# server-specific:
libsodium # ext-auth support libsodium # ext-auth support
libmicrohttpd # HTTP admin api libmicrohttpd # HTTP admin api
# client-specific:
giflib # gif animation export support giflib # gif animation export support
miniupnpc # automatic port forwarding miniupnpc # automatic port forwarding
kdnssd # local server discovery with Zeroconf kdnssd # local server discovery with Zeroconf
libvpx # WebM video export
]; ];
configurePhase = "cmake -DCMAKE_INSTALL_PREFIX=$out ."; configurePhase = "cmake -DCMAKE_INSTALL_PREFIX=$out .";

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "fondo"; pname = "fondo";
version = "1.2.1"; version = "1.2.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "calo001"; owner = "calo001";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0xczqkkq54gjay7wdl8mpil7klfrpvcw2a0n1brq7qrfhsmhc7pc"; sha256 = "0mh3s2726zf3va6nj7kj2nbmq5q65xrbnsllss3sqf8a838zqfn6";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, makeWrapper, pkgconfig, zlib, freetype, cairo, lua5, texlive, ghostscript { stdenv, fetchurl, makeWrapper, pkgconfig, zlib, freetype, cairo, lua5, texlive, ghostscript
, libjpeg, qtbase , libjpeg, libpng, qtbase
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "ipe-7.2.10"; name = "ipe-7.2.11";
src = fetchurl { src = fetchurl {
url = "https://dl.bintray.com/otfried/generic/ipe/7.2/${name}-src.tar.gz"; url = "https://dl.bintray.com/otfried/generic/ipe/7.2/${name}-src.tar.gz";
sha256 = "0gw45d0albrsa0pbc5g4w3fmmjfxrdbpzyc7723ncbhncdyda01h"; sha256 = "09d71fdpiz359mcnb57460w2mcfizvlnidd6g1k4c3v6rglwlbd2";
}; };
sourceRoot = "${name}/src"; sourceRoot = "${name}/src";
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
LUA_PACKAGE = "lua"; LUA_PACKAGE = "lua";
buildInputs = [ buildInputs = [
libjpeg zlib qtbase freetype cairo lua5 texlive ghostscript libjpeg libpng zlib qtbase freetype cairo lua5 texlive ghostscript
]; ];
nativeBuildInputs = [ makeWrapper pkgconfig ]; nativeBuildInputs = [ makeWrapper pkgconfig ];

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, pkgconfig, gtk2, imlib2, file, lcms2, libexif } : { stdenv, fetchurl, pkgconfig, gtk2, imlib2, file, lcms2, libexif } :
stdenv.mkDerivation (rec { stdenv.mkDerivation (rec {
version = "2.3.1"; version = "2.3.2";
name = "qiv-${version}"; name = "qiv-${version}";
src = fetchurl { src = fetchurl {
url = "https://spiegl.de/qiv/download/${name}.tgz"; url = "https://spiegl.de/qiv/download/${name}.tgz";
sha256 = "1rlf5h67vhj7n1y7jqkm9k115nfnzpwngj3kzqsi2lg676srclv7"; sha256 = "1mc0f2nnas4q0d7zc9r6g4z93i32xlx0p9hl4fn5zkyml24a1q28";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
@ -15,6 +15,7 @@ stdenv.mkDerivation (rec {
preBuild='' preBuild=''
substituteInPlace Makefile --replace /usr/local "$out" substituteInPlace Makefile --replace /usr/local "$out"
substituteInPlace Makefile --replace /man/ /share/man/ substituteInPlace Makefile --replace /man/ /share/man/
substituteInPlace Makefile --replace /share/share/ /share/
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,53 @@
{ stdenv, fetchurl, rpmextract }:
stdenv.mkDerivation rec {
name = "libsane-dsseries-${version}";
version = "1.0.5-1";
src = fetchurl {
url = "https://download.brother.com/welcome/dlf100974/${name}.x86_64.rpm";
sha256 = "1wfdbfbf51cc7njzikdg48kwpnpc0pg5s6p0s0y3z0q7y59x2wbq";
};
nativeBuildInputs = [ rpmextract ];
unpackCmd = ''
mkdir ${name} && pushd ${name}
rpmextract $curSrc
popd
'';
patchPhase = ''
substituteInPlace etc/udev/rules.d/50-Brother_DSScanner.rules \
--replace 'GROUP="users"' 'GROUP="scanner", ENV{libsane_matched}="yes"'
mkdir -p etc/sane.d/dll.d
echo "dsseries" > etc/sane.d/dll.d/dsseries.conf
'';
installPhase = ''
mkdir -p $out
cp -dr etc $out
cp -dr usr/lib64 $out/lib
'';
preFixup = ''
for f in `find $out/lib/sane/ -type f`; do
# Make it possible to find libstdc++.so.6
patchelf --set-rpath ${stdenv.cc.cc.lib}/lib:$out/lib/sane $f
# Horrible kludge: The driver hardcodes /usr/lib/sane/ as a dlopen path.
# We can directly modify the binary to force a relative lookup instead.
# The new path is NULL-padded to the same length as the original path.
sed -i "s|/usr/lib/sane/%s|%s\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|g" $f
done
'';
meta = {
description = "Brother DSSeries SANE backend driver";
homepage = http://www.brother.com;
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.unfree;
maintainers = with stdenv.lib.maintainers; [ callahad ];
};
}

View File

@ -108,6 +108,7 @@ let
kdf = callPackage ./kdf.nix {}; kdf = callPackage ./kdf.nix {};
kdialog = callPackage ./kdialog.nix {}; kdialog = callPackage ./kdialog.nix {};
keditbookmarks = callPackage ./keditbookmarks.nix {}; keditbookmarks = callPackage ./keditbookmarks.nix {};
kfind = callPackage ./kfind.nix {};
kget = callPackage ./kget.nix {}; kget = callPackage ./kget.nix {};
kgpg = callPackage ./kgpg.nix {}; kgpg = callPackage ./kgpg.nix {};
khelpcenter = callPackage ./khelpcenter.nix {}; khelpcenter = callPackage ./khelpcenter.nix {};

View File

@ -0,0 +1,17 @@
{
mkDerivation, lib,
extra-cmake-modules, kdoctools,
karchive, kcoreaddons, kfilemetadata, ktextwidgets, kwidgetsaddons, kio
}:
mkDerivation {
name = "kfind";
meta = {
license = with lib.licenses; [ gpl2 ];
maintainers = [ lib.maintainers.iblech ];
};
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
buildInputs = [
karchive kcoreaddons kfilemetadata ktextwidgets kwidgetsaddons kio
];
}

View File

@ -0,0 +1,32 @@
{ stdenv, fetchurl, pkgconfig, intltool
, libxml2, desktop-file-utils, wrapGAppsHook, evolution-data-server, gtkspell3, gpgme, libcryptui
, glib, gtk3, gtksourceview3, sqlite, cairo, atk, gcr, gnome3 }:
stdenv.mkDerivation rec {
pname = "almanah";
version = "0.11.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1g0fyykq8bs3x1xqc0l0bk9zazcrxja784m68myymv1zfqqnp9h0";
};
nativeBuildInputs = [ pkgconfig intltool libxml2 desktop-file-utils wrapGAppsHook ];
buildInputs = [ glib gtk3 gtksourceview3 sqlite cairo atk gcr gtkspell3 evolution-data-server gnome3.evolution gpgme libcryptui ];
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
versionPolicy = "none"; # it is quite odd
};
};
meta = with stdenv.lib; {
description = "Small GTK application to allow to keep a diary of your life";
homepage = https://wiki.gnome.org/Apps/Almanah_Diary;
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = gnome3.maintainers;
};
}

View File

@ -1,4 +1,4 @@
{ config, lib, stdenv, fetchurl { config, lib, stdenv, fetchurl, CoreAudio
, enableAlsa ? true, alsaLib ? null , enableAlsa ? true, alsaLib ? null
, enableLibao ? true, libao ? null , enableLibao ? true, libao ? null
, enableLame ? config.sox.enableLame or false, lame ? null , enableLame ? config.sox.enableLame or false, lame ? null
@ -32,7 +32,8 @@ stdenv.mkDerivation rec {
optional enablePNG libpng ++ optional enablePNG libpng ++
optional enableLibsndfile libsndfile ++ optional enableLibsndfile libsndfile ++
optionals enableAMR [ amrnb amrwb ] ++ optionals enableAMR [ amrnb amrwb ] ++
optional enableLibpulseaudio libpulseaudio; optional enableLibpulseaudio libpulseaudio ++
optional (stdenv.isDarwin) CoreAudio;
meta = { meta = {
description = "Sample Rate Converter for audio"; description = "Sample Rate Converter for audio";

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, pythonPackages { stdenv, fetchFromGitHub, pythonPackages
, pkgconfig, autoreconfHook, rsync , pkgconfig, autoreconfHook, rsync
, swig, qt4, fcgi , swig, qt48Full, fcgi
, bitcoin, procps, utillinux , bitcoin, procps, utillinux
}: }:
let let
@ -16,7 +16,6 @@ in buildPythonApplication {
owner = "goatpig"; owner = "goatpig";
repo = "BitcoinArmory"; repo = "BitcoinArmory";
rev = "v${version}"; rev = "v${version}";
#sha256 = "023c7q1glhrkn4djz3pf28ckd1na52lsagv4iyfgchqvw7qm7yx2";
sha256 = "0pjk5qx16n3kvs9py62666qkwp2awkgd87by4karbj7vk6p1l14h"; fetchSubmodules = true; sha256 = "0pjk5qx16n3kvs9py62666qkwp2awkgd87by4karbj7vk6p1l14h"; fetchSubmodules = true;
}; };
@ -25,14 +24,18 @@ in buildPythonApplication {
# FIXME bitcoind doesn't die on shutdown. Need some sort of patch to fix that. # FIXME bitcoind doesn't die on shutdown. Need some sort of patch to fix that.
#patches = [ ./shutdown-fix.patch ]; #patches = [ ./shutdown-fix.patch ];
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [
buildInputs = [
autoreconfHook autoreconfHook
pkgconfig
swig swig
qt4 pyqt4
fcgi qt48Full
rsync # used by silly install script (TODO patch upstream) rsync # used by silly install script (TODO patch upstream)
]; ];
buildInputs = [
qt48Full
fcgi
];
propagatedBuildInputs = [ propagatedBuildInputs = [
pyqt4 pyqt4

View File

@ -0,0 +1,32 @@
{ stdenv, fetchFromGitHub, qtbase, qtserialport, qmake }:
stdenv.mkDerivation rec {
name = "candle-${version}";
version = "1.1";
src = fetchFromGitHub {
owner = "Denvi";
repo = "Candle";
rev = "v${version}";
sha256 = "1gpx08gdz8awbsj6lsczwgffp19z3q0r2fvm72a73qd9az29pmm0";
};
nativeBuildInputs = [ qmake ];
sourceRoot = "source/src";
installPhase = ''
runHook preInstall
install -Dm755 Candle $out/bin/candle
runHook postInstall
'';
buildInputs = [ qtbase qtserialport ];
meta = with stdenv.lib; {
description = "GRBL controller application with G-Code visualizer written in Qt";
homepage = https://github.com/Denvi/Candle;
license = licenses.gpl3;
maintainers = with maintainers; [ matti-kariluoma ];
};
}

View File

@ -7,7 +7,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "dbeaver-ce-${version}"; name = "dbeaver-ce-${version}";
version = "5.3.5"; version = "6.0.0";
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
name = "dbeaver"; name = "dbeaver";
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz"; url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
sha256 = "0b9a2l8lcw8abilm9a3igbfm52fmix0vzh6kz6kwgmnflp6n9wib"; sha256 = "1v7zvvphkyw7x5ziysk4gs2rpgc4dr108fn4ja80kijs1jmj5dxr";
}; };
installPhase = '' installPhase = ''

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, python3Packages, qtbase, makeWrapper, lib }: { lib, fetchurl, python3Packages, qtbase, makeWrapper }:
let let
@ -7,14 +7,14 @@ let
in in
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
version = "3.3.2"; pname = "electron-cash";
name = "electron-cash-${version}"; version = "3.3.6";
src = fetchurl { src = fetchurl {
url = "https://electroncash.org/downloads/${version}/win-linux/ElectronCash-${version}.tar.gz"; url = "https://electroncash.org/downloads/${version}/win-linux/Electron-Cash-${version}.tar.gz";
# Verified using official SHA-1 and signature from # Verified using official SHA-1 and signature from
# https://github.com/fyookball/keys-n-hashes # https://github.com/fyookball/keys-n-hashes
sha256 = "4538044cfaa4f87a847635849e0733f32b183ac79abbd2797689c86dc3cb0d53"; sha256 = "ac435f2bf98b9b50c4bdcc9e3fb2ff19d9c66f8cce5df852f3a4727306bb0a84";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [
@ -30,6 +30,7 @@ python3Packages.buildPythonApplication rec {
qrcode qrcode
requests requests
tlslite-ng tlslite-ng
qdarkstyle
# plugins # plugins
keepkey keepkey
@ -40,25 +41,18 @@ python3Packages.buildPythonApplication rec {
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
postPatch = '' postPatch = ''
# Remove pyqt5 check substituteInPlace contrib/requirements/requirements.txt \
sed -i '/pyqt5/d' setup.py --replace "qdarkstyle<2.6" "qdarkstyle<3"
'';
preBuild = '' substituteInPlace setup.py \
pyrcc5 icons.qrc -o gui/qt/icons_rc.py --replace "(share_dir" "(\"share\""
# Recording the creation timestamps introduces indeterminism to the build
sed -i '/Created: .*/d' gui/qt/icons_rc.py
''; '';
doCheck = false; doCheck = false;
postInstall = '' postInstall = ''
# These files are installed under $out/homeless-shelter ...
mv $out/${python.sitePackages}/homeless-shelter/.local/share $out
rm -rf $out/${python.sitePackages}/homeless-shelter
substituteInPlace $out/share/applications/electron-cash.desktop \ substituteInPlace $out/share/applications/electron-cash.desktop \
--replace "Exec=electron-cash %u" "Exec=$out/bin/electron-cash %u" --replace "Exec=electron-cash" "Exec=$out/bin/electron-cash"
# Please remove this when #44047 is fixed # Please remove this when #44047 is fixed
wrapProgram $out/bin/electron-cash \ wrapProgram $out/bin/electron-cash \
@ -70,17 +64,17 @@ python3Packages.buildPythonApplication rec {
$out/bin/electron-cash help >/dev/null $out/bin/electron-cash help >/dev/null
''; '';
meta = with stdenv.lib; { meta = with lib; {
description = "A lightweight Bitcoin wallet"; description = "A Bitcoin Cash SPV Wallet";
longDescription = '' longDescription = ''
An easy-to-use Bitcoin client featuring wallets generated from An easy-to-use Bitcoin Cash client featuring wallets generated from
mnemonic seeds (in addition to other, more advanced, wallet options) mnemonic seeds (in addition to other, more advanced, wallet options)
and the ability to perform transactions without downloading a copy and the ability to perform transactions without downloading a copy
of the blockchain. of the blockchain.
''; '';
homepage = https://www.electroncash.org/; homepage = https://www.electroncash.org/;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ lassulus ]; maintainers = with maintainers; [ lassulus nyanloutre ];
license = licenses.mit; license = licenses.mit;
}; };
} }

View File

@ -1,17 +1,17 @@
{ stdenv, fetchFromGitHub, meson, ninja, gettext, python3, { stdenv, fetchFromGitHub, meson, ninja, gettext, python3,
pkgconfig, libxml2, json-glib , sqlite, itstool, librsvg, pkgconfig, libxml2, json-glib , sqlite, itstool, librsvg,
vala, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection vala, gtk3, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "font-manager"; pname = "font-manager";
version = "0.7.4.2"; version = "0.7.4.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "FontManager"; owner = "FontManager";
repo = "master"; repo = "master";
rev = version; rev = version;
sha256 = "15814czap0qg2h9nkcn9fg4i4xxa1lgw1vi6h3hi242qfwc7fh3i"; sha256 = "0v6zn25vxsn3ng31zgsgkb2wwrl0kdv4ikw4ij4yqv49aid3qjd5";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
vala vala
gnome3.yelp-tools gnome3.yelp-tools
wrapGAppsHook wrapGAppsHook
# For setup hook # For https://github.com/FontManager/master/blob/master/lib/unicode/meson.build
gobject-introspection gobject-introspection
]; ];
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
json-glib json-glib
sqlite sqlite
librsvg librsvg
gnome3.gtk gtk3
gnome3.adwaita-icon-theme gnome3.adwaita-icon-theme
]; ];
@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
patchShebangs meson_post_install.py patchShebangs meson_post_install.py
''; '';
meta = { meta = with stdenv.lib; {
homepage = https://fontmanager.github.io/; homepage = https://fontmanager.github.io/;
description = "Simple font management for GTK+ desktop environments"; description = "Simple font management for GTK+ desktop environments";
longDescription = '' longDescription = ''
@ -61,9 +61,9 @@ stdenv.mkDerivation rec {
Font Manager is NOT a professional-grade font management solution. Font Manager is NOT a professional-grade font management solution.
''; '';
license = stdenv.lib.licenses.gpl3; license = licenses.gpl3;
repositories.git = https://github.com/FontManager/master; repositories.git = https://github.com/FontManager/master;
platforms = stdenv.lib.platforms.unix; platforms = platforms.unix;
maintainers = [ stdenv.lib.maintainers.romildo ]; maintainers = [ maintainers.romildo ];
}; };
} }

View File

@ -22,13 +22,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "glava-${version}"; name = "glava-${version}";
version = "1.5.8"; version = "1.6.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wacossusca34"; owner = "wacossusca34";
repo = "glava"; repo = "glava";
rev = "v${version}"; rev = "v${version}";
sha256 = "0mps82qw2mhxx8069jvqz1v8n4x7ybrrjv92ij6cms8xi1y8v0fm"; sha256 = "0kqkjxmpqkmgby05lsf6c6iwm45n33jk5qy6gi3zvjx4q4yzal1i";
}; };
buildInputs = [ buildInputs = [
@ -45,6 +45,9 @@ in
]; ];
preConfigure = '' preConfigure = ''
substituteInPlace Makefile \
--replace 'unknown' 'v${version}'
export CFLAGS="-march=native" export CFLAGS="-march=native"
''; '';

View File

@ -1,6 +1,6 @@
{ stdenv, buildGoPackage, fetchFromGitHub }: { stdenv, buildGoModule, fetchFromGitHub }:
buildGoPackage rec { buildGoModule rec {
name = "hugo-${version}"; name = "hugo-${version}";
version = "0.54.0"; version = "0.54.0";
@ -13,13 +13,11 @@ buildGoPackage rec {
sha256 = "01grfbr3kpd4qf5cbcmzc6yfq34cm0nkak4pqzgrn46r254y0ymv"; sha256 = "01grfbr3kpd4qf5cbcmzc6yfq34cm0nkak4pqzgrn46r254y0ymv";
}; };
goDeps = ./deps.nix; modSha256 = "01gni3ksw9whf388c6cj0vcbpsyhdrwfl8cyw85kjx8r56dv88y5";
buildFlags = "-tags extended"; buildFlags = "-tags extended";
postInstall = '' subPackages = [ "." ];
rm $bin/bin/generate
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A fast and modern static website engine."; description = "A fast and modern static website engine.";

View File

@ -1,777 +0,0 @@
# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
[
{
goPackagePath = "github.com/gobuffalo/envy";
fetch = {
type = "git";
url = "https://github.com/gobuffalo/envy";
rev = "v1.6.8";
"sha256" = "1xh26j9bji8c4hr05f89kbc4fhqniba00bdcic4gs5xfnp2vj7gk";
};
}
{
goPackagePath = "github.com/joho/godotenv";
fetch = {
type = "git";
url = "https://github.com/joho/godotenv";
rev = "v1.3.0";
"sha256" = "0ri8if0pc3x6jg4c3i8wr58xyfpxkwmcjk3rp8gb398a1aa3gpjm";
};
}
{
goPackagePath = "github.com/BurntSushi/locker";
fetch = {
type = "git";
url = "https://github.com/BurntSushi/locker";
rev = "a6e239ea1c69";
sha256 = "1xak4aync4klswq5217qvw191asgla51jr42y94vp109lirm5dzg";
};
}
{
goPackagePath = "github.com/BurntSushi/toml";
fetch = {
type = "git";
url = "https://github.com/BurntSushi/toml";
rev = "a368813c5e64";
sha256 = "1sjxs2lwc8jpln80s4rlzp7nprbcljhy5mz4rf9995gq93wqnym5";
};
}
{
goPackagePath = "github.com/PuerkitoBio/purell";
fetch = {
type = "git";
url = "https://github.com/PuerkitoBio/purell";
rev = "v1.1.0";
sha256 = "0vsxyn1fbm7g873b8kf3hcsgqgncb5nmfq3zfsc35a9yhzarka91";
};
}
{
goPackagePath = "github.com/PuerkitoBio/urlesc";
fetch = {
type = "git";
url = "https://github.com/PuerkitoBio/urlesc";
rev = "de5bf2ad4578";
sha256 = "0n0srpqwbaan1wrhh2b7ysz543pjs1xw2rghvqyffg9l0g8kzgcw";
};
}
{
goPackagePath = "github.com/alecthomas/assert";
fetch = {
type = "git";
url = "https://github.com/alecthomas/assert";
rev = "405dbfeb8e38";
sha256 = "1l567pi17k593nrd1qlbmiq8z9jy3qs60px2a16fdpzjsizwqx8l";
};
}
{
goPackagePath = "github.com/alecthomas/chroma";
fetch = {
type = "git";
url = "https://github.com/alecthomas/chroma";
rev = "v0.6.2";
sha256 = "1bcppy1s148iikr78qjm0akahn01ywh83a8pw544prr9yc16jvmz";
};
}
{
goPackagePath = "github.com/alecthomas/colour";
fetch = {
type = "git";
url = "https://github.com/alecthomas/colour";
rev = "60882d9e2721";
sha256 = "0iq566534gbzkd16ixg7fk298wd766821vvs80838yifx9yml5vs";
};
}
{
goPackagePath = "github.com/alecthomas/kong";
fetch = {
type = "git";
url = "https://github.com/alecthomas/kong";
rev = "v0.1.15";
sha256 = "1llxabcdzlb2hard0h931knqkdnyjyz8dp3k0nli0m0mags7l31b";
};
}
{
goPackagePath = "github.com/alecthomas/repr";
fetch = {
type = "git";
url = "https://github.com/alecthomas/repr";
rev = "d37bc2a10ba1";
sha256 = "0jnx1ypdl4zi010ds2z857ajkr5cx51wkx950rfqb126hvql7svx";
};
}
{
goPackagePath = "github.com/armon/consul-api";
fetch = {
type = "git";
url = "https://github.com/armon/consul-api";
rev = "eb2c6b5be1b6";
sha256 = "1j6fdr1sg36qy4n4xjl7brq739fpm5npq98cmvklzjc9qrx98nk9";
};
}
{
goPackagePath = "github.com/bep/debounce";
fetch = {
type = "git";
url = "https://github.com/bep/debounce";
rev = "v1.1.0";
sha256 = "1sh4zv0hv7f454mhzpl2mbv7ar5rm00wyy5qr78x1h84bgph87wy";
};
}
{
goPackagePath = "github.com/bep/gitmap";
fetch = {
type = "git";
url = "https://github.com/bep/gitmap";
rev = "v1.0.0";
sha256 = "0zqdl5h4ayi2gi5aqf35f1sjszhbcriksm2bf84fkrg7ngr48jn6";
};
}
{
goPackagePath = "github.com/bep/go-tocss";
fetch = {
type = "git";
url = "https://github.com/bep/go-tocss";
rev = "v0.6.0";
sha256 = "0w5i3ig3bbdrwbrcwzx8xsxhlb8xr17jj3wdcb6klqglg7551yvm";
};
}
{
goPackagePath = "github.com/chaseadamsio/goorgeous";
fetch = {
type = "git";
url = "https://github.com/chaseadamsio/goorgeous";
rev = "v1.1.0";
sha256 = "07qdqi46klizq3wigxqbiksnlgbrdc8hvmizgzg0aas5iqy88dcb";
};
}
{
goPackagePath = "github.com/cheekybits/is";
fetch = {
type = "git";
url = "https://github.com/cheekybits/is";
rev = "68e9c0620927";
sha256 = "1mkbyzhwq3rby832ikq00nxv3jnckxsm3949wkxd8ya9js2jmg4d";
};
}
{
goPackagePath = "github.com/coreos/etcd";
fetch = {
type = "git";
url = "https://github.com/coreos/etcd";
rev = "v3.3.10";
sha256 = "1x2ii1hj8jraba8rbxz6dmc03y3sjxdnzipdvg6fywnlq1f3l3wl";
};
}
{
goPackagePath = "github.com/coreos/go-etcd";
fetch = {
type = "git";
url = "https://github.com/coreos/go-etcd";
rev = "v2.0.0";
sha256 = "1xb34hzaa1lkbq5vkzy9vcz6gqwj7hp6cdbvyack2bf28dwn33jj";
};
}
{
goPackagePath = "github.com/coreos/go-semver";
fetch = {
type = "git";
url = "https://github.com/coreos/go-semver";
rev = "v0.2.0";
sha256 = "1gghi5bnqj50hfxhqc1cxmynqmh2yk9ii7ab9gsm75y5cp94ymk0";
};
}
{
goPackagePath = "github.com/cpuguy83/go-md2man";
fetch = {
type = "git";
url = "https://github.com/cpuguy83/go-md2man";
rev = "v1.0.8";
sha256 = "1w22dfdamsq63b5rvalh9k2y7rbwfkkjs7vm9vd4a13h2ql70lg2";
};
}
{
goPackagePath = "github.com/danwakefield/fnmatch";
fetch = {
type = "git";
url = "https://github.com/danwakefield/fnmatch";
rev = "cbb64ac3d964";
sha256 = "0cbf511ppsa6hf59mdl7nbyn2b2n71y0bpkzbmfkdqjhanqh1lqz";
};
}
{
goPackagePath = "github.com/davecgh/go-spew";
fetch = {
type = "git";
url = "https://github.com/davecgh/go-spew";
rev = "v1.1.1";
sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
};
}
{
goPackagePath = "github.com/disintegration/imaging";
fetch = {
type = "git";
url = "https://github.com/disintegration/imaging";
rev = "v1.5.0";
sha256 = "1laxccmzi7q51zxn81ringmdwp8iaipivrl375yc3gq56d70sp0r";
};
}
{
goPackagePath = "github.com/dlclark/regexp2";
fetch = {
type = "git";
url = "https://github.com/dlclark/regexp2";
rev = "v1.1.6";
sha256 = "144s81ndviwhyy20ipxvvfvap8phv5p762glxrz6aqxprkxfarj5";
};
}
{
goPackagePath = "github.com/dustin/go-humanize";
fetch = {
type = "git";
url = "https://github.com/dustin/go-humanize";
rev = "v1.0.0";
sha256 = "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3";
};
}
{
goPackagePath = "github.com/eknkc/amber";
fetch = {
type = "git";
url = "https://github.com/eknkc/amber";
rev = "cdade1c07385";
sha256 = "152w97yckwncgw7lwjvgd8d00wy6y0nxzlvx72kl7nqqxs9vhxd9";
};
}
{
goPackagePath = "github.com/fortytw2/leaktest";
fetch = {
type = "git";
url = "https://github.com/fortytw2/leaktest";
rev = "v1.2.0";
sha256 = "1lf9l6zgzjbcc7hmcjhhg3blx0y8icyxvjmjqqwfbwdk502803ra";
};
}
{
goPackagePath = "github.com/fsnotify/fsnotify";
fetch = {
type = "git";
url = "https://github.com/fsnotify/fsnotify";
rev = "v1.4.7";
sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
};
}
{
goPackagePath = "github.com/gobwas/glob";
fetch = {
type = "git";
url = "https://github.com/gobwas/glob";
rev = "v0.2.3";
sha256 = "0jxk1x806zn5x86342s72dq2qy64ksb3zrvrlgir2avjhwb18n6z";
};
}
{
goPackagePath = "github.com/gorilla/websocket";
fetch = {
type = "git";
url = "https://github.com/gorilla/websocket";
rev = "v1.4.0";
sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk";
};
}
{
goPackagePath = "github.com/hashicorp/go-immutable-radix";
fetch = {
type = "git";
url = "https://github.com/hashicorp/go-immutable-radix";
rev = "v1.0.0";
sha256 = "1v3nmsnk1s8bzpclrhirz7iq0g5xxbw9q5gvrg9ss6w9crs72qr6";
};
}
{
goPackagePath = "github.com/hashicorp/go-uuid";
fetch = {
type = "git";
url = "https://github.com/hashicorp/go-uuid";
rev = "v1.0.0";
sha256 = "1jflywlani7583qm4ysph40hsgx3n66n5zr2k84i057fmwa1ypfy";
};
}
{
goPackagePath = "github.com/hashicorp/golang-lru";
fetch = {
type = "git";
url = "https://github.com/hashicorp/golang-lru";
rev = "v0.5.0";
sha256 = "12k2cp2k615fjvfa5hyb9k2alian77wivds8s65diwshwv41939f";
};
}
{
goPackagePath = "github.com/hashicorp/hcl";
fetch = {
type = "git";
url = "https://github.com/hashicorp/hcl";
rev = "v1.0.0";
sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66";
};
}
{
goPackagePath = "github.com/inconshreveable/mousetrap";
fetch = {
type = "git";
url = "https://github.com/inconshreveable/mousetrap";
rev = "v1.0.0";
sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
};
}
{
goPackagePath = "github.com/jdkato/prose";
fetch = {
type = "git";
url = "https://github.com/jdkato/prose";
rev = "v1.1.0";
sha256 = "1gjqgrpc7wbqvnhgwyfhxng24qvx37qjy0x2mbikiw1vaygxqsmy";
};
}
{
goPackagePath = "github.com/kr/pretty";
fetch = {
type = "git";
url = "https://github.com/kr/pretty";
rev = "v0.1.0";
sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
};
}
{
goPackagePath = "github.com/kr/pty";
fetch = {
type = "git";
url = "https://github.com/kr/pty";
rev = "v1.1.1";
sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
};
}
{
goPackagePath = "github.com/kr/text";
fetch = {
type = "git";
url = "https://github.com/kr/text";
rev = "v0.1.0";
sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
};
}
{
goPackagePath = "github.com/kyokomi/emoji";
fetch = {
type = "git";
url = "https://github.com/kyokomi/emoji";
rev = "v1.5.1";
sha256 = "005rxyxlqcd2sfjn686xb52l11wn2w0g5jv042ka6pnsx24r812a";
};
}
{
goPackagePath = "github.com/magefile/mage";
fetch = {
type = "git";
url = "https://github.com/magefile/mage";
rev = "v1.4.0";
sha256 = "177hzmmzhk7bcm3jj2cj6d5l9h5ql3cikvndhk4agkslrhwr3xka";
};
}
{
goPackagePath = "github.com/magiconair/properties";
fetch = {
type = "git";
url = "https://github.com/magiconair/properties";
rev = "v1.8.0";
sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
};
}
{
goPackagePath = "github.com/markbates/inflect";
fetch = {
type = "git";
url = "https://github.com/markbates/inflect";
rev = "v1.0.0";
sha256 = "072a73ij23mp8vabr8xwga2kj8dimya44ciiy9g4x4r9imm86psw";
};
}
{
goPackagePath = "github.com/matryer/try";
fetch = {
type = "git";
url = "https://github.com/matryer/try";
rev = "9ac251b645a2";
sha256 = "19fnqmpl3p54vmxgm1hmqvdc87brqx754wf3cdhq1bj04fcbb5h9";
};
}
{
goPackagePath = "github.com/mattn/go-colorable";
fetch = {
type = "git";
url = "https://github.com/mattn/go-colorable";
rev = "v0.0.9";
sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
};
}
{
goPackagePath = "github.com/mattn/go-isatty";
fetch = {
type = "git";
url = "https://github.com/mattn/go-isatty";
rev = "v0.0.4";
sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
};
}
{
goPackagePath = "github.com/mattn/go-runewidth";
fetch = {
type = "git";
url = "https://github.com/mattn/go-runewidth";
rev = "v0.0.3";
sha256 = "0lc39b6xrxv7h3v3y1kgz49cgi5qxwlygs715aam6ba35m48yi7g";
};
}
{
goPackagePath = "github.com/miekg/mmark";
fetch = {
type = "git";
url = "https://github.com/miekg/mmark";
rev = "v1.3.6";
sha256 = "0q2zrwa2vwk7a0zhmi000zpqrc01zssrj9c5n3573rg68fksg77m";
};
}
{
goPackagePath = "github.com/mitchellh/hashstructure";
fetch = {
type = "git";
url = "https://github.com/mitchellh/hashstructure";
rev = "v1.0.0";
sha256 = "0zgl5c03ip2yzkb9b7fq9ml08i7j8prgd46ha1fcg8c6r7k9xl3i";
};
}
{
goPackagePath = "github.com/mitchellh/mapstructure";
fetch = {
type = "git";
url = "https://github.com/mitchellh/mapstructure";
rev = "v1.1.2";
sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr";
};
}
{
goPackagePath = "github.com/muesli/smartcrop";
fetch = {
type = "git";
url = "https://github.com/muesli/smartcrop";
rev = "f6ebaa786a12";
sha256 = "0xbv5wbn0z36nkw9ay3ly6z23lpsrs0khryl1w54fz85lvwh66gp";
};
}
{
goPackagePath = "github.com/nfnt/resize";
fetch = {
type = "git";
url = "https://github.com/nfnt/resize";
rev = "83c6a9932646";
sha256 = "005cpiwq28krbjf0zjwpfh63rp4s4is58700idn24fs3g7wdbwya";
};
}
{
goPackagePath = "github.com/nicksnyder/go-i18n";
fetch = {
type = "git";
url = "https://github.com/nicksnyder/go-i18n";
rev = "v1.10.0";
sha256 = "1nlvq85c232z5yjs86pxpmkv7hk6gb5pa6j4hhzgdz85adk2ma04";
};
}
{
goPackagePath = "github.com/olekukonko/tablewriter";
fetch = {
type = "git";
url = "https://github.com/olekukonko/tablewriter";
rev = "d4647c9c7a84";
sha256 = "1274k5r9ardh1f6gsmadxmdds7zy8rkr55fb9swvnm0vazr3y01l";
};
}
{
goPackagePath = "github.com/pelletier/go-toml";
fetch = {
type = "git";
url = "https://github.com/pelletier/go-toml";
rev = "v1.2.0";
sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
};
}
{
goPackagePath = "github.com/pkg/errors";
fetch = {
type = "git";
url = "https://github.com/pkg/errors";
rev = "v0.8.0";
sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
};
}
{
goPackagePath = "github.com/pmezard/go-difflib";
fetch = {
type = "git";
url = "https://github.com/pmezard/go-difflib";
rev = "v1.0.0";
sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
};
}
{
goPackagePath = "github.com/russross/blackfriday";
fetch = {
type = "git";
url = "https://github.com/russross/blackfriday";
rev = "46c73eb196ba";
sha256 = "01z1jsdkac09cw95lqq4pahkw9xnini2mb956lvb772bby2x3dmj";
};
}
{
goPackagePath = "github.com/sanity-io/litter";
fetch = {
type = "git";
url = "https://github.com/sanity-io/litter";
rev = "v1.1.0";
sha256 = "09nywwxxd6rmhxc7rsvs96ynjszmnvmhwr7dvh1n35hb6h9y7s2r";
};
}
{
goPackagePath = "github.com/sergi/go-diff";
fetch = {
type = "git";
url = "https://github.com/sergi/go-diff";
rev = "v1.0.0";
sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7";
};
}
{
goPackagePath = "github.com/shurcooL/sanitized_anchor_name";
fetch = {
type = "git";
url = "https://github.com/shurcooL/sanitized_anchor_name";
rev = "86672fcb3f95";
sha256 = "142m507s9971cl8qdmbcw7sqxnkgi3xqd8wzvfq15p0w7w8i4a3h";
};
}
{
goPackagePath = "github.com/spf13/afero";
fetch = {
type = "git";
url = "https://github.com/spf13/afero";
rev = "v1.2.1";
sha256 = "14qqj0cz6a595vn4dp747vddx05fd77jdsyl85qjmf9baymaxlam";
};
}
{
goPackagePath = "github.com/spf13/cast";
fetch = {
type = "git";
url = "https://github.com/spf13/cast";
rev = "v1.3.0";
sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5";
};
}
{
goPackagePath = "github.com/spf13/cobra";
fetch = {
type = "git";
url = "https://github.com/spf13/cobra";
rev = "v0.0.3";
sha256 = "1q1nsx05svyv9fv3fy6xv6gs9ffimkyzsfm49flvl3wnvf1ncrkd";
};
}
{
goPackagePath = "github.com/spf13/fsync";
fetch = {
type = "git";
url = "https://github.com/spf13/fsync";
rev = "12a01e648f05";
sha256 = "1vvbgxbbsc4mvi1axgqgn9pzjz1p495dsmwpc7mr8qxh8f6s0nhv";
};
}
{
goPackagePath = "github.com/spf13/jwalterweatherman";
fetch = {
type = "git";
url = "https://github.com/spf13/jwalterweatherman";
rev = "94f6ae3ed3bc";
sha256 = "1ywmkwci5zyd88ijym6f30fj5c0k2yayxarkmnazf5ybljv50q7b";
};
}
{
goPackagePath = "github.com/spf13/nitro";
fetch = {
type = "git";
url = "https://github.com/spf13/nitro";
rev = "24d7ef30a12d";
sha256 = "143sbpx0jdgf8f8ayv51x6l4jg6cnv6nps6n60qxhx4vd90s6mib";
};
}
{
goPackagePath = "github.com/spf13/pflag";
fetch = {
type = "git";
url = "https://github.com/spf13/pflag";
rev = "v1.0.3";
sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd";
};
}
{
goPackagePath = "github.com/spf13/viper";
fetch = {
type = "git";
url = "https://github.com/spf13/viper";
rev = "v1.3.1";
sha256 = "1190mg04718r03qriav99sf4kx2n7wdgr8vdni15f74bpbzrdjrl";
};
}
{
goPackagePath = "github.com/stretchr/testify";
fetch = {
type = "git";
url = "https://github.com/stretchr/testify";
rev = "04af85275a5c";
sha256 = "1al7hgvg34xbajds99ss5wmlndxbzzmz5l0wrg6wchvvfaiwxlx0";
};
}
{
goPackagePath = "github.com/tdewolff/minify";
fetch = {
type = "git";
url = "https://github.com/tdewolff/minify";
rev = "v2.3.7";
sha256 = "1mj1lmd8s0mrg9cfj1ihvsqrbsbpzh3icm0pmayd2r6jp6rbffw6";
};
}
{
goPackagePath = "github.com/tdewolff/parse";
fetch = {
type = "git";
url = "https://github.com/tdewolff/parse";
rev = "v2.3.5";
sha256 = "05w859s31dx6525wrjryby601z9c0xpncilznk6shgqygpxda6cz";
};
}
{
goPackagePath = "github.com/tdewolff/test";
fetch = {
type = "git";
url = "https://github.com/tdewolff/test";
rev = "v1.0.0";
sha256 = "10vyp4bhanzg3yl9k8zqfdrxpsmx8yc53xv4lqxfymd7jjyqgssj";
};
}
{
goPackagePath = "github.com/ugorji/go";
fetch = {
type = "git";
url = "https://github.com/ugorji/go";
rev = "d75b2dcb6bc8";
sha256 = "0di1k35gpq9bp958ywranpbskx2vdwlb38s22vl9rybm3wa5g3ps";
};
}
{
goPackagePath = "github.com/wellington/go-libsass";
fetch = {
type = "git";
url = "https://github.com/wellington/go-libsass";
rev = "c63644206701";
sha256 = "1ml0fk4wldnjlkmliydnig9f3rpp3cdzwgz331mlqyadvma3c0lf";
};
}
{
goPackagePath = "github.com/xordataexchange/crypt";
fetch = {
type = "git";
url = "https://github.com/xordataexchange/crypt";
rev = "b2862e3d0a77";
sha256 = "04q3856anpzl4gdfgmg7pbp9cx231nkz3ymq2xp27rnmmwhfxr8y";
};
}
{
goPackagePath = "github.com/yosssi/ace";
fetch = {
type = "git";
url = "https://github.com/yosssi/ace";
rev = "v0.0.5";
sha256 = "1kbvbc56grrpnl65grygd23gyn3nkkhxdg8awhzkjmd0cvki8w1f";
};
}
{
goPackagePath = "golang.org/x/crypto";
fetch = {
type = "git";
url = "https://go.googlesource.com/crypto";
rev = "505ab145d0a9";
sha256 = "1vbsvcvmjz6c00p5vf8ls533p52fx2y3gy6v4k5qrdlzl4wf0i5s";
};
}
{
goPackagePath = "golang.org/x/image";
fetch = {
type = "git";
url = "https://go.googlesource.com/image";
rev = "c73c2afc3b81";
sha256 = "1kkafy29vz5xf6r29ghbvvbwrgjxwxvzk6dsa2qhyp1ddk6l2vkz";
};
}
{
goPackagePath = "golang.org/x/net";
fetch = {
type = "git";
url = "https://go.googlesource.com/net";
rev = "161cd47e91fd";
sha256 = "0254ld010iijygbzykib2vags1dc0wlmcmhgh4jl8iny159lhbcv";
};
}
{
goPackagePath = "golang.org/x/sync";
fetch = {
type = "git";
url = "https://go.googlesource.com/sync";
rev = "1d60e4601c6f";
sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
};
}
{
goPackagePath = "golang.org/x/sys";
fetch = {
type = "git";
url = "https://go.googlesource.com/sys";
rev = "b4a75ba826a6";
sha256 = "0kzrd2wywkcq35iakbzplqyma4bvf2ng3mzi7917kxcbdq3fflrj";
};
}
{
goPackagePath = "golang.org/x/text";
fetch = {
type = "git";
url = "https://go.googlesource.com/text";
rev = "v0.3.0";
sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
};
}
{
goPackagePath = "gopkg.in/check.v1";
fetch = {
type = "git";
url = "https://gopkg.in/check.v1";
rev = "788fd7840127";
sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
};
}
{
goPackagePath = "gopkg.in/yaml.v2";
fetch = {
type = "git";
url = "https://gopkg.in/yaml.v2";
rev = "v2.2.2";
sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
};
}
]

View File

@ -0,0 +1,41 @@
{ stdenv, appimage-run, fetchurl }:
let
version = "1.0.120";
sha256 = "0j32rg6hm5dirdcibhfhrclnx7vm37fbm4iwkzzinqhzj4jfgbfm";
in
stdenv.mkDerivation rec {
name = "joplin-${version}";
src = fetchurl {
url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}-x86_64.AppImage";
inherit sha256;
};
buildInputs = [ appimage-run ];
unpackPhase = ":";
installPhase = ''
mkdir -p $out/{bin,share}
cp $src $out/share/joplin.AppImage
echo "#!/bin/sh" > $out/bin/joplin-desktop
echo "${appimage-run}/bin/appimage-run $out/share/joplin.AppImage" >> $out/bin/joplin-desktop
chmod +x $out/bin/joplin-desktop $out/share/joplin.AppImage
'';
meta = with stdenv.lib; {
description = "An open source note taking and to-do application with synchronisation capabilities";
longDescription = ''
Joplin is a free, open source note taking and to-do application, which can
handle a large number of notes organised into notebooks. The notes are
searchable, can be copied, tagged and modified either from the
applications directly or from your own text editor. The notes are in
Markdown format.
'';
homepage = https://joplin.cozic.net/;
license = licenses.mit;
maintainers = with maintainers; [ rafaelgg raquelgb ];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "josm-${version}"; name = "josm-${version}";
version = "14620"; version = "14760";
src = fetchurl { src = fetchurl {
url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar"; url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
sha256 = "0ypn2awmclxsx4i7mmghs5blz2j5srdayzcxcqn5b4p1r57072bn"; sha256 = "1ya05z3i37ynpaqrm99cirkbap03q7wgbbps2y95l7r2k9l4sxsi";
}; };
buildInputs = [ jdk11 makeWrapper ]; buildInputs = [ jdk11 makeWrapper ];

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
description = "Qt password manager compatible with its Win32 and Pocket PC versions"; description = "Qt password manager compatible with its Win32 and Pocket PC versions";
homepage = https://www.keepassx.org/; homepage = https://www.keepassx.org/;
license = stdenv.lib.licenses.gpl2; license = stdenv.lib.licenses.gpl2;
maintainers = with stdenv.lib.maintainers; [ qknight jgeerds ]; maintainers = with stdenv.lib.maintainers; [ qknight ];
platforms = with stdenv.lib.platforms; linux; platforms = with stdenv.lib.platforms; linux;
}; };
} }

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