Project import generated by Copybara.

GitOrigin-RevId: 20887e4bbfdae3aed6bfa1f53ddf138ee325515e
This commit is contained in:
Default email 2021-07-03 21:40:35 -05:00
parent a8ecef63af
commit b96e6f4393
307 changed files with 2443 additions and 1104 deletions

View file

@ -11,7 +11,7 @@ name: "Periodic Merges (24h)"
on: on:
schedule: schedule:
# * is a special character in YAML so you have to quote this string # * is a special character in YAML so you have to quote this string
# Merge every 6 hours # Merge every 24 hours
- cron: '0 0 * * *' - cron: '0 0 * * *'
jobs: jobs:

View file

@ -439,7 +439,7 @@ The following example shows which arguments are given to `buildPythonPackage` in
order to build [`datashape`](https://github.com/blaze/datashape). order to build [`datashape`](https://github.com/blaze/datashape).
```nix ```nix
{ lib, buildPythonPackage, fetchPypi, numpy, multipledispatch, dateutil, pytest }: { lib, buildPythonPackage, fetchPypi, numpy, multipledispatch, python-dateutil, pytest }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "datashape"; pname = "datashape";
@ -451,7 +451,7 @@ buildPythonPackage rec {
}; };
checkInputs = [ pytest ]; checkInputs = [ pytest ];
propagatedBuildInputs = [ numpy multipledispatch dateutil ]; propagatedBuildInputs = [ numpy multipledispatch python-dateutil ];
meta = with lib; { meta = with lib; {
homepage = "https://github.com/ContinuumIO/datashape"; homepage = "https://github.com/ContinuumIO/datashape";
@ -463,7 +463,7 @@ buildPythonPackage rec {
``` ```
We can see several runtime dependencies, `numpy`, `multipledispatch`, and We can see several runtime dependencies, `numpy`, `multipledispatch`, and
`dateutil`. Furthermore, we have one `checkInputs`, i.e. `pytest`. `pytest` is a `python-dateutil`. Furthermore, we have one `checkInputs`, i.e. `pytest`. `pytest` is a
test runner and is only used during the `checkPhase` and is therefore not added test runner and is only used during the `checkPhase` and is therefore not added
to `propagatedBuildInputs`. to `propagatedBuildInputs`.

View file

@ -10644,6 +10644,12 @@
github = "totoroot"; github = "totoroot";
githubId = 39650930; githubId = 39650930;
}; };
ToxicFrog = {
email = "toxicfrog@ancilla.ca";
github = "ToxicFrog";
githubId = 90456;
name = "Rebecca (Bex) Kelly";
};
travisbhartwell = { travisbhartwell = {
email = "nafai@travishartwell.net"; email = "nafai@travishartwell.net";
github = "travisbhartwell"; github = "travisbhartwell";

View file

@ -30,6 +30,12 @@ If NixOS fails to boot, there are a number of kernel command line parameters tha
: Make systemd very verbose and send log messages to the console instead of the journal. For more parameters recognised by systemd, see systemd(1). : Make systemd very verbose and send log messages to the console instead of the journal. For more parameters recognised by systemd, see systemd(1).
In addition, these arguments are recognised by the live image only:
`live.nixos.passwd=password`
: Set the password for the `nixos` live user. This can be used for SSH access if there are issues using the terminal.
Notice that for `boot.shell_on_fail`, `boot.debug1`, `boot.debug1devices`, and `boot.debug1mounts`, if you did **not** select "start the new shell as pid 1", and you `exit` from the new shell, boot will proceed normally from the point where it failed, as if you'd chosen "ignore the error and continue". Notice that for `boot.shell_on_fail`, `boot.debug1`, `boot.debug1devices`, and `boot.debug1mounts`, if you did **not** select "start the new shell as pid 1", and you `exit` from the new shell, boot will proceed normally from the point where it failed, as if you'd chosen "ignore the error and continue".
If no login prompts or X11 login screens appear (e.g. due to hanging dependencies), you can press Alt+ArrowUp. If youre lucky, this will start rescue mode (described above). (Also note that since most units have a 90-second timeout before systemd gives up on them, the `agetty` login prompts should appear eventually unless something is very wrong.) If no login prompts or X11 login screens appear (e.g. due to hanging dependencies), you can press Alt+ArrowUp. If youre lucky, this will start rescue mode (described above). (Also note that since most units have a 90-second timeout before systemd gives up on them, the `agetty` login prompts should appear eventually unless something is very wrong.)

View file

@ -106,6 +106,23 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
<para>
In addition, these arguments are recognised by the live image only:
</para>
<variablelist>
<varlistentry>
<term>
<literal>live.nixos.passwd=password</literal>
</term>
<listitem>
<para>
Set the password for the <literal>nixos</literal> live user.
This can be used for SSH access if there are issues using the
terminal.
</para>
</listitem>
</varlistentry>
</variablelist>
<para> <para>
Notice that for <literal>boot.shell_on_fail</literal>, Notice that for <literal>boot.shell_on_fail</literal>,
<literal>boot.debug1</literal>, <literal>boot.debug1</literal>,

View file

@ -101,16 +101,18 @@
<listitem> <listitem>
<para> <para>
<link xlink:href="https://www.gnuradio.org/">GNURadio</link> <link xlink:href="https://www.gnuradio.org/">GNURadio</link>
3.8 was 3.8 and 3.9 were
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/82263">finally</link> <link xlink:href="https://github.com/NixOS/nixpkgs/issues/82263">finally</link>
packaged, along with a rewrite to the Nix expressions, packaged, along with a rewrite to the Nix expressions,
allowing users to override the features upstream supports allowing users to override the features upstream supports
selecting to compile or not to. Additionally, the attribute selecting to compile or not to. Additionally, the attribute
<literal>gnuradio</literal> and <literal>gnuradio3_7</literal> <literal>gnuradio</literal> (3.9),
now point to an externally wrapped by default derivations, <literal>gnuradio3_8</literal> and
that allow you to also add `extraPythonPackages` to the Python <literal>gnuradio3_7</literal> now point to an externally
interpreter used by GNURadio. Missing environmental variables wrapped by default derivations, that allow you to also add
needed for operational GUI were also added `extraPythonPackages` to the Python interpreter used by
GNURadio. Missing environmental variables needed for
operational GUI were also added
(<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#75478</link>). (<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#75478</link>).
</para> </para>
</listitem> </listitem>
@ -1026,7 +1028,7 @@ self: super:
<para> <para>
<link xlink:href="https://kodi.tv/">Kodi</link> has been <link xlink:href="https://kodi.tv/">Kodi</link> has been
updated to version 19.1 &quot;Matrix&quot;. See the updated to version 19.1 &quot;Matrix&quot;. See the
<link xlink:href="https://kodi.tv/article/kodi-190-matrix-release">announcement</link> <link xlink:href="https://kodi.tv/article/kodi-19-0-matrix-release">announcement</link>
for further details. for further details.
</para> </para>
</listitem> </listitem>

View file

@ -25,6 +25,15 @@
<section xml:id="sec-release-21.11-new-services"> <section xml:id="sec-release-21.11-new-services">
<title>New Services</title> <title>New Services</title>
<itemizedlist> <itemizedlist>
<listitem>
<para>
<link xlink:href="https://digint.ch/btrbk/index.html">btrbk</link>,
a backup tool for btrfs subvolumes, taking advantage of btrfs
specific capabilities to create atomic snapshots and transfer
them incrementally to your backup locations. Available as
<link xlink:href="options.html#opt-services.brtbk.instances">services.btrbk</link>.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
<link xlink:href="https://github.com/maxmind/geoipupdate">geoipupdate</link>, <link xlink:href="https://github.com/maxmind/geoipupdate">geoipupdate</link>,
@ -64,7 +73,7 @@
<listitem> <listitem>
<para> <para>
The <literal>staticjinja</literal> package has been upgraded The <literal>staticjinja</literal> package has been upgraded
from 1.0.4 to 2.0.0 from 1.0.4 to 3.0.1
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -339,6 +348,116 @@
release instead of the old 2.31.0 version. release instead of the old 2.31.0 version.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
The <literal>bitwarden_rs</literal> packages and modules were
renamed to <literal>vaultwarden</literal>
<link xlink:href="https://github.com/dani-garcia/vaultwarden/discussions/1642">following
upstream</link>. More specifically,
</para>
<itemizedlist>
<listitem>
<para>
<literal>pkgs.bitwarden_rs</literal>,
<literal>pkgs.bitwarden_rs-sqlite</literal>,
<literal>pkgs.bitwarden_rs-mysql</literal> and
<literal>pkgs.bitwarden_rs-postgresql</literal> were
renamed to <literal>pkgs.vaultwarden</literal>,
<literal>pkgs.vaultwarden-sqlite</literal>,
<literal>pkgs.vaultwarden-mysql</literal> and
<literal>pkgs.vaultwarden-postgresql</literal>,
respectively.
</para>
<itemizedlist spacing="compact">
<listitem>
<para>
Old names are preserved as aliases for backwards
compatibility, but may be removed in the future.
</para>
</listitem>
<listitem>
<para>
The <literal>bitwarden_rs</literal> executable was
also renamed to <literal>vaultwarden</literal> in all
packages.
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
<literal>pkgs.bitwarden_rs-vault</literal> was renamed to
<literal>pkgs.vaultwarden-vault</literal>.
</para>
<itemizedlist spacing="compact">
<listitem>
<para>
<literal>pkgs.bitwarden_rs-vault</literal> is
preserved as an alias for backwards compatibility, but
may be removed in the future.
</para>
</listitem>
<listitem>
<para>
The static files were moved from
<literal>/usr/share/bitwarden_rs</literal> to
<literal>/usr/share/vaultwarden</literal>.
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
The <literal>services.bitwarden_rs</literal> config module
was renamed to <literal>services.vaultwarden</literal>.
</para>
<itemizedlist spacing="compact">
<listitem>
<para>
<literal>services.bitwarden_rs</literal> is preserved
as an alias for backwards compatibility, but may be
removed in the future.
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
<literal>systemd.services.bitwarden_rs</literal>,
<literal>systemd.services.backup-bitwarden_rs</literal>
and <literal>systemd.timers.backup-bitwarden_rs</literal>
were renamed to
<literal>systemd.services.vaultwarden</literal>,
<literal>systemd.services.backup-vaultwarden</literal> and
<literal>systemd.timers.backup-vaultwarden</literal>,
respectively.
</para>
<itemizedlist spacing="compact">
<listitem>
<para>
Old names are preserved as aliases for backwards
compatibility, but may be removed in the future.
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
<literal>users.users.bitwarden_rs</literal> and
<literal>users.groups.bitwarden_rs</literal> were renamed
to <literal>users.users.vaultwarden</literal> and
<literal>users.groups.vaultwarden</literal>, respectively.
</para>
</listitem>
<listitem>
<para>
The data directory remains located at
<literal>/var/lib/bitwarden_rs</literal>, for backwards
compatibility.
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>
<section xml:id="sec-release-21.11-notable-changes"> <section xml:id="sec-release-21.11-notable-changes">

View file

@ -36,7 +36,7 @@ In addition to numerous new and upgraded packages, this release has the followin
The following new services were added since the last release: The following new services were added since the last release:
- [GNURadio](https://www.gnuradio.org/) 3.8 was [finally](https://github.com/NixOS/nixpkgs/issues/82263) packaged, along with a rewrite to the Nix expressions, allowing users to override the features upstream supports selecting to compile or not to. Additionally, the attribute `gnuradio` and `gnuradio3_7` now point to an externally wrapped by default derivations, that allow you to also add \`extraPythonPackages\` to the Python interpreter used by GNURadio. Missing environmental variables needed for operational GUI were also added ([\#75478](https://github.com/NixOS/nixpkgs/issues/75478)). - [GNURadio](https://www.gnuradio.org/) 3.8 and 3.9 were [finally](https://github.com/NixOS/nixpkgs/issues/82263) packaged, along with a rewrite to the Nix expressions, allowing users to override the features upstream supports selecting to compile or not to. Additionally, the attribute `gnuradio` (3.9), `gnuradio3_8` and `gnuradio3_7` now point to an externally wrapped by default derivations, that allow you to also add \`extraPythonPackages\` to the Python interpreter used by GNURadio. Missing environmental variables needed for operational GUI were also added ([\#75478](https://github.com/NixOS/nixpkgs/issues/75478)).
- [Keycloak](https://www.keycloak.org/), an open source identity and access management server with support for [OpenID Connect](https://openid.net/connect/), [OAUTH 2.0](https://oauth.net/2/) and [SAML 2.0](https://en.wikipedia.org/wiki/SAML_2.0). - [Keycloak](https://www.keycloak.org/), an open source identity and access management server with support for [OpenID Connect](https://openid.net/connect/), [OAUTH 2.0](https://oauth.net/2/) and [SAML 2.0](https://en.wikipedia.org/wiki/SAML_2.0).
@ -300,7 +300,7 @@ When upgrading from a previous release, please be aware of the following incompa
Regarding the NixOS module, new options for HTTPS inspection have been added and `services.privoxy.extraConfig` has been replaced by the new [services.privoxy.settings](options.html#opt-services.privoxy.settings) (See [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) for the motivation). Regarding the NixOS module, new options for HTTPS inspection have been added and `services.privoxy.extraConfig` has been replaced by the new [services.privoxy.settings](options.html#opt-services.privoxy.settings) (See [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) for the motivation).
- [Kodi](https://kodi.tv/) has been updated to version 19.1 \"Matrix\". See the [announcement](https://kodi.tv/article/kodi-190-matrix-release) for further details. - [Kodi](https://kodi.tv/) has been updated to version 19.1 \"Matrix\". See the [announcement](https://kodi.tv/article/kodi-19-0-matrix-release) for further details.
- The `services.packagekit.backend` option has been removed as it only supported a single setting which would always be the default. Instead new [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) compliant [services.packagekit.settings](options.html#opt-services.packagekit.settings) and [services.packagekit.vendorSettings](options.html#opt-services.packagekit.vendorSettings) options have been introduced. - The `services.packagekit.backend` option has been removed as it only supported a single setting which would always be the default. Instead new [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) compliant [services.packagekit.settings](options.html#opt-services.packagekit.settings) and [services.packagekit.vendorSettings](options.html#opt-services.packagekit.vendorSettings) options have been introduced.

View file

@ -10,6 +10,8 @@ In addition to numerous new and upgraded packages, this release has the followin
## New Services {#sec-release-21.11-new-services} ## New Services {#sec-release-21.11-new-services}
- [btrbk](https://digint.ch/btrbk/index.html), a backup tool for btrfs subvolumes, taking advantage of btrfs specific capabilities to create atomic snapshots and transfer them incrementally to your backup locations. Available as [services.btrbk](options.html#opt-services.brtbk.instances).
- [geoipupdate](https://github.com/maxmind/geoipupdate), a GeoIP database updater from MaxMind. Available as [services.geoipupdate](options.html#opt-services.geoipupdate.enable). - [geoipupdate](https://github.com/maxmind/geoipupdate), a GeoIP database updater from MaxMind. Available as [services.geoipupdate](options.html#opt-services.geoipupdate.enable).
- [sourcehut](https://sr.ht), a collection of tools useful for software development. Available as [services.sourcehut](options.html#opt-services.sourcehut.enable). - [sourcehut](https://sr.ht), a collection of tools useful for software development. Available as [services.sourcehut](options.html#opt-services.sourcehut.enable).
@ -20,7 +22,7 @@ In addition to numerous new and upgraded packages, this release has the followin
## Backward Incompatibilities {#sec-release-21.11-incompatibilities} ## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
- The `staticjinja` package has been upgraded from 1.0.4 to 2.0.0 - The `staticjinja` package has been upgraded from 1.0.4 to 3.0.1
- `services.geoip-updater` was broken and has been replaced by [services.geoipupdate](options.html#opt-services.geoipupdate.enable). - `services.geoip-updater` was broken and has been replaced by [services.geoipupdate](options.html#opt-services.geoipupdate.enable).
@ -85,6 +87,32 @@ In addition to numerous new and upgraded packages, this release has the followin
* The `libwnck` package now defaults to the 3.x release instead of the * The `libwnck` package now defaults to the 3.x release instead of the
old 2.31.0 version. old 2.31.0 version.
* The `bitwarden_rs` packages and modules were renamed to `vaultwarden`
[following upstream](https://github.com/dani-garcia/vaultwarden/discussions/1642). More specifically,
* `pkgs.bitwarden_rs`, `pkgs.bitwarden_rs-sqlite`, `pkgs.bitwarden_rs-mysql` and
`pkgs.bitwarden_rs-postgresql` were renamed to `pkgs.vaultwarden`, `pkgs.vaultwarden-sqlite`,
`pkgs.vaultwarden-mysql` and `pkgs.vaultwarden-postgresql`, respectively.
* Old names are preserved as aliases for backwards compatibility, but may be removed in the future.
* The `bitwarden_rs` executable was also renamed to `vaultwarden` in all packages.
* `pkgs.bitwarden_rs-vault` was renamed to `pkgs.vaultwarden-vault`.
* `pkgs.bitwarden_rs-vault` is preserved as an alias for backwards compatibility, but may be removed in the future.
* The static files were moved from `/usr/share/bitwarden_rs` to `/usr/share/vaultwarden`.
* The `services.bitwarden_rs` config module was renamed to `services.vaultwarden`.
* `services.bitwarden_rs` is preserved as an alias for backwards compatibility, but may be removed in the future.
* `systemd.services.bitwarden_rs`, `systemd.services.backup-bitwarden_rs` and `systemd.timers.backup-bitwarden_rs`
were renamed to `systemd.services.vaultwarden`, `systemd.services.backup-vaultwarden` and
`systemd.timers.backup-vaultwarden`, respectively.
* Old names are preserved as aliases for backwards compatibility, but may be removed in the future.
* `users.users.bitwarden_rs` and `users.groups.bitwarden_rs` were renamed to `users.users.vaultwarden` and
`users.groups.vaultwarden`, respectively.
* The data directory remains located at `/var/lib/bitwarden_rs`, for backwards compatibility.
## Other Notable Changes {#sec-release-21.11-notable-changes} ## Other Notable Changes {#sec-release-21.11-notable-changes}
- The setting [`services.openssh.logLevel`](options.html#opt-services.openssh.logLevel) `"VERBOSE"` `"INFO"`. This brings NixOS in line with upstream and other Linux distributions, and reduces log spam on servers due to bruteforcing botnets. - The setting [`services.openssh.logLevel`](options.html#opt-services.openssh.logLevel) `"VERBOSE"` `"INFO"`. This brings NixOS in line with upstream and other Linux distributions, and reduces log spam on servers due to bruteforcing botnets.

View file

@ -30,5 +30,16 @@ with lib;
# Add Memtest86+ to the CD. # Add Memtest86+ to the CD.
boot.loader.grub.memtest86.enable = true; boot.loader.grub.memtest86.enable = true;
boot.postBootCommands = ''
for o in $(</proc/cmdline); do
case "$o" in
live.nixos.passwd=*)
set -- $(IFS==; echo $o)
echo "nixos:$2" | ${pkgs.shadow}/bin/chpasswd
;;
esac
done
'';
system.stateVersion = mkDefault "18.03"; system.stateVersion = mkDefault "18.03";
} }

View file

@ -260,6 +260,7 @@
./services/backup/bacula.nix ./services/backup/bacula.nix
./services/backup/borgbackup.nix ./services/backup/borgbackup.nix
./services/backup/borgmatic.nix ./services/backup/borgmatic.nix
./services/backup/btrbk.nix
./services/backup/duplicati.nix ./services/backup/duplicati.nix
./services/backup/duplicity.nix ./services/backup/duplicity.nix
./services/backup/mysql-backup.nix ./services/backup/mysql-backup.nix
@ -874,7 +875,6 @@
./services/search/hound.nix ./services/search/hound.nix
./services/search/kibana.nix ./services/search/kibana.nix
./services/search/solr.nix ./services/search/solr.nix
./services/security/bitwarden_rs/default.nix
./services/security/certmgr.nix ./services/security/certmgr.nix
./services/security/cfssl.nix ./services/security/cfssl.nix
./services/security/clamav.nix ./services/security/clamav.nix
@ -900,6 +900,7 @@
./services/security/torsocks.nix ./services/security/torsocks.nix
./services/security/usbguard.nix ./services/security/usbguard.nix
./services/security/vault.nix ./services/security/vault.nix
./services/security/vaultwarden/default.nix
./services/security/yubikey-agent.nix ./services/security/yubikey-agent.nix
./services/system/cloud-init.nix ./services/system/cloud-init.nix
./services/system/dbus.nix ./services/system/dbus.nix

View file

@ -0,0 +1,220 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.btrbk;
sshEnabled = cfg.sshAccess != [ ];
serviceEnabled = cfg.instances != { };
attr2Lines = attr:
let
pairs = lib.attrsets.mapAttrsToList (name: value: { inherit name value; }) attr;
isSubsection = value:
if builtins.isAttrs value then true
else if builtins.isString value then false
else throw "invalid type in btrbk config ${builtins.typeOf value}";
sortedPairs = lib.lists.partition (x: isSubsection x.value) pairs;
in
lib.flatten (
# non subsections go first
(
map (pair: [ "${pair.name} ${pair.value}" ]) sortedPairs.wrong
)
++ # subsections go last
(
map
(
pair:
lib.mapAttrsToList
(
childname: value:
[ "${pair.name} ${childname}" ] ++ (map (x: " " + x) (attr2Lines value))
)
pair.value
)
sortedPairs.right
)
)
;
addDefaults = settings: { backend = "btrfs-progs-sudo"; } // settings;
mkConfigFile = settings: lib.concatStringsSep "\n" (attr2Lines (addDefaults settings));
mkTestedConfigFile = name: settings:
let
configFile = pkgs.writeText "btrbk-${name}.conf" (mkConfigFile settings);
in
pkgs.runCommand "btrbk-${name}-tested.conf" { } ''
mkdir foo
cp ${configFile} $out
if (set +o pipefail; ${pkgs.btrbk}/bin/btrbk -c $out ls foo 2>&1 | grep $out);
then
echo btrbk configuration is invalid
cat $out
exit 1
fi;
'';
in
{
options = {
services.btrbk = {
extraPackages = lib.mkOption {
description = "Extra packages for btrbk, like compression utilities for <literal>stream_compress</literal>";
type = lib.types.listOf lib.types.package;
default = [ ];
example = lib.literalExample "[ pkgs.xz ]";
};
niceness = lib.mkOption {
description = "Niceness for local instances of btrbk. Also applies to remote ones connecting via ssh when positive.";
type = lib.types.ints.between (-20) 19;
default = 10;
};
ioSchedulingClass = lib.mkOption {
description = "IO scheduling class for btrbk (see ionice(1) for a quick description). Applies to local instances, and remote ones connecting by ssh if set to idle.";
type = lib.types.enum [ "idle" "best-effort" "realtime" ];
default = "best-effort";
};
instances = lib.mkOption {
description = "Set of btrbk instances. The instance named <literal>btrbk</literal> is the default one.";
type = with lib.types;
attrsOf (
submodule {
options = {
onCalendar = lib.mkOption {
type = lib.types.str;
default = "daily";
description = "How often this btrbk instance is started. See systemd.time(7) for more information about the format.";
};
settings = lib.mkOption {
type = let t = lib.types.attrsOf (lib.types.either lib.types.str (t // { description = "instances of this type recursively"; })); in t;
default = { };
example = {
snapshot_preserve_min = "2d";
snapshot_preserve = "14d";
volume = {
"/mnt/btr_pool" = {
target = "/mnt/btr_backup/mylaptop";
subvolume = {
"rootfs" = { };
"home" = { snapshot_create = "always"; };
};
};
};
};
description = "configuration options for btrbk. Nested attrsets translate to subsections.";
};
};
}
);
default = { };
};
sshAccess = lib.mkOption {
description = "SSH keys that should be able to make or push snapshots on this system remotely with btrbk";
type = with lib.types; listOf (
submodule {
options = {
key = lib.mkOption {
type = str;
description = "SSH public key allowed to login as user <literal>btrbk</literal> to run remote backups.";
};
roles = lib.mkOption {
type = listOf (enum [ "info" "source" "target" "delete" "snapshot" "send" "receive" ]);
example = [ "source" "info" "send" ];
description = "What actions can be performed with this SSH key. See ssh_filter_btrbk(1) for details";
};
};
}
);
default = [ ];
};
};
};
config = lib.mkIf (sshEnabled || serviceEnabled) {
environment.systemPackages = [ pkgs.btrbk ] ++ cfg.extraPackages;
security.sudo.extraRules = [
{
users = [ "btrbk" ];
commands = [
{ command = "${pkgs.btrfs-progs}/bin/btrfs"; options = [ "NOPASSWD" ]; }
{ command = "${pkgs.coreutils}/bin/mkdir"; options = [ "NOPASSWD" ]; }
{ command = "${pkgs.coreutils}/bin/readlink"; options = [ "NOPASSWD" ]; }
# for ssh, they are not the same than the one hard coded in ${pkgs.btrbk}
{ command = "/run/current-system/bin/btrfs"; options = [ "NOPASSWD" ]; }
{ command = "/run/current-system/sw/bin/mkdir"; options = [ "NOPASSWD" ]; }
{ command = "/run/current-system/sw/bin/readlink"; options = [ "NOPASSWD" ]; }
];
}
];
users.users.btrbk = {
isSystemUser = true;
# ssh needs a home directory
home = "/var/lib/btrbk";
createHome = true;
shell = "${pkgs.bash}/bin/bash";
group = "btrbk";
openssh.authorizedKeys.keys = map
(
v:
let
options = lib.concatMapStringsSep " " (x: "--" + x) v.roles;
ioniceClass = {
"idle" = 3;
"best-effort" = 2;
"realtime" = 1;
}.${cfg.ioSchedulingClass};
in
''command="${pkgs.util-linux}/bin/ionice -t -c ${toString ioniceClass} ${lib.optionalString (cfg.niceness >= 1) "${pkgs.coreutils}/bin/nice -n ${toString cfg.niceness}"} ${pkgs.btrbk}/share/btrbk/scripts/ssh_filter_btrbk.sh --sudo ${options}" ${v.key}''
)
cfg.sshAccess;
};
users.groups.btrbk = { };
systemd.tmpfiles.rules = [
"d /var/lib/btrbk 0750 btrbk btrbk"
"d /var/lib/btrbk/.ssh 0700 btrbk btrbk"
"f /var/lib/btrbk/.ssh/config 0700 btrbk btrbk - StrictHostKeyChecking=accept-new"
];
environment.etc = lib.mapAttrs'
(
name: instance: {
name = "btrbk/${name}.conf";
value.source = mkTestedConfigFile name instance.settings;
}
)
cfg.instances;
systemd.services = lib.mapAttrs'
(
name: _: {
name = "btrbk-${name}";
value = {
description = "Takes BTRFS snapshots and maintains retention policies.";
unitConfig.Documentation = "man:btrbk(1)";
path = [ "/run/wrappers" ] ++ cfg.extraPackages;
serviceConfig = {
User = "btrbk";
Group = "btrbk";
Type = "oneshot";
ExecStart = "${pkgs.btrbk}/bin/btrbk -c /etc/btrbk/${name}.conf run";
Nice = cfg.niceness;
IOSchedulingClass = cfg.ioSchedulingClass;
StateDirectory = "btrbk";
};
};
}
)
cfg.instances;
systemd.timers = lib.mapAttrs'
(
name: instance: {
name = "btrbk-${name}";
value = {
description = "Timer to take BTRFS snapshots and maintain retention policies.";
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = instance.onCalendar;
AccuracySec = "10min";
Persistent = true;
};
};
}
)
cfg.instances;
};
}

View file

@ -16,6 +16,7 @@ ${lib.optionalString cfg.lt-cred-mech "lt-cred-mech"}
${lib.optionalString cfg.no-auth "no-auth"} ${lib.optionalString cfg.no-auth "no-auth"}
${lib.optionalString cfg.use-auth-secret "use-auth-secret"} ${lib.optionalString cfg.use-auth-secret "use-auth-secret"}
${lib.optionalString (cfg.static-auth-secret != null) ("static-auth-secret=${cfg.static-auth-secret}")} ${lib.optionalString (cfg.static-auth-secret != null) ("static-auth-secret=${cfg.static-auth-secret}")}
${lib.optionalString (cfg.static-auth-secret-file != null) ("static-auth-secret=#static-auth-secret#")}
realm=${cfg.realm} realm=${cfg.realm}
${lib.optionalString cfg.no-udp "no-udp"} ${lib.optionalString cfg.no-udp "no-udp"}
${lib.optionalString cfg.no-tcp "no-tcp"} ${lib.optionalString cfg.no-tcp "no-tcp"}
@ -182,6 +183,13 @@ in {
by a separate program, so this is why that other mode is 'dynamic'. by a separate program, so this is why that other mode is 'dynamic'.
''; '';
}; };
static-auth-secret-file = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Path to the file containing the static authentication secret.
'';
};
realm = mkOption { realm = mkOption {
type = types.str; type = types.str;
default = config.networking.hostName; default = config.networking.hostName;
@ -293,42 +301,63 @@ in {
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable (mkMerge ([
users.users.turnserver = { assertions = [
{ uid = config.ids.uids.turnserver; { assertion = cfg.static-auth-secret != null -> cfg.static-auth-secret-file == null ;
description = "coturn TURN server user"; message = "static-auth-secret and static-auth-secret-file cannot be set at the same time";
}; }
users.groups.turnserver = ];}
{ gid = config.ids.gids.turnserver;
members = [ "turnserver" ];
};
systemd.services.coturn = { {
description = "coturn TURN server"; users.users.turnserver =
after = [ "network-online.target" ]; { uid = config.ids.uids.turnserver;
wants = [ "network-online.target" ]; description = "coturn TURN server user";
wantedBy = [ "multi-user.target" ]; };
users.groups.turnserver =
{ gid = config.ids.gids.turnserver;
members = [ "turnserver" ];
};
unitConfig = { systemd.services.coturn = let
Documentation = "man:coturn(1) man:turnadmin(1) man:turnserver(1)"; runConfig = "/run/coturn/turnserver.cfg";
}; in {
description = "coturn TURN server";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = { unitConfig = {
Type = "simple"; Documentation = "man:coturn(1) man:turnadmin(1) man:turnserver(1)";
ExecStart = "${pkgs.coturn}/bin/turnserver -c ${configFile}"; };
RuntimeDirectory = "turnserver";
User = "turnserver"; preStart = ''
Group = "turnserver"; cat ${configFile} > ${runConfig}
AmbientCapabilities = ${optionalString (cfg.static-auth-secret-file != null) ''
mkIf ( STATIC_AUTH_SECRET="$(head -n1 ${cfg.static-auth-secret-file} || :)"
cfg.listening-port < 1024 || sed -e "s,#static-auth-secret#,$STATIC_AUTH_SECRET,g" \
cfg.alt-listening-port < 1024 || -i ${runConfig}
cfg.tls-listening-port < 1024 || '' }
cfg.alt-tls-listening-port < 1024 || chmod 640 ${runConfig}
cfg.min-port < 1024 '';
) "cap_net_bind_service"; serviceConfig = {
Restart = "on-abort"; Type = "simple";
ExecStart = "${pkgs.coturn}/bin/turnserver -c ${runConfig}";
RuntimeDirectory = "turnserver";
User = "turnserver";
Group = "turnserver";
AmbientCapabilities =
mkIf (
cfg.listening-port < 1024 ||
cfg.alt-listening-port < 1024 ||
cfg.tls-listening-port < 1024 ||
cfg.alt-tls-listening-port < 1024 ||
cfg.min-port < 1024
) "cap_net_bind_service";
Restart = "on-abort";
};
}; };
}; systemd.tmpfiles.rules = [
}; "d /run/coturn 0700 turnserver turnserver - -"
];
}]));
} }

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Based on: https://github.com/dani-garcia/bitwarden_rs/wiki/Backing-up-your-vault # Based on: https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault
if ! mkdir -p "$BACKUP_FOLDER"; then if ! mkdir -p "$BACKUP_FOLDER"; then
echo "Could not create backup folder '$BACKUP_FOLDER'" >&2 echo "Could not create backup folder '$BACKUP_FOLDER'" >&2
exit 1 exit 1

View file

@ -3,9 +3,9 @@
with lib; with lib;
let let
cfg = config.services.bitwarden_rs; cfg = config.services.vaultwarden;
user = config.users.users.bitwarden_rs.name; user = config.users.users.vaultwarden.name;
group = config.users.groups.bitwarden_rs.name; group = config.users.groups.vaultwarden.name;
# Convert name from camel case (e.g. disable2FARemember) to upper case snake case (e.g. DISABLE_2FA_REMEMBER). # Convert name from camel case (e.g. disable2FARemember) to upper case snake case (e.g. DISABLE_2FA_REMEMBER).
nameToEnvVar = name: nameToEnvVar = name:
@ -26,22 +26,26 @@ let
if value != null then [ (nameValuePair (nameToEnvVar name) (if isBool value then boolToString value else toString value)) ] else [] if value != null then [ (nameValuePair (nameToEnvVar name) (if isBool value then boolToString value else toString value)) ] else []
) cfg.config)); ) cfg.config));
in { DATA_FOLDER = "/var/lib/bitwarden_rs"; } // optionalAttrs (!(configEnv ? WEB_VAULT_ENABLED) || configEnv.WEB_VAULT_ENABLED == "true") { in { DATA_FOLDER = "/var/lib/bitwarden_rs"; } // optionalAttrs (!(configEnv ? WEB_VAULT_ENABLED) || configEnv.WEB_VAULT_ENABLED == "true") {
WEB_VAULT_FOLDER = "${pkgs.bitwarden_rs-vault}/share/bitwarden_rs/vault"; WEB_VAULT_FOLDER = "${pkgs.vaultwarden-vault}/share/vaultwarden/vault";
} // configEnv; } // configEnv;
configFile = pkgs.writeText "bitwarden_rs.env" (concatStrings (mapAttrsToList (name: value: "${name}=${value}\n") configEnv)); configFile = pkgs.writeText "vaultwarden.env" (concatStrings (mapAttrsToList (name: value: "${name}=${value}\n") configEnv));
bitwarden_rs = pkgs.bitwarden_rs.override { inherit (cfg) dbBackend; }; vaultwarden = pkgs.vaultwarden.override { inherit (cfg) dbBackend; };
in { in {
options.services.bitwarden_rs = with types; { imports = [
enable = mkEnableOption "bitwarden_rs"; (mkRenamedOptionModule [ "services" "bitwarden_rs" ] [ "services" "vaultwarden" ])
];
options.services.vaultwarden = with types; {
enable = mkEnableOption "vaultwarden";
dbBackend = mkOption { dbBackend = mkOption {
type = enum [ "sqlite" "mysql" "postgresql" ]; type = enum [ "sqlite" "mysql" "postgresql" ];
default = "sqlite"; default = "sqlite";
description = '' description = ''
Which database backend bitwarden_rs will be using. Which database backend vaultwarden will be using.
''; '';
}; };
@ -49,7 +53,7 @@ in {
type = nullOr str; type = nullOr str;
default = null; default = null;
description = '' description = ''
The directory under which bitwarden_rs will backup its persistent data. The directory under which vaultwarden will backup its persistent data.
''; '';
}; };
@ -65,7 +69,7 @@ in {
} }
''; '';
description = '' description = ''
The configuration of bitwarden_rs is done through environment variables, The configuration of vaultwarden is done through environment variables,
therefore the names are converted from camel case (e.g. disable2FARemember) therefore the names are converted from camel case (e.g. disable2FARemember)
to upper case snake case (e.g. DISABLE_2FA_REMEMBER). to upper case snake case (e.g. DISABLE_2FA_REMEMBER).
In this conversion digits (0-9) are handled just like upper case characters, In this conversion digits (0-9) are handled just like upper case characters,
@ -75,17 +79,17 @@ in {
This allows working around any potential future conflicting naming conventions. This allows working around any potential future conflicting naming conventions.
Based on the attributes passed to this config option an environment file will be generated Based on the attributes passed to this config option an environment file will be generated
that is passed to bitwarden_rs's systemd service. that is passed to vaultwarden's systemd service.
The available configuration options can be found in The available configuration options can be found in
<link xlink:href="https://github.com/dani-garcia/bitwarden_rs/blob/${bitwarden_rs.version}/.env.template">the environment template file</link>. <link xlink:href="https://github.com/dani-garcia/vaultwarden/blob/${vaultwarden.version}/.env.template">the environment template file</link>.
''; '';
}; };
environmentFile = mkOption { environmentFile = mkOption {
type = with types; nullOr path; type = with types; nullOr path;
default = null; default = null;
example = "/root/bitwarden_rs.env"; example = "/root/vaultwarden.env";
description = '' description = ''
Additional environment file as defined in <citerefentry> Additional environment file as defined in <citerefentry>
<refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum> <refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum>
@ -95,7 +99,7 @@ in {
may be passed to the service without adding them to the world-readable Nix store. may be passed to the service without adding them to the world-readable Nix store.
Note that this file needs to be available on the host on which Note that this file needs to be available on the host on which
<literal>bitwarden_rs</literal> is running. <literal>vaultwarden</literal> is running.
''; '';
}; };
}; };
@ -106,20 +110,21 @@ in {
message = "Backups for database backends other than sqlite will need customization"; message = "Backups for database backends other than sqlite will need customization";
} ]; } ];
users.users.bitwarden_rs = { users.users.vaultwarden = {
inherit group; inherit group;
isSystemUser = true; isSystemUser = true;
}; };
users.groups.bitwarden_rs = { }; users.groups.vaultwarden = { };
systemd.services.bitwarden_rs = { systemd.services.vaultwarden = {
aliases = [ "bitwarden_rs" ];
after = [ "network.target" ]; after = [ "network.target" ];
path = with pkgs; [ openssl ]; path = with pkgs; [ openssl ];
serviceConfig = { serviceConfig = {
User = user; User = user;
Group = group; Group = group;
EnvironmentFile = [ configFile ] ++ optional (cfg.environmentFile != null) cfg.environmentFile; EnvironmentFile = [ configFile ] ++ optional (cfg.environmentFile != null) cfg.environmentFile;
ExecStart = "${bitwarden_rs}/bin/bitwarden_rs"; ExecStart = "${vaultwarden}/bin/vaultwarden";
LimitNOFILE = "1048576"; LimitNOFILE = "1048576";
PrivateTmp = "true"; PrivateTmp = "true";
PrivateDevices = "true"; PrivateDevices = "true";
@ -131,15 +136,16 @@ in {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };
systemd.services.backup-bitwarden_rs = mkIf (cfg.backupDir != null) { systemd.services.backup-vaultwarden = mkIf (cfg.backupDir != null) {
description = "Backup bitwarden_rs"; aliases = [ "backup-bitwarden_rs" ];
description = "Backup vaultwarden";
environment = { environment = {
DATA_FOLDER = "/var/lib/bitwarden_rs"; DATA_FOLDER = "/var/lib/bitwarden_rs";
BACKUP_FOLDER = cfg.backupDir; BACKUP_FOLDER = cfg.backupDir;
}; };
path = with pkgs; [ sqlite ]; path = with pkgs; [ sqlite ];
serviceConfig = { serviceConfig = {
SyslogIdentifier = "backup-bitwarden_rs"; SyslogIdentifier = "backup-vaultwarden";
Type = "oneshot"; Type = "oneshot";
User = mkDefault user; User = mkDefault user;
Group = mkDefault group; Group = mkDefault group;
@ -148,12 +154,13 @@ in {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };
systemd.timers.backup-bitwarden_rs = mkIf (cfg.backupDir != null) { systemd.timers.backup-vaultwarden = mkIf (cfg.backupDir != null) {
description = "Backup bitwarden_rs on time"; aliases = [ "backup-bitwarden_rs" ];
description = "Backup vaultwarden on time";
timerConfig = { timerConfig = {
OnCalendar = mkDefault "23:00"; OnCalendar = mkDefault "23:00";
Persistent = "true"; Persistent = "true";
Unit = "backup-bitwarden_rs.service"; Unit = "backup-vaultwarden.service";
}; };
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };

View file

@ -13,7 +13,7 @@ let
# !!! fix this # !!! fix this
children = mapAttrs (childName: childConfig: children = mapAttrs (childName: childConfig:
(import ../../../lib/eval-config.nix { (import ../../../lib/eval-config.nix {
inherit baseModules specialArgs; inherit lib baseModules specialArgs;
system = config.nixpkgs.initialSystem; system = config.nixpkgs.initialSystem;
modules = modules =
(optionals childConfig.inheritParentConfig modules) (optionals childConfig.inheritParentConfig modules)

View file

@ -42,12 +42,12 @@ in
bind = handleTest ./bind.nix {}; bind = handleTest ./bind.nix {};
bitcoind = handleTest ./bitcoind.nix {}; bitcoind = handleTest ./bitcoind.nix {};
bittorrent = handleTest ./bittorrent.nix {}; bittorrent = handleTest ./bittorrent.nix {};
bitwarden = handleTest ./bitwarden.nix {};
blockbook-frontend = handleTest ./blockbook-frontend.nix {}; blockbook-frontend = handleTest ./blockbook-frontend.nix {};
boot = handleTestOn ["x86_64-linux"] ./boot.nix {}; # syslinux is unsupported on aarch64 boot = handleTestOn ["x86_64-linux"] ./boot.nix {}; # syslinux is unsupported on aarch64
boot-stage1 = handleTest ./boot-stage1.nix {}; boot-stage1 = handleTest ./boot-stage1.nix {};
borgbackup = handleTest ./borgbackup.nix {}; borgbackup = handleTest ./borgbackup.nix {};
botamusique = handleTest ./botamusique.nix {}; botamusique = handleTest ./botamusique.nix {};
btrbk = handleTest ./btrbk.nix {};
buildbot = handleTest ./buildbot.nix {}; buildbot = handleTest ./buildbot.nix {};
buildkite-agents = handleTest ./buildkite-agents.nix {}; buildkite-agents = handleTest ./buildkite-agents.nix {};
caddy = handleTest ./caddy.nix {}; caddy = handleTest ./caddy.nix {};
@ -88,6 +88,7 @@ in
containers-tmpfs = handleTest ./containers-tmpfs.nix {}; containers-tmpfs = handleTest ./containers-tmpfs.nix {};
convos = handleTest ./convos.nix {}; convos = handleTest ./convos.nix {};
corerad = handleTest ./corerad.nix {}; corerad = handleTest ./corerad.nix {};
coturn = handleTest ./coturn.nix {};
couchdb = handleTest ./couchdb.nix {}; couchdb = handleTest ./couchdb.nix {};
cri-o = handleTestOn ["x86_64-linux"] ./cri-o.nix {}; cri-o = handleTestOn ["x86_64-linux"] ./cri-o.nix {};
custom-ca = handleTest ./custom-ca.nix {}; custom-ca = handleTest ./custom-ca.nix {};
@ -446,6 +447,7 @@ in
v2ray = handleTest ./v2ray.nix {}; v2ray = handleTest ./v2ray.nix {};
vault = handleTest ./vault.nix {}; vault = handleTest ./vault.nix {};
vault-postgresql = handleTest ./vault-postgresql.nix {}; vault-postgresql = handleTest ./vault-postgresql.nix {};
vaultwarden = handleTest ./vaultwarden.nix {};
vector = handleTest ./vector.nix {}; vector = handleTest ./vector.nix {};
victoriametrics = handleTest ./victoriametrics.nix {}; victoriametrics = handleTest ./victoriametrics.nix {};
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {}; virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};

View file

@ -0,0 +1,110 @@
import ./make-test-python.nix ({ pkgs, ... }:
let
privateKey = ''
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACBx8UB04Q6Q/fwDFjakHq904PYFzG9pU2TJ9KXpaPMcrwAAAJB+cF5HfnBe
RwAAAAtzc2gtZWQyNTUxOQAAACBx8UB04Q6Q/fwDFjakHq904PYFzG9pU2TJ9KXpaPMcrw
AAAEBN75NsJZSpt63faCuaD75Unko0JjlSDxMhYHAPJk2/xXHxQHThDpD9/AMWNqQer3Tg
9gXMb2lTZMn0pelo8xyvAAAADXJzY2h1ZXR6QGt1cnQ=
-----END OPENSSH PRIVATE KEY-----
'';
publicKey = ''
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHHxQHThDpD9/AMWNqQer3Tg9gXMb2lTZMn0pelo8xyv
'';
in
{
name = "btrbk";
meta = with pkgs.lib; {
maintainers = with maintainers; [ symphorien ];
};
nodes = {
archive = { ... }: {
environment.systemPackages = with pkgs; [ btrfs-progs ];
# note: this makes the privateKey world readable.
# don't do it with real ssh keys.
environment.etc."btrbk_key".text = privateKey;
services.btrbk = {
extraPackages = [ pkgs.lz4 ];
instances = {
remote = {
onCalendar = "minutely";
settings = {
ssh_identity = "/etc/btrbk_key";
ssh_user = "btrbk";
stream_compress = "lz4";
volume = {
"ssh://main/mnt" = {
target = "/mnt";
snapshot_dir = "btrbk/remote";
subvolume = "to_backup";
};
};
};
};
};
};
};
main = { ... }: {
environment.systemPackages = with pkgs; [ btrfs-progs ];
services.openssh = {
enable = true;
passwordAuthentication = false;
challengeResponseAuthentication = false;
};
services.btrbk = {
extraPackages = [ pkgs.lz4 ];
sshAccess = [
{
key = publicKey;
roles = [ "source" "send" "info" "delete" ];
}
];
instances = {
local = {
onCalendar = "minutely";
settings = {
volume = {
"/mnt" = {
snapshot_dir = "btrbk/local";
subvolume = "to_backup";
};
};
};
};
};
};
};
};
testScript = ''
start_all()
# create btrfs partition at /mnt
for machine in (archive, main):
machine.succeed("dd if=/dev/zero of=/data_fs bs=120M count=1")
machine.succeed("mkfs.btrfs /data_fs")
machine.succeed("mkdir /mnt")
machine.succeed("mount /data_fs /mnt")
# what to backup and where
main.succeed("btrfs subvolume create /mnt/to_backup")
main.succeed("mkdir -p /mnt/btrbk/{local,remote}")
# check that local snapshots work
with subtest("local"):
main.succeed("echo foo > /mnt/to_backup/bar")
main.wait_until_succeeds("cat /mnt/btrbk/local/*/bar | grep foo")
main.succeed("echo bar > /mnt/to_backup/bar")
main.succeed("cat /mnt/btrbk/local/*/bar | grep foo")
# check that btrfs send/receive works and ssh access works
with subtest("remote"):
archive.wait_until_succeeds("cat /mnt/*/bar | grep bar")
main.succeed("echo baz > /mnt/to_backup/bar")
archive.succeed("cat /mnt/*/bar | grep bar")
'';
})

View file

@ -0,0 +1,29 @@
import ./make-test-python.nix ({ ... }: {
name = "coturn";
nodes = {
default = {
services.coturn.enable = true;
};
secretsfile = {
boot.postBootCommands = ''
echo "some-very-secret-string" > /run/coturn-secret
'';
services.coturn = {
enable = true;
static-auth-secret-file = "/run/coturn-secret";
};
};
};
testScript =
''
start_all()
with subtest("by default works without configuration"):
default.wait_for_unit("coturn.service")
with subtest("works with static-auth-secret-file"):
secretsfile.wait_for_unit("coturn.service")
secretsfile.succeed("grep 'some-very-secret-string' /run/coturn/turnserver.cfg")
'';
})

View file

@ -4,7 +4,7 @@
}: }:
# These tests will: # These tests will:
# * Set up a bitwarden-rs server # * Set up a vaultwarden server
# * Have Firefox use the web vault to create an account, log in, and save a password to the valut # * Have Firefox use the web vault to create an account, log in, and save a password to the valut
# * Have the bw cli log in and read that password from the vault # * Have the bw cli log in and read that password from the vault
# #
@ -24,8 +24,8 @@ let
storedPassword = "seeeecret"; storedPassword = "seeeecret";
makeBitwardenTest = backend: makeTest { makeVaultwardenTest = backend: makeTest {
name = "bitwarden_rs-${backend}"; name = "vaultwarden-${backend}";
meta = { meta = {
maintainers = with pkgs.lib.maintainers; [ jjjollyjim ]; maintainers = with pkgs.lib.maintainers; [ jjjollyjim ];
}; };
@ -45,9 +45,9 @@ let
package = pkgs.mariadb; package = pkgs.mariadb;
}; };
services.bitwarden_rs.config.databaseUrl = "mysql://bitwardenuser:${dbPassword}@localhost/bitwarden"; services.vaultwarden.config.databaseUrl = "mysql://bitwardenuser:${dbPassword}@localhost/bitwarden";
systemd.services.bitwarden_rs.after = [ "mysql.service" ]; systemd.services.vaultwarden.after = [ "mysql.service" ];
}; };
postgresql = { postgresql = {
@ -60,9 +60,9 @@ let
''; '';
}; };
services.bitwarden_rs.config.databaseUrl = "postgresql://bitwardenuser:${dbPassword}@localhost/bitwarden"; services.vaultwarden.config.databaseUrl = "postgresql://bitwardenuser:${dbPassword}@localhost/bitwarden";
systemd.services.bitwarden_rs.after = [ "postgresql.service" ]; systemd.services.vaultwarden.after = [ "postgresql.service" ];
}; };
sqlite = { }; sqlite = { };
@ -71,7 +71,7 @@ let
mkMerge [ mkMerge [
backendConfig.${backend} backendConfig.${backend}
{ {
services.bitwarden_rs = { services.vaultwarden = {
enable = true; enable = true;
dbBackend = backend; dbBackend = backend;
config.rocketPort = 80; config.rocketPort = 80;
@ -152,7 +152,7 @@ let
testScript = '' testScript = ''
start_all() start_all()
server.wait_for_unit("bitwarden_rs.service") server.wait_for_unit("vaultwarden.service")
server.wait_for_open_port(80) server.wait_for_open_port(80)
with subtest("configure the cli"): with subtest("configure the cli"):
@ -184,6 +184,6 @@ let
in in
builtins.listToAttrs ( builtins.listToAttrs (
map map
(backend: { name = backend; value = makeBitwardenTest backend; }) (backend: { name = backend; value = makeVaultwardenTest backend; })
backends backends
) )

View file

@ -40,7 +40,7 @@ pythonPackages.buildPythonApplication rec {
propagatedBuildInputs = with pythonPackages; [ propagatedBuildInputs = with pythonPackages; [
chromaprint chromaprint
dateutil python-dateutil
discid discid
fasteners fasteners
mutagen mutagen

View file

@ -1,8 +1,19 @@
{ ripgrep, git, fzf, makeWrapper, vim_configurable, vimPlugins, fetchFromGitHub { ripgrep
, lib, stdenv, formats, runCommand, spacevim_config ? import ./init.nix }: , git
, fzf
, makeWrapper
, vim_configurable
, vimPlugins
, fetchFromGitHub
, lib
, stdenv
, formats
, runCommand
, spacevim_config ? import ./init.nix
}:
let let
format = formats.toml {}; format = formats.toml { };
vim-customized = vim_configurable.customize { vim-customized = vim_configurable.customize {
name = "vim"; name = "vim";
# Not clear at the moment how to import plugins such that # Not clear at the moment how to import plugins such that
@ -14,17 +25,18 @@ let
mkdir -p $out mkdir -p $out
cp ${format.generate "init.toml" spacevim_config} $out/init.toml cp ${format.generate "init.toml" spacevim_config} $out/init.toml
''; '';
in stdenv.mkDerivation rec { in
stdenv.mkDerivation rec {
pname = "spacevim"; pname = "spacevim";
version = "1.6.0"; version = "1.7.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "SpaceVim"; owner = "SpaceVim";
repo = "SpaceVim"; repo = "SpaceVim";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-QQdtjEdbuzmf0Rw+u2ZltLihnJt8LqkfTrLDWLAnCLE="; sha256 = "sha256-TmfPeaGkH1Wq2b5lB29PUYDVddJVN3mBuPAmu9EtiGY=";
}; };
nativeBuildInputs = [ makeWrapper vim-customized]; nativeBuildInputs = [ makeWrapper vim-customized ];
buildInputs = [ vim-customized ]; buildInputs = [ vim-customized ];
buildPhase = '' buildPhase = ''

View file

@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
buildInputs = [ flex bison zlib proj gdal libtiff libpng fftw sqlite cairo proj buildInputs = [ flex bison zlib proj gdal libtiff libpng fftw sqlite cairo proj
readline ffmpeg_3 makeWrapper wxGTK30 netcdf geos postgresql libmysqlclient blas readline ffmpeg_3 makeWrapper wxGTK30 netcdf geos postgresql libmysqlclient blas
libLAS proj-datumgrid ] libLAS proj-datumgrid ]
++ (with python2Packages; [ python dateutil wxPython30 numpy ]); ++ (with python2Packages; [ python python-dateutil wxPython30 numpy ]);
# On Darwin the installer tries to symlink the help files into a system # On Darwin the installer tries to symlink the help files into a system
# directory # directory

View file

@ -12,7 +12,7 @@ let
numpy numpy
psycopg2 psycopg2
chardet chardet
dateutil python-dateutil
pyyaml pyyaml
pytz pytz
requests requests

View file

@ -7,12 +7,12 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "3.4.1"; version = "3.6.0";
pname = "darktable"; pname = "darktable";
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 = "sha256-f8P4UdqbzXxQU+zQnyGqPrYQO+mKbFj1IBC28iF0lB4="; sha256 = "sha256:0f8aqwkgw4gs97b5i4ygiqk5zilwq7ax7zwdd31r72zk98cd1g46";
}; };
nativeBuildInputs = [ cmake ninja llvm pkg-config intltool perl desktop-file-utils wrapGAppsHook ]; nativeBuildInputs = [ cmake ninja llvm pkg-config intltool perl desktop-file-utils wrapGAppsHook ];

View file

@ -91,7 +91,7 @@ stdenv.mkDerivation rec {
homepage = "https://about.draw.io/"; homepage = "https://about.draw.io/";
license = licenses.asl20; license = licenses.asl20;
changelog = "https://github.com/jgraph/drawio-desktop/releases/tag/v${version}"; changelog = "https://github.com/jgraph/drawio-desktop/releases/tag/v${version}";
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
} }

View file

@ -55,7 +55,7 @@ mkDerivationWith python3Packages.buildPythonApplication rec {
psutil psutil
pyxdg pyxdg
arrow arrow
dateutil python-dateutil
easygui easygui
colour colour
pymediainfo pymediainfo

View file

@ -107,7 +107,7 @@ stdenv.mkDerivation rec {
description = "Multi-platform password manager"; description = "Multi-platform password manager";
homepage = "https://1password.com/"; homepage = "https://1password.com/";
license = licenses.unfree; license = licenses.unfree;
maintainers = with maintainers; [ danieldk timstott savannidgerinel ]; maintainers = with maintainers; [ timstott savannidgerinel ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
} }

View file

@ -77,7 +77,7 @@ mkDerivation rec {
cchardet cchardet
css-parser css-parser
cssselect cssselect
dateutil python-dateutil
dnspython dnspython
feedparser feedparser
html2text html2text

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "curaengine"; pname = "curaengine";
version = "4.9.1"; version = "4.10.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Ultimaker"; owner = "Ultimaker";
repo = "CuraEngine"; repo = "CuraEngine";
rev = version; rev = version;
sha256 = "sha256-1hCjtnI1EnfyQ0QfU8qZoSLIjE5pyDYpu8H4J91cWYM="; sha256 = "sha256-t5i6s0KKcaoMqzDxZ6JL1NyKP33uxWdmyziK3xh8q88=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -20,7 +20,7 @@ buildPythonApplication rec {
''; '';
propagatedBuildInputs = [ propagatedBuildInputs = [
dateutil gflags httplib2 parsedatetime six vobject python-dateutil gflags httplib2 parsedatetime six vobject
google-api-python-client oauth2client uritemplate google-api-python-client oauth2client uritemplate
libnotify libnotify
]; ];

View file

@ -2,13 +2,13 @@
mkDerivation rec { mkDerivation rec {
pname = "gpxsee"; pname = "gpxsee";
version = "9.1"; version = "9.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tumic0"; owner = "tumic0";
repo = "GPXSee"; repo = "GPXSee";
rev = version; rev = version;
sha256 = "sha256-szq1i2/NEtMK4paSkxtkKXc8yY8qGj2U/p6CzNIecAY="; sha256 = "sha256-pU02Eaq6tB7X6EPOo8YAyryJRbSV3KebQv8VELxXaBw=";
}; };
patches = (substituteAll { patches = (substituteAll {

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "hugo"; pname = "hugo";
version = "0.84.3"; version = "0.84.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gohugoio"; owner = "gohugoio";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-3SbF4JsanNup0JmtEoZlyu3SvMn01r+nhnPgIi/W8pA="; sha256 = "sha256-nD2UBDSDG6OFfUvDBXCfhOCiJyFMP2pDXSlIESaEfqE=";
}; };
vendorSha256 = "sha256-ImXTOtN6kQL7Q8IBlmK7+i47cWtyZT0xcnQdCw3NvWM="; vendorSha256 = "sha256-ImXTOtN6kQL7Q8IBlmK7+i47cWtyZT0xcnQdCw3NvWM=";

View file

@ -18,7 +18,7 @@ with python3.pkgs; buildPythonApplication rec {
click click
click-log click-log
configobj configobj
dateutil python-dateutil
icalendar icalendar
lxml lxml
pkgs.vdirsyncer pkgs.vdirsyncer

View file

@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
homepage = "https://code-industry.net/free-pdf-editor/"; homepage = "https://code-industry.net/free-pdf-editor/";
license = licenses.unfreeRedistributable; license = licenses.unfreeRedistributable;
platforms = with platforms; [ "x86_64-linux" ]; platforms = with platforms; [ "x86_64-linux" ];
maintainers = with maintainers; [ cmcdragonkai flokli ]; broken = true;
maintainers = with maintainers; [ cmcdragonkai ];
}; };
} }

View file

@ -0,0 +1,36 @@
{ stdenv
, lib
, fetchFromGitHub
, cmake
, pkg-config
, gtk3
, wrapGAppsHook
, jansson
, libgcrypt
, libzip
, libpng
, libcotp
, zbar
}:
stdenv.mkDerivation rec {
pname = "otpclient";
version = "2.4.4";
src = fetchFromGitHub {
owner = "paolostivanin";
repo = pname;
rev = "v${version}";
sha256 = "0zjvhcx9q8nsf97zikddxriky0kghi4j4i7312s94pl8c7kb4abr";
};
buildInputs = [ gtk3 jansson libgcrypt libzip libpng libcotp zbar ];
nativeBuildInputs = [ cmake pkg-config wrapGAppsHook ];
meta = with lib; {
description = "Highly secure and easy to use OTP client written in C/GTK that supports both TOTP and HOTP";
homepage = "https://github.com/paolostivanin/OTPClient";
license = licenses.gpl3Only;
maintainers = with maintainers; [ alexbakker ];
};
}

View file

@ -29,7 +29,7 @@ python3Packages.buildPythonApplication rec {
pikepdf pikepdf
img2pdf img2pdf
setuptools setuptools
dateutil python-dateutil
]; ];
# incompatible with wrapGAppsHook # incompatible with wrapGAppsHook

View file

@ -5,13 +5,13 @@
}: }:
let let
version = "5.0.1"; version = "5.0.2";
subsurfaceSrc = (fetchFromGitHub { subsurfaceSrc = (fetchFromGitHub {
owner = "Subsurface"; owner = "Subsurface";
repo = "subsurface"; repo = "subsurface";
rev = "v${version}"; rev = "v${version}";
sha256 = "01r836ckvrmgprjf4cqxn2n3w5w4pa2fjrhspjndsspic8nwlrwg"; sha256 = "1yay06m8p9qp2ghrg8dxavdq55y09apcgdnb7rihgs3hq86k539n";
fetchSubmodules = true; fetchSubmodules = true;
}); });

View file

@ -3,7 +3,7 @@
, buildPythonApplication , buildPythonApplication
, click , click
, pyfiglet , pyfiglet
, dateutil , python-dateutil
, setuptools , setuptools
}: }:
@ -18,7 +18,7 @@ buildPythonApplication rec {
owner = "trehn"; owner = "trehn";
}; };
propagatedBuildInputs = [ dateutil click pyfiglet setuptools ]; propagatedBuildInputs = [ python-dateutil click pyfiglet setuptools ];
meta = with lib; { meta = with lib; {
description = "Starts a countdown to or from TIMESPEC"; description = "Starts a countdown to or from TIMESPEC";

View file

@ -2,7 +2,7 @@
, lib , lib
, buildPythonApplication , buildPythonApplication
, fetchFromGitHub , fetchFromGitHub
, dateutil , python-dateutil
, pandas , pandas
, requests , requests
, lxml , lxml
@ -36,7 +36,7 @@ buildPythonApplication rec {
propagatedBuildInputs = [ propagatedBuildInputs = [
# from visidata/requirements.txt # from visidata/requirements.txt
# packages not (yet) present in nixpkgs are commented # packages not (yet) present in nixpkgs are commented
dateutil python-dateutil
pandas pandas
requests requests
lxml lxml

View file

@ -1,4 +1,4 @@
{ lib, fetchurl, buildPythonApplication, dateutil, { lib, fetchurl, buildPythonApplication, python-dateutil,
sqlalchemy, setproctitle, icalendar }: sqlalchemy, setproctitle, icalendar }:
buildPythonApplication rec { buildPythonApplication rec {
@ -11,7 +11,7 @@ buildPythonApplication rec {
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [
dateutil python-dateutil
sqlalchemy sqlalchemy
setproctitle setproctitle
icalendar icalendar

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "3proxy"; pname = "3proxy";
version = "0.9.3"; version = "0.9.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "z3APA3A"; owner = "z3APA3A";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "9aopwyz0U2bYTvx5YWLJo9EE8Xfb51IOguHRJodjpm8="; sha256 = "sha256-4bLlQ/ULvpjs6fr19yBBln5mRRc+yj+zVLiTs1e/Ypc=";
}; };
makeFlags = [ makeFlags = [

View file

@ -90,11 +90,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "brave"; pname = "brave";
version = "1.26.67"; version = "1.26.74";
src = fetchurl { src = fetchurl {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
sha256 = "Kg6ExXZYdSkyBoivu9h4blytHN9hOc4bUSuFR+1YZOY="; sha256 = "ULmoUXyPWHCewK4FPP7SX1Ena6n0aM/EWR7ZnMN1ztY=";
}; };
dontConfigure = true; dontConfigure = true;

View file

@ -62,7 +62,7 @@ mkChromiumDerivation (base: rec {
-e '/\[Desktop Entry\]/a\' \ -e '/\[Desktop Entry\]/a\' \
-e 'StartupWMClass=chromium-browser' \ -e 'StartupWMClass=chromium-browser' \
$out/share/applications/chromium-browser.desktop $out/share/applications/chromium-browser.desktop
'' + lib.optionalString (channel == "dev") '' '' + lib.optionalString (channel != "stable") ''
cp -v "$buildPath/crashpad_handler" "$libExecPath/" cp -v "$buildPath/crashpad_handler" "$libExecPath/"
''; '';

View file

@ -9,7 +9,7 @@ python3.pkgs.buildPythonApplication rec {
sha256 = "b4b1ccf086586d041d7e91e68515d495c550f30e4d179d63863fea9ccdbb78eb"; sha256 = "b4b1ccf086586d041d7e91e68515d495c550f30e4d179d63863fea9ccdbb78eb";
}; };
propagatedBuildInputs = with python3.pkgs; [ dateutil tornado python-daemon boto3 ]; propagatedBuildInputs = with python3.pkgs; [ python-dateutil tornado python-daemon boto3 ];
# Requires tox, hadoop, and google cloud # Requires tox, hadoop, and google cloud
doCheck = false; doCheck = false;

View file

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "dnscontrol"; pname = "dnscontrol";
version = "3.10.0"; version = "3.10.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "StackExchange"; owner = "StackExchange";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-22wYc6W4a5P9+JW7NW+s85IlQ+tfLhYzDarN6PGkFk4="; sha256 = "sha256-fYQqH/J027XJPML/qKMpuu2Nxuvb0cyjOu2czLH8SoM=";
}; };
vendorSha256 = "sha256-TPvO/E/uOyVSMNRQ3zzt15+i0UK0uHvI4qM5PqmHY20="; vendorSha256 = "sha256-225TR9jTZSGEJZz3csl/pR/v2unUK67l08x5ESQTJzA=";
subPackages = [ "." ]; subPackages = [ "." ];

View file

@ -51,7 +51,7 @@ python3.pkgs.buildPythonApplication rec {
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [
beautifulsoup4 beautifulsoup4
dateutil python-dateutil
feedparser feedparser
html5lib html5lib
listparser listparser

View file

@ -46,7 +46,7 @@ python3Packages.buildPythonApplication rec {
pynzb pynzb
pyparsing pyparsing
PyRSS2Gen PyRSS2Gen
dateutil python-dateutil
pyyaml pyyaml
rebulk rebulk
requests requests

View file

@ -48,7 +48,7 @@ python3.pkgs.buildPythonApplication rec {
pythonPath = with python3.pkgs; [ pythonPath = with python3.pkgs; [
pygobject3 pygobject3
pycairo pycairo
dateutil python-dateutil
praw praw
pillow pillow
mistune mistune

View file

@ -55,7 +55,7 @@ in {
sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml"; sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml";
}; };
propagatedBuildInputs = with pythonPackages; [twisted dateutil]; propagatedBuildInputs = with pythonPackages; [twisted python-dateutil];
meta = with lib; { meta = with lib; {
description = "Some (mainly XMPP-related) additions to twisted"; description = "Some (mainly XMPP-related) additions to twisted";

View file

@ -1,7 +1,7 @@
{ mkDerivation, lib, fetchFromGitHub, callPackage { mkDerivation, lib, fetchFromGitHub, callPackage
, pkg-config, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook, removeReferencesTo , pkg-config, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook, removeReferencesTo
, qtbase, qtimageformats, gtk3, libsForQt5, enchant2, lz4, xxHash , qtbase, qtimageformats, gtk3, libsForQt5, lz4, xxHash
, dee, ffmpeg, openalSoft, minizip, libopus, alsa-lib, libpulseaudio, range-v3 , ffmpeg, openalSoft, minizip, libopus, alsa-lib, libpulseaudio, range-v3
, tl-expected, hunspell, glibmm, webkitgtk , tl-expected, hunspell, glibmm, webkitgtk
, libtgvoip, rnnoise, abseil-cpp, extra-cmake-modules , libtgvoip, rnnoise, abseil-cpp, extra-cmake-modules
# Transitive dependencies: # Transitive dependencies:
@ -23,7 +23,7 @@ let
tg_owt = callPackage ./tg_owt.nix {}; tg_owt = callPackage ./tg_owt.nix {};
in mkDerivation rec { in mkDerivation rec {
pname = "telegram-desktop"; pname = "telegram-desktop";
version = "2.8.3"; version = "2.8.4";
# Note: Update via pkgs/applications/networking/instant-messengers/telegram/tdesktop/update.py # Note: Update via pkgs/applications/networking/instant-messengers/telegram/tdesktop/update.py
# Telegram-Desktop with submodules # Telegram-Desktop with submodules
@ -32,12 +32,10 @@ in mkDerivation rec {
repo = "tdesktop"; repo = "tdesktop";
rev = "v${version}"; rev = "v${version}";
fetchSubmodules = true; fetchSubmodules = true;
sha256 = "1ywxsy3a99sdibipriblbzskmkqbnxwrz3lavfdr134wq8w8rjf7"; sha256 = "sha256-IN3GQgdNM66/GxKa5EGKB/LIkgBxS8Y4mkPBaSEphmw=";
}; };
postPatch = '' postPatch = ''
substituteInPlace Telegram/lib_spellcheck/spellcheck/platform/linux/linux_enchant.cpp \
--replace '"libenchant-2.so.2"' '"${enchant2}/lib/libenchant-2.so.2"'
substituteInPlace Telegram/CMakeLists.txt \ substituteInPlace Telegram/CMakeLists.txt \
--replace '"''${TDESKTOP_LAUNCHER_BASENAME}.appdata.xml"' '"''${TDESKTOP_LAUNCHER_BASENAME}.metainfo.xml"' --replace '"''${TDESKTOP_LAUNCHER_BASENAME}.appdata.xml"' '"''${TDESKTOP_LAUNCHER_BASENAME}.metainfo.xml"'
''; '';
@ -49,8 +47,8 @@ in mkDerivation rec {
nativeBuildInputs = [ pkg-config cmake ninja python3 wrapGAppsHook wrapQtAppsHook removeReferencesTo ]; nativeBuildInputs = [ pkg-config cmake ninja python3 wrapGAppsHook wrapQtAppsHook removeReferencesTo ];
buildInputs = [ buildInputs = [
qtbase qtimageformats gtk3 libsForQt5.kwayland libsForQt5.libdbusmenu enchant2 lz4 xxHash qtbase qtimageformats gtk3 libsForQt5.kwayland libsForQt5.libdbusmenu lz4 xxHash
dee ffmpeg openalSoft minizip libopus alsa-lib libpulseaudio range-v3 ffmpeg openalSoft minizip libopus alsa-lib libpulseaudio range-v3
tl-expected hunspell glibmm webkitgtk tl-expected hunspell glibmm webkitgtk
libtgvoip rnnoise abseil-cpp extra-cmake-modules libtgvoip rnnoise abseil-cpp extra-cmake-modules
tg_owt tg_owt

View file

@ -10,7 +10,7 @@ mkDerivation rec {
owner = "haiwen"; owner = "haiwen";
repo = "seafile-client"; repo = "seafile-client";
rev = "v${version}"; rev = "v${version}";
sha256 = "lhdKbR19ScNeezICf7vwZaeJikPjwbqrz42bo4lhxJs="; sha256 = "cG3OSqRhYnxlzfauQia6pM/1gu+iE5mtHTGk3kGMFH0=";
}; };
nativeBuildInputs = [ pkg-config cmake ]; nativeBuildInputs = [ pkg-config cmake ];

View file

@ -1,5 +1,5 @@
{ lib, fetchFromGitHub, buildPythonApplication, fuse { lib, fetchFromGitHub, buildPythonApplication, fuse
, appdirs, colorama, dateutil, requests, requests_toolbelt , appdirs, colorama, python-dateutil, requests, requests_toolbelt
, fusepy, sqlalchemy, setuptools }: , fusepy, sqlalchemy, setuptools }:
buildPythonApplication rec { buildPythonApplication rec {
@ -15,7 +15,7 @@ buildPythonApplication rec {
sha256 = "0a0fr632l24a3jmgla3b1vcm50ayfa9hdbp677ch1chwj5dq4zfp"; sha256 = "0a0fr632l24a3jmgla3b1vcm50ayfa9hdbp677ch1chwj5dq4zfp";
}; };
propagatedBuildInputs = [ appdirs colorama dateutil fusepy requests propagatedBuildInputs = [ appdirs colorama python-dateutil fusepy requests
requests_toolbelt setuptools sqlalchemy ]; requests_toolbelt setuptools sqlalchemy ];
makeWrapperArgs = [ "--prefix LIBFUSE_PATH : ${fuse}/lib/libfuse.so" ]; makeWrapperArgs = [ "--prefix LIBFUSE_PATH : ${fuse}/lib/libfuse.so" ];

View file

@ -1,6 +1,6 @@
{ lib, fetchFromGitHub, fetchpatch, libnotify, librsvg, killall { lib, fetchFromGitHub, fetchpatch, libnotify, librsvg, killall
, gtk3, libappindicator-gtk3, substituteAll, syncthing, wrapGAppsHook , gtk3, libappindicator-gtk3, substituteAll, syncthing, wrapGAppsHook
, gnome, buildPythonApplication, dateutil, pyinotify, pygobject3 , gnome, buildPythonApplication, python-dateutil, pyinotify, pygobject3
, bcrypt, gobject-introspection, gsettings-desktop-schemas , bcrypt, gobject-introspection, gsettings-desktop-schemas
, pango, gdk-pixbuf, atk }: , pango, gdk-pixbuf, atk }:
@ -30,7 +30,7 @@ buildPythonApplication rec {
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
dateutil pyinotify pygobject3 bcrypt python-dateutil pyinotify pygobject3 bcrypt
]; ];
patches = [ patches = [

View file

@ -122,7 +122,7 @@ let
runtimePackages = with python.pkgs; [ runtimePackages = with python.pkgs; [
dateparser dateparser
dateutil python-dateutil
django django
django-cors-headers django-cors-headers
django-crispy-forms django-crispy-forms

View file

@ -122,7 +122,7 @@ python3Packages.buildPythonApplication rec {
openpaperwork-core openpaperwork-core
pypillowfight pypillowfight
pyxdg pyxdg
dateutil python-dateutil
setuptools setuptools
]; ];

View file

@ -34,7 +34,7 @@ python3.pkgs.buildPythonApplication rec {
]; ];
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [
dateutil python-dateutil
markdown2 markdown2
matplotlib matplotlib
numpy numpy

View file

@ -123,7 +123,7 @@ in stdenv.mkDerivation {
description = "An office suite with a word processor, spreadsheet and presentation program"; description = "An office suite with a word processor, spreadsheet and presentation program";
homepage = "https://www.softmaker.com/"; homepage = "https://www.softmaker.com/";
license = licenses.unfree; license = licenses.unfree;
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
} }

View file

@ -5,11 +5,11 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "super-productivity"; pname = "super-productivity";
version = "6.5.2"; version = "7.2.1";
src = fetchurl { src = fetchurl {
url = "https://github.com/johannesjo/super-productivity/releases/download/v${version}/superProductivity-${version}.AppImage"; url = "https://github.com/johannesjo/super-productivity/releases/download/v${version}/superProductivity-${version}.AppImage";
sha256 = "1ivl7chsv9axgk6nqkf580pav651hchi3di0mrp0pylpsqgk6f1f"; sha256 = "93eeb56fe923c48a9384cde0633e98a9d9dc5c0869fce63b9724ff74bb400049";
name = "${pname}-${version}.AppImage"; name = "${pname}-${version}.AppImage";
}; };

View file

@ -36,7 +36,7 @@ python3Packages.buildPythonApplication rec {
]; ];
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [
dateutil python-dateutil
pygobject3 pygobject3
goocalendar goocalendar
pycairo pycairo

View file

@ -35,10 +35,10 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gwyddion"; pname = "gwyddion";
version = "2.58"; version = "2.59";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/gwyddion/gwyddion-${version}.tar.xz"; url = "mirror://sourceforge/gwyddion/gwyddion-${version}.tar.xz";
sha256 = "sha256-0xNnzYkuW3nEsO2o+0WEA+Z71XWoq6FYXm342OWO9Sw="; sha256 = "sha256-APMOJeZt/zp8JvXghKZ5lQFRKWO/4TVDORok8qAgEBk=";
}; };
nativeBuildInputs = [ pkg-config file ]; nativeBuildInputs = [ pkg-config file ];

View file

@ -1,5 +1,5 @@
{ lib, fetchzip, makeWrapper, makeDesktopItem, stdenv { lib, fetchzip, makeWrapper, makeDesktopItem, stdenv
, gtk3, libXtst, glib, zlib , gtk3, libXtst, glib, zlib, wrapGAppsHook
}: }:
let let
@ -25,7 +25,11 @@ in stdenv.mkDerivation rec {
sha256 = "02a2y2mkfab5cczw8g604m61h4xr0apir49zbd1aq6mmgcgngw80"; sha256 = "02a2y2mkfab5cczw8g604m61h4xr0apir49zbd1aq6mmgcgngw80";
}; };
nativeBuildInputs = [ makeWrapper ]; buildInputs = [ gtk3 ];
nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
dontWrapGApps = true;
phases = [ "installPhase" ]; phases = [ "installPhase" ];
@ -36,6 +40,9 @@ in stdenv.mkDerivation rec {
cp -r "$src" "$out/toolbox" cp -r "$src" "$out/toolbox"
chmod -R +w "$out/toolbox" chmod -R +w "$out/toolbox"
fixupPhase
gappsWrapperArgsHook
patchelf \ patchelf \
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
"$out/toolbox/toolbox" "$out/toolbox/toolbox"
@ -52,7 +59,8 @@ in stdenv.mkDerivation rec {
makeWrapper $out/toolbox/toolbox $out/bin/tla-toolbox \ makeWrapper $out/toolbox/toolbox $out/bin/tla-toolbox \
--run "set -x; cd $out/toolbox" \ --run "set -x; cd $out/toolbox" \
--add-flags "-data ~/.tla-toolbox" \ --add-flags "-data ~/.tla-toolbox" \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ gtk3 libXtst glib zlib ]}" --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ gtk3 libXtst glib zlib ]}" \
"''${gappsWrapperArgs[@]}"
echo -e "\nCreating TLA Toolbox icons..." echo -e "\nCreating TLA Toolbox icons..."
pushd "$src" pushd "$src"

View file

@ -76,7 +76,7 @@ stdenv.mkDerivation rec {
let pp = python.pkgs; in ([ let pp = python.pkgs; in ([
pp.numpy pp.scipy pp.scikitimage pp.h5py pp.numpy pp.scipy pp.scikitimage pp.h5py
pp.matplotlib pp.ipython pp.networkx pp.nose pp.matplotlib pp.ipython pp.networkx pp.nose
pp.pandas pp.dateutil pp.protobuf pp.gflags pp.pandas pp.python-dateutil pp.protobuf pp.gflags
pp.pyyaml pp.pillow pp.six pp.pyyaml pp.pillow pp.six
] ++ lib.optional leveldbSupport pp.leveldb) ] ++ lib.optional leveldbSupport pp.leveldb)
); );

View file

@ -9,14 +9,14 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "glances"; pname = "glances";
version = "3.1.7"; version = "3.2.0";
disabled = isPyPy; disabled = isPyPy;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nicolargo"; owner = "nicolargo";
repo = "glances"; repo = "glances";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-82ZD32dqRYGbGM/uyaJ5VqVZbhDZthiEcTihkV43JOU="; sha256 = "126xpx8i85giy3hkhqh0qcln9i1qj5bfciaqh9486rkl54xm8zsr";
}; };
# Some tests fail in the sandbox (they e.g. require access to /sys/class/power_supply): # Some tests fail in the sandbox (they e.g. require access to /sys/class/power_supply):
@ -48,7 +48,7 @@ buildPythonApplication rec {
meta = with lib; { meta = with lib; {
homepage = "https://nicolargo.github.io/glances/"; homepage = "https://nicolargo.github.io/glances/";
description = "Cross-platform curses-based monitoring tool"; description = "Cross-platform curses-based monitoring tool";
changelog = "https://github.com/nicolargo/glances/releases/tag/v${version}"; changelog = "https://github.com/nicolargo/glances/blob/v${version}/NEWS.rst";
license = licenses.lgpl3Only; license = licenses.lgpl3Only;
maintainers = with maintainers; [ jonringer primeos koral ]; maintainers = with maintainers; [ jonringer primeos koral ];
}; };

View file

@ -1,95 +1,158 @@
{ lib, stdenv, fetchurl, fetchpatch, python3Packages, makeWrapper, gettext { lib, stdenv, fetchurl, fetchpatch, python3Packages, makeWrapper, gettext, installShellFiles
, re2Support ? true , re2Support ? true
, rustSupport ? stdenv.hostPlatform.isLinux, rustPlatform , rustSupport ? stdenv.hostPlatform.isLinux, rustPlatform
, guiSupport ? false, tk ? null , fullBuild ? false
, gitSupport ? fullBuild
, guiSupport ? fullBuild, tk
, highlightSupport ? fullBuild
, ApplicationServices , ApplicationServices
}: }:
let let
inherit (python3Packages) docutils python fb-re2; inherit (python3Packages) docutils python fb-re2 pygit2 pygments;
in python3Packages.buildPythonApplication rec { self = python3Packages.buildPythonApplication rec {
pname = "mercurial"; pname = "mercurial";
version = "5.8"; version = "5.8";
src = fetchurl { src = fetchurl {
url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz"; url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz";
sha256 = "17rhlmmkqz5ll3k68jfzpcifg3nndbcbc2nx7kw8xn3qcj7nlpgw"; sha256 = "17rhlmmkqz5ll3k68jfzpcifg3nndbcbc2nx7kw8xn3qcj7nlpgw";
};
patches = [
# https://phab.mercurial-scm.org/D10638, needed for below patch to apply
(fetchpatch {
url = "https://www.mercurial-scm.org/repo/hg/raw-rev/c365850b611490a5fdb235eb1cea310a542c2f84";
sha256 = "1gn3xvahbjdhbglffqpmj559w1bkqqsk70wqcanwv7nh972aqy9g";
})
# https://phab.mercurial-scm.org/D10639, fixes https://bz.mercurial-scm.org/show_bug.cgi?id=6514
(fetchpatch {
url = "https://www.mercurial-scm.org/repo/hg/raw-rev/c8f62920f07a40af3403ba9aefa1dac8a97d53ea";
sha256 = "1kw0xjg2c4jby0ncarjvpa5qafsyl1wzbk6jxls4hnxlxdl53nmn";
})
];
format = "other";
passthru = { inherit python; }; # pass it so that the same version can be used in hg2git
cargoDeps = if rustSupport then rustPlatform.fetchCargoTarball {
inherit src;
name = "${pname}-${version}";
sha256 = "1kc2giqvfwsdl5fb0qmz96ws1gdrs3skfdzvpiif2i8f7r4nqlhd";
sourceRoot = "${pname}-${version}/rust";
} else null;
cargoRoot = if rustSupport then "rust" else null;
propagatedBuildInputs = lib.optional re2Support fb-re2
++ lib.optional gitSupport pygit2
++ lib.optional highlightSupport pygments;
nativeBuildInputs = [ makeWrapper gettext installShellFiles ]
++ lib.optionals rustSupport (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
buildInputs = [ docutils ]
++ lib.optionals stdenv.isDarwin [ ApplicationServices ];
makeFlags = [ "PREFIX=$(out)" ]
++ lib.optional rustSupport "PURE=--rust";
postInstall = (lib.optionalString guiSupport ''
mkdir -p $out/etc/mercurial
cp contrib/hgk $out/bin
cat >> $out/etc/mercurial/hgrc << EOF
[extensions]
hgk=$out/lib/${python.libPrefix}/site-packages/hgext/hgk.py
EOF
# setting HG so that hgk can be run itself as well (not only hg view)
WRAP_TK=" --set TK_LIBRARY ${tk}/lib/${tk.libPrefix}
--set HG $out/bin/hg
--prefix PATH : ${tk}/bin "
'') + ''
for i in $(cd $out/bin && ls); do
wrapProgram $out/bin/$i \
$WRAP_TK
done
# copy hgweb.cgi to allow use in apache
mkdir -p $out/share/cgi-bin
cp -v hgweb.cgi contrib/hgweb.wsgi $out/share/cgi-bin
chmod u+x $out/share/cgi-bin/hgweb.cgi
installShellCompletion --cmd hg \
--bash contrib/bash_completion \
--zsh contrib/zsh_completion
'';
passthru.tests = {};
meta = with lib; {
inherit version;
description = "A fast, lightweight SCM system for very large distributed projects";
homepage = "https://www.mercurial-scm.org";
downloadPage = "https://www.mercurial-scm.org/release/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ eelco lukegb ];
updateWalker = true;
platforms = platforms.unix;
};
}; };
in
self.overridePythonAttrs (origAttrs: {
passthru = origAttrs.passthru // rec {
# withExtensions takes a function which takes the python packages set and
# returns a list of extensions to install.
#
# for instance: mercurial.withExtension (pm: [ pm.hg-evolve ])
withExtensions = f: let
python = self.python;
mercurialHighPrio = ps: (ps.toPythonModule self).overrideAttrs (oldAttrs: {
meta = oldAttrs.meta // {
priority = 50;
};
});
plugins = (f python.pkgs) ++ [ (mercurialHighPrio python.pkgs) ];
env = python.withPackages (ps: plugins);
in stdenv.mkDerivation {
pname = "${self.pname}-with-extensions";
patches = [ inherit (self) src version meta;
# https://phab.mercurial-scm.org/D10638, needed for below patch to apply
(fetchpatch {
url = "https://phab.mercurial-scm.org/file/data/l7p2r4zcctcr3pzlybv2/PHID-FILE-bwjzxlz6sbegk3s4irik/D10638.diff";
sha256 = "0mfi324is02l7cnd3j0gbmg5rpyyqn3afg3f73flnfwmz5njqa5f";
})
# https://phab.mercurial-scm.org/D10639, fixes https://bz.mercurial-scm.org/show_bug.cgi?id=6514
(fetchpatch {
url = "https://phab.mercurial-scm.org/file/data/v53nhburhtkhpccyecei/PHID-FILE-6v34oll6r2gkqo4ng5nt/D10639.diff";
sha256 = "0h5ilrd2x1789fr6sf4k1mcvxdh0xdyr94yawdacw87v3x12c8cb";
})
];
format = "other"; buildInputs = self.buildInputs ++ self.propagatedBuildInputs;
nativeBuildInputs = self.nativeBuildInputs;
passthru = { inherit python; }; # pass it so that the same version can be used in hg2git phases = [ "installPhase" "installCheckPhase" ];
cargoDeps = if rustSupport then rustPlatform.fetchCargoTarball { installPhase = ''
inherit src; runHook preInstall
name = "${pname}-${version}";
sha256 = "1kc2giqvfwsdl5fb0qmz96ws1gdrs3skfdzvpiif2i8f7r4nqlhd";
sourceRoot = "${pname}-${version}/rust";
} else null;
cargoRoot = if rustSupport then "rust" else null;
propagatedBuildInputs = lib.optional re2Support fb-re2; mkdir -p $out/bin
nativeBuildInputs = [ makeWrapper gettext ]
++ lib.optionals rustSupport (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
buildInputs = [ docutils ]
++ lib.optionals stdenv.isDarwin [ ApplicationServices ];
makeFlags = [ "PREFIX=$(out)" ] for bindir in ${lib.concatStringsSep " " (map (d: "${lib.getBin d}/bin") plugins)}; do
++ lib.optional rustSupport "PURE=--rust"; for bin in $bindir/*; do
ln -s ${env}/bin/$(basename $bin) $out/bin/
done
done
postInstall = (lib.optionalString guiSupport '' ln -s ${self}/share $out/share
mkdir -p $out/etc/mercurial
cp contrib/hgk $out/bin
cat >> $out/etc/mercurial/hgrc << EOF
[extensions]
hgk=$out/lib/${python.libPrefix}/site-packages/hgext/hgk.py
EOF
# setting HG so that hgk can be run itself as well (not only hg view)
WRAP_TK=" --set TK_LIBRARY ${tk}/lib/${tk.libPrefix}
--set HG $out/bin/hg
--prefix PATH : ${tk}/bin "
'') + ''
for i in $(cd $out/bin && ls); do
wrapProgram $out/bin/$i \
$WRAP_TK
done
# copy hgweb.cgi to allow use in apache runHook postInstall
mkdir -p $out/share/cgi-bin '';
cp -v hgweb.cgi contrib/hgweb.wsgi $out/share/cgi-bin
chmod u+x $out/share/cgi-bin/hgweb.cgi
# install bash/zsh completions installCheckPhase = ''
install -v -m644 -D contrib/bash_completion $out/share/bash-completion/completions/_hg runHook preInstallCheck
install -v -m644 -D contrib/zsh_completion $out/share/zsh/site-functions/_hg
'';
meta = with lib; { $out/bin/hg help >/dev/null || exit 1
inherit version;
description = "A fast, lightweight SCM system for very large distributed projects"; runHook postInstallCheck
homepage = "https://www.mercurial-scm.org"; '';
downloadPage = "https://www.mercurial-scm.org/release/"; };
license = licenses.gpl2Plus;
maintainers = with maintainers; [ eelco lukegb ]; tests = origAttrs.passthru.tests // {
updateWalker = true; withExtensions = withExtensions (pm: [ pm.hg-evolve ]);
platforms = platforms.unix; };
}; };
} })

View file

@ -1,25 +1,16 @@
{ lib, fetchurl, python3Packages { lib, fetchurl, python3Packages
, mercurial, qt5 , mercurial, qt5
}@args: }:
let let
tortoisehgSrc = fetchurl rec { tortoisehgSrc = fetchurl rec {
meta.name = "tortoisehg-${meta.version}"; meta.name = "tortoisehg-${meta.version}";
meta.version = "5.6"; meta.version = "5.8";
url = "https://www.mercurial-scm.org/release/tortoisehg/targz/tortoisehg-${meta.version}.tar.gz"; url = "https://www.mercurial-scm.org/release/tortoisehg/targz/tortoisehg-${meta.version}.tar.gz";
sha256 = "031bafj88wggpvw0lgvl0djhlbhs9nls9vzwvni8yn0m0bgzc9gr"; sha256 = "154q7kyrdk045wx7rsblzx41k3wbvp2f40kzkxmiiaa5n35srsm3";
}; };
tortoiseMercurial = (mercurial.override { # Extension point for when thg's mercurial is lagging behind mainline.
rustSupport = false; tortoiseMercurial = mercurial;
re2Support = lib.versionAtLeast tortoisehgSrc.meta.version "5.8";
}).overridePythonAttrs (old: rec {
inherit (tortoisehgSrc.meta) version;
src = fetchurl {
url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz";
sha256 = "1hk2y30zzdnlv8f71kabvh0xi9c7qhp28ksh20vpd0r712sv79yz";
};
patches = [];
});
in python3Packages.buildPythonApplication { in python3Packages.buildPythonApplication {
inherit (tortoisehgSrc.meta) name version; inherit (tortoisehgSrc.meta) name version;
@ -49,7 +40,7 @@ in python3Packages.buildPythonApplication {
meta = { meta = {
description = "Qt based graphical tool for working with Mercurial"; description = "Qt based graphical tool for working with Mercurial";
homepage = "https://tortoisehg.bitbucket.io/"; homepage = "https://tortoisehg.bitbucket.io/";
license = lib.licenses.gpl2; license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ danbst ]; maintainers = with lib.maintainers; [ danbst ];
}; };

View file

@ -72,6 +72,6 @@ in mkDerivation {
license = licenses.unfree; license = licenses.unfree;
homepage = "http://makemkv.com"; homepage = "http://makemkv.com";
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ danieldk titanous ]; maintainers = with maintainers; [ titanous ];
}; };
} }

View file

@ -1,4 +1,4 @@
{ lib, buildPythonApplication, fetchFromGitHub, pycurl, dateutil, configobj, sqlalchemy, sdnotify, flask }: { lib, buildPythonApplication, fetchFromGitHub, pycurl, python-dateutil, configobj, sqlalchemy, sdnotify, flask }:
buildPythonApplication rec { buildPythonApplication rec {
pname = "pyca"; pname = "pyca";
@ -13,7 +13,7 @@ buildPythonApplication rec {
propagatedBuildInputs = [ propagatedBuildInputs = [
pycurl pycurl
dateutil python-dateutil
configobj configobj
sqlalchemy sqlalchemy
sdnotify sdnotify

View file

@ -39,7 +39,7 @@ python37Packages.buildPythonApplication rec {
cairocffi-xcffib cairocffi-xcffib
setuptools setuptools
setuptools-scm setuptools-scm
dateutil python-dateutil
dbus-python dbus-python
mpd2 mpd2
psutil psutil

View file

@ -1,5 +1,5 @@
{ lib, stdenv, fetchFromGitHub { lib, stdenv, fetchFromGitHub
, meson, ninja, pkg-config, scdoc , meson, ninja, pkg-config, scdoc, wayland-scanner
, wayland, wayland-protocols, systemd , wayland, wayland-protocols, systemd
}: }:
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
--replace "version: '1.5'" "version: '${version}'" --replace "version: '1.5'" "version: '${version}'"
''; '';
nativeBuildInputs = [ meson ninja pkg-config scdoc ]; nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
buildInputs = [ wayland wayland-protocols systemd ]; buildInputs = [ wayland wayland-protocols systemd ];
mesonFlags = [ "-Dman-pages=enabled" "-Dlogind=enabled" ]; mesonFlags = [ "-Dman-pages=enabled" "-Dlogind=enabled" ];

View file

@ -1,5 +1,5 @@
{ lib, stdenv, fetchFromGitHub { lib, stdenv, fetchFromGitHub
, meson, ninja, pkg-config, scdoc , meson, ninja, pkg-config, scdoc, wayland-scanner
, wayland, wayland-protocols, libxkbcommon, cairo, gdk-pixbuf, pam , wayland, wayland-protocols, libxkbcommon, cairo, gdk-pixbuf, pam
}: }:
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
--replace "version: '1.4'" "version: '${version}'" --replace "version: '1.4'" "version: '${version}'"
''; '';
nativeBuildInputs = [ meson ninja pkg-config scdoc ]; nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ]; buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
mesonFlags = [ mesonFlags = [

View file

@ -117,7 +117,8 @@ rec {
--tmpdir=$TMPDIR \ --tmpdir=$TMPDIR \
--override-os ${os} \ --override-os ${os} \
--override-arch ${arch} \ --override-arch ${arch} \
copy "$sourceURL" "docker-archive://$out:$destNameTag" copy "$sourceURL" "docker-archive://$out:$destNameTag" \
| cat # pipe through cat to force-disable progress bar
''; '';
# We need to sum layer.tar, not a directory, hence tarsum instead of nix-hash. # We need to sum layer.tar, not a directory, hence tarsum instead of nix-hash.

View file

@ -1,7 +1,7 @@
{ lib, fetchzip }: { lib, fetchzip }:
let let
version = "5.000"; version = "6.000";
in in
fetchzip rec { fetchzip rec {
name = "charis-sil-${version}"; name = "charis-sil-${version}";
@ -14,7 +14,7 @@ in
unzip -j $downloadedFile \*OFL.txt \*OFL-FAQ.txt \*README.txt \*FONTLOG.txt -d "$out/share/doc/${name}" unzip -j $downloadedFile \*OFL.txt \*OFL-FAQ.txt \*README.txt \*FONTLOG.txt -d "$out/share/doc/${name}"
''; '';
sha256 = "1a220s8n0flvcdkazqf5g10v6r55s2an308slvvarynpj6l7x27n"; sha256 = "sha256-eMmC893rI42qzZVCI17i9XSAbQzXCK2fHVe5Pf1/VnM=";
meta = with lib; { meta = with lib; {
homepage = "https://software.sil.org/charis"; homepage = "https://software.sil.org/charis";

View file

@ -1,7 +1,7 @@
{ lib, fetchzip }: { lib, fetchzip }:
let let
version = "4.47.0"; version = "4.49.1";
in fetchzip { in fetchzip {
name = "terminus-font-ttf-${version}"; name = "terminus-font-ttf-${version}";
@ -18,7 +18,7 @@ in fetchzip {
install -Dm 644 COPYING "$out/share/doc/terminus-font-ttf/COPYING" install -Dm 644 COPYING "$out/share/doc/terminus-font-ttf/COPYING"
''; '';
sha256 = "1mnx3vlnl0r15yzsa4zb9qqab4hpi603gdwhlbw960wg03i3xn8z"; sha256 = "sha256-UaTnCamIRN/3xZsYt5nYzvykXQ3ri94a047sWOJ2RfU=";
meta = with lib; { meta = with lib; {
description = "A clean fixed width TTF font"; description = "A clean fixed width TTF font";

View file

@ -38,6 +38,6 @@ stdenvNoCC.mkDerivation {
description = "A set of default and supplemental wallpapers for Fedora"; description = "A set of default and supplemental wallpapers for Fedora";
license = licenses.cc-by-sa-40; license = licenses.cc-by-sa-40;
platforms = platforms.unix; platforms = platforms.unix;
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
}; };
} }

View file

@ -0,0 +1,66 @@
{ lib, stdenv, fetchFromGitHub, librime }:
stdenv.mkDerivation {
pname = "rime-data";
version = "0.38.20210628";
src = fetchFromGitHub {
owner = "rime";
repo = "plum";
rev = "0b835e347cad9c2d7038cfe82df5b5d1fe1c0327";
sha256 = "0mja4wyazxdc6fr7pzij5ah4rzwxv4s12s64vfn5ikx1ias1f8ib";
};
buildInputs = [ librime ];
buildFlags = [ "all" ];
makeFlags = [ "PREFIX=$(out)" ];
preBuild = import ./fetchSchema.nix fetchFromGitHub;
postPatch = ''
# Disable git operations.
sed -i /fetch_or_update_package$/d scripts/install-packages.sh
'';
meta = with lib; {
description = "Schema data of Rime Input Method Engine";
longDescription = ''
Rime-data provides schema data for Rime Input Method Engine.
'';
homepage = "https://rime.im";
license = with licenses; [
# rime-array
# rime-combo-pinyin
# rime-double-pinyin
# rime-middle-chinese
# rime-scj
# rime-soutzoe
# rime-stenotype
# rime-wugniu
gpl3Only
# plum
# rime-bopomofo
# rime-cangjie
# rime-emoji
# rime-essay
# rime-ipa
# rime-jyutping
# rime-luna-pinyin
# rime-prelude
# rime-quick
# rime-stroke
# rime-terra-pinyin
# rime-wubi
lgpl3Only
# rime-pinyin-simp
asl20
# rime-cantonese
cc-by-40
];
maintainers = [ maintainers.pengmeiyu ];
};
}

View file

@ -0,0 +1,137 @@
# Generated using generateFetchSchema.sh
fetchFromGitHub:
''
mkdir -p package/rime
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-array";
rev = "8514193da939bc8888ad6a744f5e5921d4baebc7";
sha256 = "1fy7pcq7d8m0wzkkhklmv6p370ms9lqc1zpndyy2xjamzrbb9l83";
}} package/rime/array
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-bopomofo";
rev = "c7618f4f5728e1634417e9d02ea50d82b71956ab";
sha256 = "0g77nv0jrwqnbqqna0ib0kqcy6l5zl62kh49ny67d6bjwnwz9186";
}} package/rime/bopomofo
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-cangjie";
rev = "8dfad9e537f18821b71ba28773315d9c670ae245";
sha256 = "029kw9nx6x0acg4f0m8wj1ziqffffhy9yyj51nlx17cnia0qcrby";
}} package/rime/cangjie
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-cantonese";
rev = "b6f800c74eb639816d56d0d5601aaa96c8963178";
sha256 = "1a4ksacbz8l30y3y5c017d0hzwik8knplglb3yswy7l4hsvaanyh";
}} package/rime/cantonese
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-combo-pinyin";
rev = "a84065a86b272c76215215bd6f03c506b6e7097c";
sha256 = "1f0b4kakw0x26gmx7xi4f94nbjlb8lvi9bks4f92jswa045vnd87";
}} package/rime/combo-pinyin
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-double-pinyin";
rev = "69bf85d4dfe8bac139c36abbd68d530b8b6622ea";
sha256 = "093wif5avvvw45fqbwj5wkbxrychy4pagl4mwsmbrayc8jkp69ak";
}} package/rime/double-pinyin
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-emoji";
rev = "4c8c51f4a3bc7298c99376eda9bbd86070fc4fa1";
sha256 = "0175jqh210fncafqckr9zzaw55qpswmqjrykwms1apmc68l43122";
}} package/rime/emoji
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-essay";
rev = "9db2e77305e75798baf3ec8dcf1f82785b5e1be9";
sha256 = "03ypkkaadd5qmyg26n24a66cll90xvcimgbmiyv4d33jradiqg22";
}} package/rime/essay
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-ipa";
rev = "22b71710e029bcb412e9197192a638ab11bc2abf";
sha256 = "0zdk4f9qkfj3q5hmjnairj1lv6f6y27mic12k886n6sxywwbwr2k";
}} package/rime/ipa
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-jyutping";
rev = "1e24baa6998815c716c581effe8ec65ee87c4e8c";
sha256 = "0s2rckpwlrm3n7w1csnqyi5p9mkpp3z87s7mrm2vc9sv06rpv7zl";
}} package/rime/jyutping
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-luna-pinyin";
rev = "623adb022b094d540218b287c2e601509eee3347";
sha256 = "06pcwp09l5wkqv7792gbsl31xnlb3gr9q6bgbp94vvq6m2ycahqz";
}} package/rime/luna-pinyin
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-middle-chinese";
rev = "9fad7a7c0c26167d5e6e85db8df48a15c7f7d4f0";
sha256 = "0a0bqrlzg0k692xblqnh1rh1fwwqqb205xwxlihgji85n8ibcgph";
}} package/rime/middle-chinese
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-pinyin-simp";
rev = "b0e84cda02c613ebdedc127a26131b3800f45a8e";
sha256 = "05v804qr3a9xvjzp9yid7231fi2l2yrl47ybbvql61z9k36ab094";
}} package/rime/pinyin-simp
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-prelude";
rev = "3de303ffaa731dba07b0462ce59f4767e1219ad2";
sha256 = "0g7a0bla58rh1v3md59k6adk185pilb4z8i2i0pqdl4nwqp40n2p";
}} package/rime/prelude
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-quick";
rev = "3fe5911ba608cb2df1b6301b76ad1573bd482a76";
sha256 = "08bh87ym5qvw55lyw20l3m7jd4c2z5rvil8h5q8790r7z6j6ijy9";
}} package/rime/quick
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-scj";
rev = "cab5a0858765eff0553dd685a2d61d5536e9149c";
sha256 = "0ard2bjp4896a8dimmcwyjwgmp9kl4rz92yc92jnd3y4rgwl6fvk";
}} package/rime/scj
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-soutzoe";
rev = "beeaeca72d8e17dfd1e9af58680439e9012987dc";
sha256 = "0jyqx0q9s0qxn168l5n8zav8jcl2g5ppr7pa8jm1vwrllf20slcc";
}} package/rime/soutzoe
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-stenotype";
rev = "f3e9189d5ce33c55d3936cc58e39d0c88b3f0c88";
sha256 = "0dl6px7lrh3xa87knjzwzdcwjj1k1dg4l72q7lb48an4s9f1cy5d";
}} package/rime/stenotype
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-stroke";
rev = "ea8576d1accd6fda339e96b415caadb56e2a07d1";
sha256 = "07h6nq9867hjrd2v3h1pnr940sdrw4mqrzj43siz1rzjxz3s904r";
}} package/rime/stroke
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-terra-pinyin";
rev = "ce7b9249612f575d2f43d51fcacd31d1b4e0ef1b";
sha256 = "0vm303f4lrdmdmif5klrp6w29vn9z2vzw33cw0y83pcnz39wiads";
}} package/rime/terra-pinyin
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-wubi";
rev = "f1876f08f1d4a9696395be0070c0e8e4353c44cb";
sha256 = "1d9y9rqssacria9d0hla96czsqv2wkfm6z926m1x269ryv96zxvk";
}} package/rime/wubi
ln -sv ${fetchFromGitHub {
owner = "rime";
repo = "rime-wugniu";
rev = "abd1ee98efbf170258fcf43875c21a4259e00b61";
sha256 = "0qn54d3cclny106ixdw08r5n6wn52ffs1hgrma3k0j4pv0kr9nlq";
}} package/rime/wugniu
''

View file

@ -0,0 +1,43 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p nix-prefetch-git -p jq
imlist=(
array
bopomofo
cangjie
cantonese
combo-pinyin
double-pinyin
emoji
essay
ipa
jyutping
luna-pinyin
middle-chinese
pinyin-simp
prelude
quick
scj
soutzoe
stenotype
stroke
terra-pinyin
wubi
wugniu
)
echo "# Generated using generateFetchSchema.sh"
echo "fetchFromGitHub:"
echo \'\'
echo "mkdir -p package/rime"
for im in ${imlist[@]}; do
tempFile=$(mktemp)
echo "ln -sv \${fetchFromGitHub {"
echo " owner = \"rime\";"
echo " repo = \"rime-$im\";"
nix-prefetch-git --quiet https://github.com/rime/rime-$im \
| jq '{ rev: .rev, sha256: .sha256 }' \
| jq -r 'to_entries | map(" \(.key) = \"\(.value)\";") | .[]'
echo "}} package/rime/$im"
done
echo \'\'

View file

@ -12,13 +12,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "bulky"; pname = "bulky";
version = "1.6"; version = "1.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "linuxmint"; owner = "linuxmint";
repo = "bulky"; repo = "bulky";
rev = version; rev = version;
sha256 = "sha256-cO6AhQ0g1N43du74fljfI1M68jb9N04FKUyzjbzC3K0="; sha256 = "sha256-+3OoeuGuyiHWlUrxm5A7CmNR+ijxdlmecmvqk+i+h08=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -339,8 +339,6 @@ lib.makeScope pkgs.newScope (self: with self; {
inherit (pkgs) gnome-user-docs; # added 2019-11-20 inherit (pkgs) gnome-user-docs; # added 2019-11-20
inherit (pkgs) gegl_0_4; # added 2019-10-31
inherit (pkgs) gjs; # added 2019-01-05 inherit (pkgs) gjs; # added 2019-01-05
inherit (pkgs) yelp-tools; # added 2019-11-20 inherit (pkgs) yelp-tools; # added 2019-11-20

View file

@ -1,12 +1,12 @@
{ lib, buildRebar3, fetchFromGitHub }: { lib, buildRebar3, fetchFromGitHub }:
buildRebar3 rec { buildRebar3 rec {
name = "rebar3_nix"; name = "rebar3_nix";
version = "0.1.0"; version = "0.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "erlang-nix"; owner = "erlang-nix";
repo = name; repo = name;
rev = "v${version}"; rev = "v${version}";
sha256 = "17w8m4aqqgvhpx3xyc7x2qzsrd3ybzc83ay50zs1gyd1b8csh2wf"; sha256 = "10ijc06qvv5hqv0qy3w7mbv9pshdb8bvy0f3phr1vd5hksbk731y";
}; };
meta = { meta = {

View file

@ -65,7 +65,7 @@ stdenv.mkDerivation rec {
description = "ROCm fork of the clang C/C++/Objective-C/Objective-C++ LLVM compiler frontend"; description = "ROCm fork of the clang C/C++/Objective-C/Objective-C++ LLVM compiler frontend";
homepage = "https://llvm.org/"; homepage = "https://llvm.org/";
license = with licenses; [ ncsa ]; license = with licenses; [ ncsa ];
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View file

@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
description = "ROCm fork of the LLVM Linker"; description = "ROCm fork of the LLVM Linker";
homepage = "https://github.com/RadeonOpenCompute/llvm-project"; homepage = "https://github.com/RadeonOpenCompute/llvm-project";
license = licenses.ncsa; license = licenses.ncsa;
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View file

@ -91,7 +91,7 @@ in stdenv.mkDerivation rec {
description = "ROCm fork of the LLVM compiler infrastructure"; description = "ROCm fork of the LLVM compiler infrastructure";
homepage = "https://github.com/RadeonOpenCompute/llvm-project"; homepage = "https://github.com/RadeonOpenCompute/llvm-project";
license = with licenses; [ ncsa ]; license = with licenses; [ ncsa ];
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View file

@ -53,6 +53,7 @@ in
, enableParallelBuilding ? true , enableParallelBuilding ? true
, maintainers ? null , maintainers ? null
, changelog ? null , changelog ? null
, mainProgram ? null
, doCoverage ? false , doCoverage ? false
, doHaddock ? !(ghc.isHaLVM or false) , doHaddock ? !(ghc.isHaLVM or false)
, passthru ? {} , passthru ? {}
@ -666,6 +667,7 @@ stdenv.mkDerivation ({
// optionalAttrs (args ? hydraPlatforms) { inherit hydraPlatforms; } // optionalAttrs (args ? hydraPlatforms) { inherit hydraPlatforms; }
// optionalAttrs (args ? badPlatforms) { inherit badPlatforms; } // optionalAttrs (args ? badPlatforms) { inherit badPlatforms; }
// optionalAttrs (args ? changelog) { inherit changelog; } // optionalAttrs (args ? changelog) { inherit changelog; }
// optionalAttrs (args ? mainProgram) { inherit mainProgram; }
; ;
} }

View file

@ -85,6 +85,6 @@ in stdenv.mkDerivation rec {
changelog = "https://github.com/GPUOpen-Drivers/AMDVLK/releases/tag/v-${version}"; changelog = "https://github.com/GPUOpen-Drivers/AMDVLK/releases/tag/v-${version}";
license = licenses.mit; license = licenses.mit;
platforms = [ "x86_64-linux" "i686-linux" ]; platforms = [ "x86_64-linux" "i686-linux" ];
maintainers = with maintainers; [ danieldk Flakebi ]; maintainers = with maintainers; [ Flakebi ];
}; };
} }

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "armadillo"; pname = "armadillo";
version = "10.5.2"; version = "10.5.3";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/arma/armadillo-${version}.tar.xz"; url = "mirror://sourceforge/arma/armadillo-${version}.tar.xz";
sha256 = "sha256-Y/I87cVIpelASBblDPj4/MSSqxqtxsDO8wv8Kvzq2V8="; sha256 = "sha256-5sUdjVKm94ucZFn2mGE1CT4O5wWmdDBxEPYXXyzV7jc=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -10,13 +10,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "babl"; pname = "babl";
version = "0.1.86"; version = "0.1.88";
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
src = fetchurl { src = fetchurl {
url = "https://download.gimp.org/pub/babl/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; url = "https://download.gimp.org/pub/babl/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "sha256-Cz9ZUVmtGyFs1ynAUEw6X2z3gMZB9Nxj/BZPPAOCyPA="; sha256 = "sha256-Tw1/SqoLsucl80mt97NRqVfZ+ybVVdmJWnr4FrQWcDk=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -5,13 +5,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "duckdb"; pname = "duckdb";
version = "0.2.2"; version = "0.2.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cwida"; owner = "cwida";
repo = "duckdb"; repo = "duckdb";
rev = "v${version}"; rev = "v${version}";
sha256 = "1pzz2zjzpvji5am21vd9kjxj0pnxsjmrsfqrym9h2rk2mi7p2cx8"; sha256 = "0cnqq2n1424fqg7gfyvrwkk6nvjal2fm5n08xc8q28ynyhq4sfmj";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -4,6 +4,7 @@
, pkg-config , pkg-config
, meson , meson
, ninja , ninja
, wayland-scanner
, libX11 , libX11
, mesa , mesa
, libGL , libGL
@ -51,10 +52,15 @@ in stdenv.mkDerivation rec {
sha256 = "1n9lg8hpjgxlf7dpddkjhbslsfd0symla2wk6jjmnl9n9jv2gmzk"; sha256 = "1n9lg8hpjgxlf7dpddkjhbslsfd0symla2wk6jjmnl9n9jv2gmzk";
}; };
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [ nativeBuildInputs = [
meson meson
ninja ninja
pkg-config pkg-config
wayland-scanner
]; ];
buildInputs = [ buildInputs = [

View file

@ -1,121 +0,0 @@
{ lib
, stdenv
, fetchurl
, pkg-config
, vala
, gobject-introspection
, gtk-doc
, docbook-xsl-nons
, docbook_xml_dtd_43
, glib
, babl
, libpng
, cairo
, libjpeg
, librsvg
, lensfun
, libspiro
, maxflow
, netsurf
, pango
, poly2tri-c
, poppler
, bzip2
, json-glib
, gettext
, meson
, ninja
, libraw
, gexiv2
, libwebp
, luajit
, openexr
, OpenCL
, suitesparse
}:
stdenv.mkDerivation rec {
pname = "gegl";
version = "0.4.30";
outputs = [ "out" "dev" "devdoc" ];
outputBin = "dev";
src = fetchurl {
url = "https://download.gimp.org/pub/gegl/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "sha256-wRJ4LPQJaWniMhfM36vkIoTjXVQ1/wxD1A5McPrsqN0=";
};
nativeBuildInputs = [
pkg-config
gettext
meson
ninja
vala
gobject-introspection
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_43
];
buildInputs = [
libpng
cairo
libjpeg
librsvg
lensfun
libspiro
maxflow
netsurf.libnsgif
pango
poly2tri-c
poppler
bzip2
libraw
libwebp
gexiv2
luajit
openexr
suitesparse
] ++ lib.optional stdenv.isDarwin OpenCL;
# for gegl-4.0.pc
propagatedBuildInputs = [
glib
json-glib
babl
];
mesonFlags = [
"-Ddocs=true"
"-Dmrg=disabled" # not sure what that is
"-Dsdl2=disabled"
"-Dpygobject=disabled"
"-Dlibav=disabled"
"-Dlibv4l=disabled"
"-Dlibv4l2=disabled"
# Disabled due to multiple vulnerabilities, see
# https://github.com/NixOS/nixpkgs/pull/73586
"-Djasper=disabled"
];
# TODO: Fix missing math symbols in gegl seamless clone.
# It only appears when we use packaged poly2tri-c instead of vendored one.
NIX_CFLAGS_COMPILE = "-lm";
postPatch = ''
chmod +x tests/opencl/opencl_test.sh
patchShebangs tests/ff-load-save/tests_ff_load_save.sh tests/opencl/opencl_test.sh tools/xml_insert.sh
'';
# tests fail to connect to the com.apple.fonts daemon in sandboxed mode
doCheck = !stdenv.isDarwin;
meta = with lib; {
description = "Graph-based image processing framework";
homepage = "https://www.gegl.org";
license = licenses.lgpl3Plus;
maintainers = with maintainers; [ jtojnar ];
platforms = platforms.unix;
};
}

View file

@ -1,43 +1,115 @@
{ lib, stdenv { lib
, stdenv
, fetchurl , fetchurl
, pkg-config , pkg-config
, vala
, gobject-introspection
, gtk-doc
, docbook-xsl-nons
, docbook_xml_dtd_43
, glib
, babl , babl
, libpng , libpng
, cairo , cairo
, libjpeg , libjpeg
, librsvg , librsvg
, lensfun
, libspiro
, maxflow
, netsurf
, pango , pango
, gtk2 , poly2tri-c
, poppler
, bzip2 , bzip2
, intltool , json-glib
, libintl , gettext
, OpenGL ? null }: , meson
, ninja
, libraw
, gexiv2
, libwebp
, luajit
, openexr
, OpenCL
, suitesparse
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gegl"; pname = "gegl";
version = "0.2.0"; version = "0.4.30";
outputs = [ "out" "dev" "devdoc" ];
outputBin = "dev";
src = fetchurl { src = fetchurl {
url = "ftp://ftp.gtk.org/pub/gegl/0.2/${pname}-${version}.tar.bz2"; url = "https://download.gimp.org/pub/gegl/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "df2e6a0d9499afcbc4f9029c18d9d1e0dd5e8710a75e17c9b1d9a6480dd8d426"; sha256 = "sha256-wRJ4LPQJaWniMhfM36vkIoTjXVQ1/wxD1A5McPrsqN0=";
}; };
patches = [( fetchurl { nativeBuildInputs = [
url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/" pkg-config
+ "gegl-0.2.0-CVE-2012-4433.patch?h=packages/gegl&id=57a60fbda5d7bbbd1cc4767cb0724baa80c5e3e9"; gettext
sha256 = "0p8mxj3w09nn1cc6cbxrd9hx742c5y27903i608wx6ja3kdjis59"; meson
name = "CVE-2012-4433.patch"; ninja
})]; vala
gobject-introspection
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_43
];
# needs fonts otherwise don't know how to pass them buildInputs = [
configureFlags = [ "--disable-docs" ]; libpng
cairo
libjpeg
librsvg
lensfun
libspiro
maxflow
netsurf.libnsgif
pango
poly2tri-c
poppler
bzip2
libraw
libwebp
gexiv2
luajit
openexr
suitesparse
] ++ lib.optional stdenv.isDarwin OpenCL;
buildInputs = [ babl libpng cairo libjpeg librsvg pango gtk2 bzip2 intltool libintl ] # for gegl-4.0.pc
++ lib.optional stdenv.isDarwin OpenGL; propagatedBuildInputs = [
glib
json-glib
babl
];
nativeBuildInputs = [ pkg-config ]; mesonFlags = [
"-Ddocs=true"
"-Dmrg=disabled" # not sure what that is
"-Dsdl2=disabled"
"-Dpygobject=disabled"
"-Dlibav=disabled"
"-Dlibv4l=disabled"
"-Dlibv4l2=disabled"
# Disabled due to multiple vulnerabilities, see
# https://github.com/NixOS/nixpkgs/pull/73586
"-Djasper=disabled"
];
doCheck = false; # fails 3 out of 19 tests # TODO: Fix missing math symbols in gegl seamless clone.
# It only appears when we use packaged poly2tri-c instead of vendored one.
NIX_CFLAGS_COMPILE = "-lm";
postPatch = ''
chmod +x tests/opencl/opencl_test.sh
patchShebangs tests/ff-load-save/tests_ff_load_save.sh tests/opencl/opencl_test.sh tools/xml_insert.sh
'';
# tests fail to connect to the com.apple.fonts daemon in sandboxed mode
doCheck = !stdenv.isDarwin;
meta = with lib; { meta = with lib; {
description = "Graph-based image processing framework"; description = "Graph-based image processing framework";

View file

@ -0,0 +1,22 @@
{ stdenv, lib, fetchFromGitHub, cmake }:
stdenv.mkDerivation rec {
pname = "libbaseencode";
version = "1.0.11";
src = fetchFromGitHub {
owner = "paolostivanin";
repo = pname;
rev = "v${version}";
sha256 = "1f52yh052z8k90d1ag6nk01p1gf4i1zxp1daw8mashs8avqr2m7g";
};
nativeBuildInputs = [ cmake ];
meta = with lib; {
description = "Library written in C for encoding and decoding data using base32 or base64 (RFC-4648)";
homepage = "https://github.com/paolostivanin/libbaseencode";
license = licenses.asl20;
maintainers = with maintainers; [ alexbakker ];
};
}

View file

@ -0,0 +1,23 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, libgcrypt, libbaseencode }:
stdenv.mkDerivation rec {
pname = "libcotp";
version = "1.2.3";
src = fetchFromGitHub {
owner = "paolostivanin";
repo = pname;
rev = "v${version}";
sha256 = "1qq4shwiz1if9vys052dnsbm4dfw1ynlj6nsb0v4zjly3ndspfsk";
};
buildInputs = [ libbaseencode libgcrypt ];
nativeBuildInputs = [ cmake pkg-config ];
meta = with lib; {
description = "C library that generates TOTP and HOTP";
homepage = "https://github.com/paolostivanin/libcotp";
license = licenses.asl20;
maintainers = with maintainers; [ alexbakker ];
};
}

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libvmaf"; pname = "libvmaf";
version = "2.1.1"; version = "2.2.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "netflix"; owner = "netflix";
repo = "vmaf"; repo = "vmaf";
rev = "v${version}"; rev = "v${version}";
sha256 = "0dynk1pmsyf23vfxljaazqkr27vfrvhj3dyjzm06zxpzsn59aif3"; sha256 = "1jlmivmdzlhizljbmsvqqxnhjfyjh8zxyf5xv6j040vbfj4mf14f";
}; };
sourceRoot = "source/libvmaf"; sourceRoot = "source/libvmaf";

View file

@ -8,13 +8,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libxlsxwriter"; pname = "libxlsxwriter";
version = "1.0.6"; version = "1.0.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jmcnamara"; owner = "jmcnamara";
repo = "libxlsxwriter"; repo = "libxlsxwriter";
rev = "RELEASE_${version}"; rev = "RELEASE_${version}";
sha256 = "03fdcbm0xnkxwv6fir4yy4x9q2p5h08j099w9xh5gc2ni7ygjlyx"; sha256 = "1z9bkg0pfkzxbpj2rys4mx9wmcxyjjqsg0nbiaabsg455q00plki";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -1,5 +1,5 @@
{ {
stdenv, lib, fetchFromGitHub, stdenv, lib, fetchFromGitHub, symlinkJoin,
cmake, expat, libyamlcpp, ilmbase, pystring, # Base dependencies cmake, expat, libyamlcpp, ilmbase, pystring, # Base dependencies
glew, freeglut, # Only required on Linux glew, freeglut, # Only required on Linux
@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
sha256 = "194j9jp5c8ws0fryiz936wyinphnpzwpqnzvw9ryx6rbiwrba487"; sha256 = "194j9jp5c8ws0fryiz936wyinphnpzwpqnzvw9ryx6rbiwrba487";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake (symlinkJoin { name = "expat"; paths = [ expat.out expat.dev ]; }) ];
buildInputs = [ expat libyamlcpp ilmbase pystring ] buildInputs = [ expat.out libyamlcpp ilmbase pystring ]
++ lib.optionals stdenv.hostPlatform.isLinux [ glew freeglut ] ++ lib.optionals stdenv.hostPlatform.isLinux [ glew freeglut ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ Carbon GLUT Cocoa ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ Carbon GLUT Cocoa ]
++ lib.optionals pythonBindings [ python3Packages.python python3Packages.pybind11 ] ++ lib.optionals pythonBindings [ python3Packages.python python3Packages.pybind11 ]

View file

@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
description = "Radeon Open Compute common language runtime"; description = "Radeon Open Compute common language runtime";
homepage = "https://github.com/ROCm-Developer-Tools/ROCclr"; homepage = "https://github.com/ROCm-Developer-Tools/ROCclr";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
# rocclr seems to have some AArch64 ifdefs, but does not seem # rocclr seems to have some AArch64 ifdefs, but does not seem
# to be supported yet by the build infrastructure. Recheck in # to be supported yet by the build infrastructure. Recheck in
# the future. # the future.

View file

@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
description = "APIs for compiling and inspecting AMDGPU code objects"; description = "APIs for compiling and inspecting AMDGPU code objects";
homepage = "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/tree/amd-stg-open/lib/comgr"; homepage = "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/tree/amd-stg-open/lib/comgr";
license = licenses.ncsa; license = licenses.ncsa;
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View file

@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
description = "Set of AMD-specific device-side language runtime libraries"; description = "Set of AMD-specific device-side language runtime libraries";
homepage = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs"; homepage = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs";
license = licenses.ncsa; license = licenses.ncsa;
maintainers = with maintainers; [ danieldk ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

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