Project import generated by Copybara.

GitOrigin-RevId: 04a2b269d8921505a2969fc9ec25c1f517f2b307
This commit is contained in:
Default email 2021-03-20 04:20:00 +00:00
parent 32466344b3
commit 48af15f7a5
991 changed files with 18629 additions and 7346 deletions

View file

@ -53,6 +53,7 @@
"6.topic: kernel": "6.topic: kernel":
- pkgs/build-support/kernel/**/* - pkgs/build-support/kernel/**/*
- pkgs/os-specific/linux/kernel/**/*
"6.topic: lua": "6.topic: lua":
- pkgs/development/interpreters/lua-5/**/* - pkgs/development/interpreters/lua-5/**/*

View file

@ -25,7 +25,7 @@ jobs:
- name: Fetch editorconfig-checker - name: Fetch editorconfig-checker
if: env.PR_DIFF if: env.PR_DIFF
env: env:
ECC_VERSION: "2.3.1" ECC_VERSION: "2.3.5"
ECC_URL: "https://github.com/editorconfig-checker/editorconfig-checker/releases/download" ECC_URL: "https://github.com/editorconfig-checker/editorconfig-checker/releases/download"
run: | run: |
curl -sSf -O -L -C - "$ECC_URL/$ECC_VERSION/ec-linux-amd64.tar.gz" && \ curl -sSf -O -L -C - "$ECC_URL/$ECC_VERSION/ec-linux-amd64.tar.gz" && \

View file

@ -111,6 +111,12 @@ Create a Docker image with many of the store paths being on their own layer to i
*Default:* the output path's hash *Default:* the output path's hash
`fromImage` _optional_
: The repository tarball containing the base image. It must be a valid Docker image, such as one exported by `docker save`.
*Default:* `null`, which can be seen as equivalent to `FROM scratch` of a `Dockerfile`.
`contents` _optional_ `contents` _optional_
: Top level paths in the container. Either a single derivation, or a list of derivations. : Top level paths in the container. Either a single derivation, or a list of derivations.

View file

@ -0,0 +1,19 @@
# FUSE {#sec-fuse}
Some packages rely on
[FUSE](https://www.kernel.org/doc/html/latest/filesystems/fuse.html) to provide
support for additional filesystems not supported by the kernel.
In general, FUSE software are primarily developed for Linux but many of them can
also run on macOS. Nixpkgs supports FUSE packages on macOS, but it requires
[macFUSE](https://osxfuse.github.io) to be installed outside of Nix. macFUSE
currently isn't packaged in Nixpkgs mainly because it includes a kernel
extension, which isn't supported by Nix outside of NixOS.
If a package fails to run on macOS with an error message similar to the
following, it's a likely sign that you need to have macFUSE installed.
dyld: Library not loaded: /usr/local/lib/libfuse.2.dylib
Referenced from: /nix/store/w8bi72bssv0bnxhwfw3xr1mvn7myf37x-sshfs-fuse-2.10/bin/sshfs
Reason: image not found
[1] 92299 abort /nix/store/w8bi72bssv0bnxhwfw3xr1mvn7myf37x-sshfs-fuse-2.10/bin/sshfs

View file

@ -12,6 +12,7 @@
<xi:include href="emacs.section.xml" /> <xi:include href="emacs.section.xml" />
<xi:include href="firefox.section.xml" /> <xi:include href="firefox.section.xml" />
<xi:include href="fish.section.xml" /> <xi:include href="fish.section.xml" />
<xi:include href="fuse.section.xml" />
<xi:include href="ibus.section.xml" /> <xi:include href="ibus.section.xml" />
<xi:include href="kakoune.section.xml" /> <xi:include href="kakoune.section.xml" />
<xi:include href="linux.section.xml" /> <xi:include href="linux.section.xml" />

View file

@ -638,7 +638,7 @@ are disabled.
#### Using pythonImportsCheck #### Using pythonImportsCheck
Although unit tests are highly prefered to valid correctness of a package. Not Although unit tests are highly prefered to validate correctness of a package, not
all packages have test suites that can be ran easily, and some have none at all. all packages have test suites that can be ran easily, and some have none at all.
To help ensure the package still works, `pythonImportsCheck` can attempt to import To help ensure the package still works, `pythonImportsCheck` can attempt to import
the listed modules. the listed modules.
@ -1487,11 +1487,12 @@ If you need to change a package's attribute(s) from `configuration.nix` you coul
nixpkgs.config.packageOverrides = super: { nixpkgs.config.packageOverrides = super: {
python = super.python.override { python = super.python.override {
packageOverrides = python-self: python-super: { packageOverrides = python-self: python-super: {
zerobin = python-super.zerobin.overrideAttrs (oldAttrs: { twisted = python-super.twisted.overrideAttrs (oldAttrs: {
src = super.fetchgit { src = super.fetchPipy {
url = "https://github.com/sametmax/0bin"; pname = "twisted";
rev = "a344dbb18fe7a855d0742b9a1cede7ce423b34ec"; version = "19.10.0";
sha256 = "16d769kmnrpbdr0ph0whyf4yff5df6zi4kmwx7sz1d3r6c8p6xji"; sha256 = "7394ba7f272ae722a74f3d969dcf599bc4ef093bc392038748a490f1724a515d";
extension = "tar.bz2";
}; };
}); });
}; };
@ -1499,9 +1500,11 @@ If you need to change a package's attribute(s) from `configuration.nix` you coul
}; };
``` ```
`pythonPackages.zerobin` is now globally overridden. All packages and also the `pythonPackages.twisted` is now globally overridden.
`zerobin` NixOS service use the new definition. Note that `python-super` refers All packages and also all NixOS services that reference `twisted`
to the old package set and `python-self` to the new, overridden version. (such as `services.buildbot-worker`) now use the new definition.
Note that `python-super` refers to the old package set and `python-self`
to the new, overridden version.
To modify only a Python package set instead of a whole Python derivation, use To modify only a Python package set instead of a whole Python derivation, use
this snippet: this snippet:
@ -1509,7 +1512,7 @@ this snippet:
```nix ```nix
myPythonPackages = pythonPackages.override { myPythonPackages = pythonPackages.override {
overrides = self: super: { overrides = self: super: {
zerobin = ...; twisted = ...;
}; };
} }
``` ```
@ -1522,11 +1525,12 @@ Use the following overlay template:
self: super: { self: super: {
python = super.python.override { python = super.python.override {
packageOverrides = python-self: python-super: { packageOverrides = python-self: python-super: {
zerobin = python-super.zerobin.overrideAttrs (oldAttrs: { twisted = python-super.twisted.overrideAttrs (oldAttrs: {
src = super.fetchgit { src = super.fetchPypi {
url = "https://github.com/sametmax/0bin"; pname = "twisted";
rev = "a344dbb18fe7a855d0742b9a1cede7ce423b34ec"; version = "19.10.0";
sha256 = "16d769kmnrpbdr0ph0whyf4yff5df6zi4kmwx7sz1d3r6c8p6xji"; sha256 = "7394ba7f272ae722a74f3d969dcf599bc4ef093bc392038748a490f1724a515d";
extension = "tar.bz2";
}; };
}); });
}; };
@ -1551,13 +1555,11 @@ In a `setup.py` or `setup.cfg` it is common to declare dependencies:
### Contributing guidelines ### Contributing guidelines
Following rules are desired to be respected: The following rules are desired to be respected:
* Python libraries are called from `python-packages.nix` and packaged with * Python libraries are called from `python-packages.nix` and packaged with
`buildPythonPackage`. The expression of a library should be in `buildPythonPackage`. The expression of a library should be in
`pkgs/development/python-modules/<name>/default.nix`. `pkgs/development/python-modules/<name>/default.nix`.
* Libraries in `pkgs/top-level/python-packages.nix` are sorted
alphanumerically to avoid merge conflicts and ease locating attributes.
* Python applications live outside of `python-packages.nix` and are packaged * Python applications live outside of `python-packages.nix` and are packaged
with `buildPythonApplication`. with `buildPythonApplication`.
* Make sure libraries build for all Python interpreters. * Make sure libraries build for all Python interpreters.
@ -1567,8 +1569,11 @@ Following rules are desired to be respected:
case, when you disable tests, leave a comment explaining why. case, when you disable tests, leave a comment explaining why.
* Commit names of Python libraries should reflect that they are Python * Commit names of Python libraries should reflect that they are Python
libraries, so write for example `pythonPackages.numpy: 1.11 -> 1.12`. libraries, so write for example `pythonPackages.numpy: 1.11 -> 1.12`.
* Attribute names in `python-packages.nix` should be normalized according to * Attribute names in `python-packages.nix` as well as `pname`s should match the
[PEP 0503](https://www.python.org/dev/peps/pep-0503/#normalized-names). This library's name on PyPI, but be normalized according to [PEP
means that characters should be converted to lowercase and `.` and `_` should 0503](https://www.python.org/dev/peps/pep-0503/#normalized-names). This means
be replaced by a single `-` (foo-bar-baz instead of Foo__Bar.baz ) that characters should be converted to lowercase and `.` and `_` should be
* Attribute names in `python-packages.nix` should be sorted alphanumerically. replaced by a single `-` (foo-bar-baz instead of Foo__Bar.baz).
If necessary, `pname` has to be given a different value within `fetchPypi`.
* Attribute names in `python-packages.nix` should be sorted alphanumerically to
avoid merge conflicts and ease locating attributes.

View file

@ -361,6 +361,17 @@ rec {
*/ */
byName = attr: f: modules: byName = attr: f: modules:
foldl' (acc: module: foldl' (acc: module:
if !(builtins.isAttrs module.${attr}) then
throw ''
You're trying to declare a value of type `${builtins.typeOf module.${attr}}'
rather than an attribute-set for the option
`${builtins.concatStringsSep "." prefix}'!
This usually happens if `${builtins.concatStringsSep "." prefix}' has option
definitions inside that are not matched. Please check how to properly define
this option by e.g. referring to `man 5 configuration.nix'!
''
else
acc // (mapAttrs (n: v: acc // (mapAttrs (n: v:
(acc.${n} or []) ++ f module v (acc.${n} or []) ++ f module v
) module.${attr} ) module.${attr}

View file

@ -139,9 +139,10 @@ rec {
then throw ("File contains no gitdir reference: " + path) then throw ("File contains no gitdir reference: " + path)
else else
let gitDir = absolutePath (dirOf path) (lib.head m); let gitDir = absolutePath (dirOf path) (lib.head m);
commonDir' = if pathIsRegularFile "${gitDir}/commondir" commonDir'' = if pathIsRegularFile "${gitDir}/commondir"
then lib.fileContents "${gitDir}/commondir" then lib.fileContents "${gitDir}/commondir"
else gitDir; else gitDir;
commonDir' = lib.removeSuffix "/" commonDir'';
commonDir = absolutePath gitDir commonDir'; commonDir = absolutePath gitDir commonDir';
refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}"; refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}";
in readCommitFromFile refFile commonDir in readCommitFromFile refFile commonDir

View file

@ -169,7 +169,7 @@ checkConfigOutput "foo" config.submodule.foo ./declare-submoduleWith-special.nix
## shorthandOnlyDefines config behaves as expected ## shorthandOnlyDefines config behaves as expected
checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix
checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix
checkConfigError 'value is a boolean while a set was expected' config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.nix checkConfigError "You're trying to declare a value of type \`bool'\nrather than an attribute-set for the option" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.nix
checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix
## submoduleWith should merge all modules in one swoop ## submoduleWith should merge all modules in one swoop

View file

@ -1036,6 +1036,16 @@
githubId = 75235; githubId = 75235;
name = "Michael Walker"; name = "Michael Walker";
}; };
bartuka = {
email = "wand@hey.com";
github = "wandersoncferreira";
githubId = 17708295;
name = "Wanderson Ferreira";
keys = [{
longkeyid = "rsa4096/0x56840A614DBE37AE";
fingerprint = "A3E1 C409 B705 50B3 BF41 492B 5684 0A61 4DBE 37AE";
}];
};
basvandijk = { basvandijk = {
email = "v.dijk.bas@gmail.com"; email = "v.dijk.bas@gmail.com";
github = "basvandijk"; github = "basvandijk";
@ -2942,7 +2952,7 @@
name = "Adam Copp"; name = "Adam Copp";
}; };
ethancedwards8 = { ethancedwards8 = {
email = "ethancarteredwards@gmail.com"; email = "ethan@ethancedwards.com";
github = "ethancedwards8"; github = "ethancedwards8";
githubId = 60861925; githubId = 60861925;
name = "Ethan Carter Edwards"; name = "Ethan Carter Edwards";
@ -6905,6 +6915,12 @@
githubId = 16385648; githubId = 16385648;
name = "Niko Pavlinek"; name = "Niko Pavlinek";
}; };
nixinator = {
email = "33lockdown33@protonmail.com";
github = "nixinator";
githubId = 66913205;
name = "Rick Sanchez";
};
nixy = { nixy = {
email = "nixy@nixy.moe"; email = "nixy@nixy.moe";
github = "nixy"; github = "nixy";
@ -7609,6 +7625,12 @@
fingerprint = "2CD2 B030 BD22 32EF DF5A 008A 3618 20A4 5DB4 1E9A"; fingerprint = "2CD2 B030 BD22 32EF DF5A 008A 3618 20A4 5DB4 1E9A";
}]; }];
}; };
polendri = {
email = "paul@ijj.li";
github = "polendri";
githubId = 1829032;
name = "Paul Hendry";
};
polyrod = { polyrod = {
email = "dc1mdp@gmail.com"; email = "dc1mdp@gmail.com";
github = "polyrod"; github = "polyrod";
@ -7717,12 +7739,6 @@
githubId = 33375; githubId = 33375;
name = "Peter Sanford"; name = "Peter Sanford";
}; };
pshendry = {
email = "paul@pshendry.com";
github = "pshendry";
githubId = 1829032;
name = "Paul Hendry";
};
psibi = { psibi = {
email = "sibi@psibi.in"; email = "sibi@psibi.in";
github = "psibi"; github = "psibi";
@ -8267,6 +8283,12 @@
fingerprint = "1401 1B63 393D 16C1 AA9C C521 8526 B757 4A53 6236"; fingerprint = "1401 1B63 393D 16C1 AA9C C521 8526 B757 4A53 6236";
}]; }];
}; };
rowanG077 = {
email = "goemansrowan@gmail.com";
github = "rowanG077";
githubId = 7439756;
name = "Rowan Goemans";
};
royneary = { royneary = {
email = "christian@ulrich.earth"; email = "christian@ulrich.earth";
github = "royneary"; github = "royneary";
@ -8315,6 +8337,12 @@
githubId = 4958190; githubId = 4958190;
name = "Rushmore Mushambi"; name = "Rushmore Mushambi";
}; };
russell = {
email = "russell.sim@gmail.com";
github = "russell";
githubId = 2660;
name = "Russell Sim";
};
ruuda = { ruuda = {
email = "dev+nix@veniogames.com"; email = "dev+nix@veniogames.com";
github = "ruuda"; github = "ruuda";
@ -10186,6 +10214,12 @@
email = "vq@erq.se"; email = "vq@erq.se";
name = "Daniel Nilsson"; name = "Daniel Nilsson";
}; };
vrinek = {
email = "vrinek@hey.com";
github = "vrinek";
name = "Kostas Karachalios";
githubId = 81346;
};
vrthra = { vrthra = {
email = "rahul@gopinath.org"; email = "rahul@gopinath.org";
github = "vrthra"; github = "vrthra";
@ -10412,6 +10446,12 @@
githubId = 36407913; githubId = 36407913;
name = "Uli Baum"; name = "Uli Baum";
}; };
xfnw = {
email = "xfnw+nixos@riseup.net";
github = "xfnw";
githubId = 66233223;
name = "Owen";
};
xfix = { xfix = {
email = "konrad@borowski.pw"; email = "konrad@borowski.pw";
github = "xfix"; github = "xfix";
@ -10800,6 +10840,12 @@
githubId = 3674056; githubId = 3674056;
name = "Asad Saeeduddin"; name = "Asad Saeeduddin";
}; };
matthewcroughan = {
email = "matt@croughan.sh";
github = "matthewcroughan";
githubId = 26458780;
name = "Matthew Croughan";
};
ngerstle = { ngerstle = {
name = "Nicholas Gerstle"; name = "Nicholas Gerstle";
email = "ngerstle@gmail.com"; email = "ngerstle@gmail.com";

View file

@ -416,6 +416,7 @@ def rewrite_input(
} }
with open(deprecated, "w") as f: with open(deprecated, "w") as f:
json.dump(deprecations, f, indent=4, sort_keys=True) json.dump(deprecations, f, indent=4, sort_keys=True)
f.write("\n")
lines = sorted(lines, key=str.casefold) lines = sorted(lines, key=str.casefold)

View file

@ -1,5 +1,5 @@
.PHONY: all .PHONY: all
all: manual-combined.xml format all: manual-combined.xml
.PHONY: debug .PHONY: debug
debug: generated manual-combined.xml debug: generated manual-combined.xml

View file

@ -25,7 +25,8 @@
<screen> <screen>
<prompt>$ </prompt>cd /path/to/nixpkgs/nixos/doc/manual <prompt>$ </prompt>cd /path/to/nixpkgs/nixos/doc/manual
<prompt>$ </prompt>make <prompt>$ </prompt>nix-shell
<prompt>nix-shell$ </prompt>make
</screen> </screen>
<para> <para>

View file

@ -720,8 +720,8 @@ environment.systemPackages = [
</para> </para>
<para> <para>
Aditionally to the much stricter runtime environmet the Additionally to the much stricter runtime environment the
<literal>/dev/urandom</literal> mount lines we previously had in the code (that would <literal>/dev/urandom</literal> mount lines we previously had in the code (that
randomly failed during the stop-phase) have been removed as systemd will take care of those for us. randomly failed during the stop-phase) have been removed as systemd will take care of those for us.
</para> </para>
@ -809,7 +809,7 @@ environment.systemPackages = [
<listitem> <listitem>
<para> <para>
Platforms, like <varname>stdenv.hostPlatform</varname>, no longer have a <varname>platform</varname> attribute. Platforms, like <varname>stdenv.hostPlatform</varname>, no longer have a <varname>platform</varname> attribute.
It has been (mostly) flattoned away: It has been (mostly) flattened away:
</para> </para>
<itemizedlist> <itemizedlist>
<listitem><para><varname>platform.gcc</varname> is now <varname>gcc</varname></para></listitem> <listitem><para><varname>platform.gcc</varname> is now <varname>gcc</varname></para></listitem>

View file

@ -17,7 +17,19 @@ nix-build '<nixpkgs/nixos/lib/eval-config.nix>' \
img_path=$(echo gce/*.tar.gz) img_path=$(echo gce/*.tar.gz)
img_name=${IMAGE_NAME:-$(basename "$img_path")} img_name=${IMAGE_NAME:-$(basename "$img_path")}
img_id=$(echo "$img_name" | sed 's|.raw.tar.gz$||;s|\.|-|g;s|_|-|g') img_id=$(echo "$img_name" | sed 's|.raw.tar.gz$||;s|\.|-|g;s|_|-|g')
img_family=$(echo "$img_id" | cut -d - -f1-4)
if ! gsutil ls "gs://${BUCKET_NAME}/$img_name"; then if ! gsutil ls "gs://${BUCKET_NAME}/$img_name"; then
gsutil cp "$img_path" "gs://${BUCKET_NAME}/$img_name" gsutil cp "$img_path" "gs://${BUCKET_NAME}/$img_name"
gsutil acl ch -u AllUsers:R "gs://${BUCKET_NAME}/$img_name" gsutil acl ch -u AllUsers:R "gs://${BUCKET_NAME}/$img_name"
gcloud compute images create \
"$img_id" \
--source-uri "gs://${BUCKET_NAME}/$img_name" \
--family="$img_family"
gcloud compute images add-iam-policy-binding \
"$img_id" \
--member='allAuthenticatedUsers' \
--role='roles/compute.imageUser'
fi fi

View file

@ -71,7 +71,7 @@ in
#utmp = 29; # unused #utmp = 29; # unused
# ddclient = 30; # converted to DynamicUser = true # ddclient = 30; # converted to DynamicUser = true
davfs2 = 31; davfs2 = 31;
#disnix = 33; # module removed disnix = 33;
osgi = 34; osgi = 34;
tor = 35; tor = 35;
cups = 36; cups = 36;
@ -387,7 +387,7 @@ in
utmp = 29; utmp = 29;
# ddclient = 30; # converted to DynamicUser = true # ddclient = 30; # converted to DynamicUser = true
davfs2 = 31; davfs2 = 31;
#disnix = 33; # module removed disnix = 33;
osgi = 34; osgi = 34;
tor = 35; tor = 35;
#cups = 36; # unused #cups = 36; # unused

View file

@ -461,6 +461,8 @@
./services/misc/devmon.nix ./services/misc/devmon.nix
./services/misc/dictd.nix ./services/misc/dictd.nix
./services/misc/dwm-status.nix ./services/misc/dwm-status.nix
./services/misc/dysnomia.nix
./services/misc/disnix.nix
./services/misc/docker-registry.nix ./services/misc/docker-registry.nix
./services/misc/domoticz.nix ./services/misc/domoticz.nix
./services/misc/errbot.nix ./services/misc/errbot.nix
@ -924,6 +926,7 @@
./services/web-apps/selfoss.nix ./services/web-apps/selfoss.nix
./services/web-apps/shiori.nix ./services/web-apps/shiori.nix
./services/web-apps/virtlyst.nix ./services/web-apps/virtlyst.nix
./services/web-apps/wiki-js.nix
./services/web-apps/whitebophir.nix ./services/web-apps/whitebophir.nix
./services/web-apps/wordpress.nix ./services/web-apps/wordpress.nix
./services/web-apps/youtrack.nix ./services/web-apps/youtrack.nix

View file

@ -40,7 +40,7 @@ in
configFile = mkOption { configFile = mkOption {
type = types.nullOr types.path; type = types.nullOr types.path;
default = null; default = null;
example = literalExample "$${pkgs.my-configs}/lesskey"; example = literalExample "\${pkgs.my-configs}/lesskey";
description = '' description = ''
Path to lesskey configuration file. Path to lesskey configuration file.

View file

@ -24,7 +24,7 @@ let
Type = "oneshot"; Type = "oneshot";
User = "acme"; User = "acme";
Group = mkDefault "acme"; Group = mkDefault "acme";
UMask = 0023; UMask = 0022;
StateDirectoryMode = 750; StateDirectoryMode = 750;
ProtectSystem = "full"; ProtectSystem = "full";
PrivateTmp = true; PrivateTmp = true;
@ -303,9 +303,15 @@ let
} }
${optionalString (data.webroot != null) '' ${optionalString (data.webroot != null) ''
# Ensure the webroot exists # Ensure the webroot exists. Fixing group is required in case configuration was changed between runs.
mkdir -p '${data.webroot}/.well-known/acme-challenge' # Lego will fail if the webroot does not exist at all.
chown 'acme:${data.group}' ${data.webroot}/{.well-known,.well-known/acme-challenge} (
mkdir -p '${data.webroot}/.well-known/acme-challenge' \
&& chgrp '${data.group}' ${data.webroot}/.well-known/acme-challenge
) || (
echo 'Please ensure ${data.webroot}/.well-known/acme-challenge exists and is writable by acme:${data.group}' \
&& exit 1
)
''} ''}
echo '${domainHash}' > domainhash.txt echo '${domainHash}' > domainhash.txt

View file

@ -213,7 +213,9 @@ in {
description = "Music Player Daemon Socket"; description = "Music Player Daemon Socket";
wantedBy = [ "sockets.target" ]; wantedBy = [ "sockets.target" ];
listenStreams = [ listenStreams = [
"${optionalString (cfg.network.listenAddress != "any") "${cfg.network.listenAddress}:"}${toString cfg.network.port}" (if pkgs.lib.hasPrefix "/" cfg.network.listenAddress
then cfg.network.listenAddress
else "${optionalString (cfg.network.listenAddress != "any") "${cfg.network.listenAddress}:"}${toString cfg.network.port}")
]; ];
socketConfig = { socketConfig = {
Backlog = 5; Backlog = 5;

View file

@ -280,6 +280,8 @@ in
keep-outputs = true keep-outputs = true
keep-derivations = true keep-derivations = true
'' + optionalString (versionOlder (getVersion config.nix.package.out) "2.4pre") ''
# The default (`true') slows Nix down a lot since the build farm # The default (`true') slows Nix down a lot since the build farm
# has so many GC roots. # has so many GC roots.
gc-check-reachability = false gc-check-reachability = false

View file

@ -188,7 +188,8 @@ in
systemd.packages = [ package ]; systemd.packages = [ package ];
# we cannot use DynamicUser as we need the the geoclue user to exist for the dbus policy to work # we cannot use DynamicUser as we need the the geoclue user to exist for the
# dbus policy to work
users = { users = {
users.geoclue = { users.geoclue = {
isSystemUser = true; isSystemUser = true;
@ -217,6 +218,7 @@ in
# we can't be part of a system service, and the agent should # we can't be part of a system service, and the agent should
# be okay with the main service coming and going # be okay with the main service coming and going
wantedBy = [ "default.target" ]; wantedBy = [ "default.target" ];
unitConfig.ConditionUser = "!@system";
serviceConfig = { serviceConfig = {
Type = "exec"; Type = "exec";
ExecStart = "${package}/libexec/geoclue-2.0/demos/agent"; ExecStart = "${package}/libexec/geoclue-2.0/demos/agent";

View file

@ -119,22 +119,31 @@ in
environment.systemPackages = [ pkgs.trousers ]; environment.systemPackages = [ pkgs.trousers ];
# system.activationScripts.tcsd = services.udev.extraRules = ''
# '' # Give tcsd ownership of all TPM devices
# chown ${cfg.user}:${cfg.group} ${tcsdConf} KERNEL=="tpm[0-9]*", MODE="0660", OWNER="${cfg.user}", GROUP="${cfg.group}"
# ''; # Tag TPM devices to create a .device unit for tcsd to depend on
ACTION=="add", KERNEL=="tpm[0-9]*", TAG+="systemd"
'';
systemd.tmpfiles.rules = [
# Initialise the state directory
"d ${cfg.stateDir} 0770 ${cfg.user} ${cfg.group} - -"
];
systemd.services.tcsd = { systemd.services.tcsd = {
description = "TCSD"; description = "Manager for Trusted Computing resources";
after = [ "systemd-udev-settle.service" ]; documentation = [ "man:tcsd(8)" ];
requires = [ "dev-tpm0.device" ];
after = [ "dev-tpm0.device" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.trousers ];
preStart = serviceConfig = {
'' User = cfg.user;
mkdir -m 0700 -p ${cfg.stateDir} Group = cfg.group;
chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir} ExecStart = "${pkgs.trousers}/sbin/tcsd -f -c ${tcsdConf}";
''; };
serviceConfig.ExecStart = "${pkgs.trousers}/sbin/tcsd -f -c ${tcsdConf}";
}; };
users.users = optionalAttrs (cfg.user == "tss") { users.users = optionalAttrs (cfg.user == "tss") {

View file

@ -39,7 +39,6 @@ in
type = types.package; type = types.package;
default = pkgs.graylog; default = pkgs.graylog;
defaultText = "pkgs.graylog"; defaultText = "pkgs.graylog";
example = literalExample "pkgs.graylog";
description = "Graylog package to use."; description = "Graylog package to use.";
}; };
@ -138,14 +137,13 @@ in
"d '${cfg.messageJournalDir}' - ${cfg.user} - - -" "d '${cfg.messageJournalDir}' - ${cfg.user} - - -"
]; ];
systemd.services.graylog = with pkgs; { systemd.services.graylog = {
description = "Graylog Server"; description = "Graylog Server";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
environment = { environment = {
JAVA_HOME = jre;
GRAYLOG_CONF = "${confFile}"; GRAYLOG_CONF = "${confFile}";
}; };
path = [ pkgs.jre_headless pkgs.which pkgs.procps ]; path = [ pkgs.which pkgs.procps ];
preStart = '' preStart = ''
rm -rf /var/lib/graylog/plugins || true rm -rf /var/lib/graylog/plugins || true
mkdir -p /var/lib/graylog/plugins -m 755 mkdir -p /var/lib/graylog/plugins -m 755

View file

@ -0,0 +1,98 @@
# Disnix server
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.disnix;
in
{
###### interface
options = {
services.disnix = {
enable = mkEnableOption "Disnix";
enableMultiUser = mkOption {
type = types.bool;
default = true;
description = "Whether to support multi-user mode by enabling the Disnix D-Bus service";
};
useWebServiceInterface = mkEnableOption "the DisnixWebService interface running on Apache Tomcat";
package = mkOption {
type = types.path;
description = "The Disnix package";
default = pkgs.disnix;
defaultText = "pkgs.disnix";
};
enableProfilePath = mkEnableOption "exposing the Disnix profiles in the system's PATH";
profiles = mkOption {
type = types.listOf types.string;
default = [ "default" ];
example = [ "default" ];
description = "Names of the Disnix profiles to expose in the system's PATH";
};
};
};
###### implementation
config = mkIf cfg.enable {
dysnomia.enable = true;
environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
environment.variables.PATH = lib.optionals cfg.enableProfilePath (map (profileName: "/nix/var/nix/profiles/disnix/${profileName}/bin" ) cfg.profiles);
services.dbus.enable = true;
services.dbus.packages = [ pkgs.disnix ];
services.tomcat.enable = cfg.useWebServiceInterface;
services.tomcat.extraGroups = [ "disnix" ];
services.tomcat.javaOpts = "${optionalString cfg.useWebServiceInterface "-Djava.library.path=${pkgs.libmatthew_java}/lib/jni"} ";
services.tomcat.sharedLibs = optional cfg.useWebServiceInterface "${pkgs.DisnixWebService}/share/java/DisnixConnection.jar"
++ optional cfg.useWebServiceInterface "${pkgs.dbus_java}/share/java/dbus.jar";
services.tomcat.webapps = optional cfg.useWebServiceInterface pkgs.DisnixWebService;
users.groups.disnix.gid = config.ids.gids.disnix;
systemd.services = {
disnix = mkIf cfg.enableMultiUser {
description = "Disnix server";
wants = [ "dysnomia.target" ];
wantedBy = [ "multi-user.target" ];
after = [ "dbus.service" ]
++ optional config.services.httpd.enable "httpd.service"
++ optional config.services.mysql.enable "mysql.service"
++ optional config.services.postgresql.enable "postgresql.service"
++ optional config.services.tomcat.enable "tomcat.service"
++ optional config.services.svnserve.enable "svnserve.service"
++ optional config.services.mongodb.enable "mongodb.service"
++ optional config.services.influxdb.enable "influxdb.service";
restartIfChanged = false;
path = [ config.nix.package cfg.package config.dysnomia.package "/run/current-system/sw" ];
environment = {
HOME = "/root";
}
// (if config.environment.variables ? DYSNOMIA_CONTAINERS_PATH then { inherit (config.environment.variables) DYSNOMIA_CONTAINERS_PATH; } else {})
// (if config.environment.variables ? DYSNOMIA_MODULES_PATH then { inherit (config.environment.variables) DYSNOMIA_MODULES_PATH; } else {});
serviceConfig.ExecStart = "${cfg.package}/bin/disnix-service";
};
};
};
}

View file

@ -0,0 +1,259 @@
{pkgs, lib, config, ...}:
with lib;
let
cfg = config.dysnomia;
printProperties = properties:
concatMapStrings (propertyName:
let
property = properties.${propertyName};
in
if isList property then "${propertyName}=(${lib.concatMapStrings (elem: "\"${toString elem}\" ") (properties.${propertyName})})\n"
else "${propertyName}=\"${toString property}\"\n"
) (builtins.attrNames properties);
properties = pkgs.stdenv.mkDerivation {
name = "dysnomia-properties";
buildCommand = ''
cat > $out << "EOF"
${printProperties cfg.properties}
EOF
'';
};
containersDir = pkgs.stdenv.mkDerivation {
name = "dysnomia-containers";
buildCommand = ''
mkdir -p $out
cd $out
${concatMapStrings (containerName:
let
containerProperties = cfg.containers.${containerName};
in
''
cat > ${containerName} <<EOF
${printProperties containerProperties}
type=${containerName}
EOF
''
) (builtins.attrNames cfg.containers)}
'';
};
linkMutableComponents = {containerName}:
''
mkdir ${containerName}
${concatMapStrings (componentName:
let
component = cfg.components.${containerName}.${componentName};
in
"ln -s ${component} ${containerName}/${componentName}\n"
) (builtins.attrNames (cfg.components.${containerName} or {}))}
'';
componentsDir = pkgs.stdenv.mkDerivation {
name = "dysnomia-components";
buildCommand = ''
mkdir -p $out
cd $out
${concatMapStrings (containerName:
linkMutableComponents { inherit containerName; }
) (builtins.attrNames cfg.components)}
'';
};
dysnomiaFlags = {
enableApacheWebApplication = config.services.httpd.enable;
enableAxis2WebService = config.services.tomcat.axis2.enable;
enableDockerContainer = config.virtualisation.docker.enable;
enableEjabberdDump = config.services.ejabberd.enable;
enableMySQLDatabase = config.services.mysql.enable;
enablePostgreSQLDatabase = config.services.postgresql.enable;
enableTomcatWebApplication = config.services.tomcat.enable;
enableMongoDatabase = config.services.mongodb.enable;
enableSubversionRepository = config.services.svnserve.enable;
enableInfluxDatabase = config.services.influxdb.enable;
};
in
{
options = {
dysnomia = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable Dysnomia";
};
enableAuthentication = mkOption {
type = types.bool;
default = false;
description = "Whether to publish privacy-sensitive authentication credentials";
};
package = mkOption {
type = types.path;
description = "The Dysnomia package";
};
properties = mkOption {
description = "An attribute set in which each attribute represents a machine property. Optionally, these values can be shell substitutions.";
default = {};
};
containers = mkOption {
description = "An attribute set in which each key represents a container and each value an attribute set providing its configuration properties";
default = {};
};
components = mkOption {
description = "An atttribute set in which each key represents a container and each value an attribute set in which each key represents a component and each value a derivation constructing its initial state";
default = {};
};
extraContainerProperties = mkOption {
description = "An attribute set providing additional container settings in addition to the default properties";
default = {};
};
extraContainerPaths = mkOption {
description = "A list of paths containing additional container configurations that are added to the search folders";
default = [];
};
extraModulePaths = mkOption {
description = "A list of paths containing additional modules that are added to the search folders";
default = [];
};
enableLegacyModules = mkOption {
type = types.bool;
default = true;
description = "Whether to enable Dysnomia legacy process and wrapper modules";
};
};
};
config = mkIf cfg.enable {
environment.etc = {
"dysnomia/containers" = {
source = containersDir;
};
"dysnomia/components" = {
source = componentsDir;
};
"dysnomia/properties" = {
source = properties;
};
};
environment.variables = {
DYSNOMIA_STATEDIR = "/var/state/dysnomia-nixos";
DYSNOMIA_CONTAINERS_PATH = "${lib.concatMapStrings (containerPath: "${containerPath}:") cfg.extraContainerPaths}/etc/dysnomia/containers";
DYSNOMIA_MODULES_PATH = "${lib.concatMapStrings (modulePath: "${modulePath}:") cfg.extraModulePaths}/etc/dysnomia/modules";
};
environment.systemPackages = [ cfg.package ];
dysnomia.package = pkgs.dysnomia.override (origArgs: dysnomiaFlags // lib.optionalAttrs (cfg.enableLegacyModules) {
enableLegacy = builtins.trace ''
WARNING: Dysnomia has been configured to use the legacy 'process' and 'wrapper'
modules for compatibility reasons! If you rely on these modules, consider
migrating to better alternatives.
More information: https://raw.githubusercontent.com/svanderburg/dysnomia/f65a9a84827bcc4024d6b16527098b33b02e4054/README-legacy.md
If you have migrated already or don't rely on these Dysnomia modules, you can
disable legacy mode with the following NixOS configuration option:
dysnomia.enableLegacyModules = false;
In a future version of Dysnomia (and NixOS) the legacy option will go away!
'' true;
});
dysnomia.properties = {
hostname = config.networking.hostName;
inherit (config.nixpkgs.localSystem) system;
supportedTypes = [
"echo"
"fileset"
"process"
"wrapper"
# These are not base modules, but they are still enabled because they work with technology that are always enabled in NixOS
"systemd-unit"
"sysvinit-script"
"nixos-configuration"
]
++ optional (dysnomiaFlags.enableApacheWebApplication) "apache-webapplication"
++ optional (dysnomiaFlags.enableAxis2WebService) "axis2-webservice"
++ optional (dysnomiaFlags.enableDockerContainer) "docker-container"
++ optional (dysnomiaFlags.enableEjabberdDump) "ejabberd-dump"
++ optional (dysnomiaFlags.enableInfluxDatabase) "influx-database"
++ optional (dysnomiaFlags.enableMySQLDatabase) "mysql-database"
++ optional (dysnomiaFlags.enablePostgreSQLDatabase) "postgresql-database"
++ optional (dysnomiaFlags.enableTomcatWebApplication) "tomcat-webapplication"
++ optional (dysnomiaFlags.enableMongoDatabase) "mongo-database"
++ optional (dysnomiaFlags.enableSubversionRepository) "subversion-repository";
};
dysnomia.containers = lib.recursiveUpdate ({
process = {};
wrapper = {};
}
// lib.optionalAttrs (config.services.httpd.enable) { apache-webapplication = {
documentRoot = config.services.httpd.virtualHosts.localhost.documentRoot;
}; }
// lib.optionalAttrs (config.services.tomcat.axis2.enable) { axis2-webservice = {}; }
// lib.optionalAttrs (config.services.ejabberd.enable) { ejabberd-dump = {
ejabberdUser = config.services.ejabberd.user;
}; }
// lib.optionalAttrs (config.services.mysql.enable) { mysql-database = {
mysqlPort = config.services.mysql.port;
mysqlSocket = "/run/mysqld/mysqld.sock";
} // lib.optionalAttrs cfg.enableAuthentication {
mysqlUsername = "root";
};
}
// lib.optionalAttrs (config.services.postgresql.enable) { postgresql-database = {
} // lib.optionalAttrs (cfg.enableAuthentication) {
postgresqlUsername = "postgres";
};
}
// lib.optionalAttrs (config.services.tomcat.enable) { tomcat-webapplication = {
tomcatPort = 8080;
}; }
// lib.optionalAttrs (config.services.mongodb.enable) { mongo-database = {}; }
// lib.optionalAttrs (config.services.influxdb.enable) {
influx-database = {
influxdbUsername = config.services.influxdb.user;
influxdbDataDir = "${config.services.influxdb.dataDir}/data";
influxdbMetaDir = "${config.services.influxdb.dataDir}/meta";
};
}
// lib.optionalAttrs (config.services.svnserve.enable) { subversion-repository = {
svnBaseDir = config.services.svnserve.svnBaseDir;
}; }) cfg.extraContainerProperties;
boot.extraSystemdUnitPaths = [ "/etc/systemd-mutable/system" ];
system.activationScripts.dysnomia = ''
mkdir -p /etc/systemd-mutable/system
if [ ! -f /etc/systemd-mutable/system/dysnomia.target ]
then
( echo "[Unit]"
echo "Description=Services that are activated and deactivated by Dysnomia"
echo "After=final.target"
) > /etc/systemd-mutable/system/dysnomia.target
fi
'';
};
}

View file

@ -128,11 +128,16 @@ in
{ {
LogType = "console"; LogType = "console";
Server = cfg.server; Server = cfg.server;
ListenIP = cfg.listen.ip;
ListenPort = cfg.listen.port; ListenPort = cfg.listen.port;
LoadModule = builtins.attrNames cfg.modules;
} }
(mkIf (cfg.modules != {}) { LoadModulePath = "${moduleEnv}/lib"; }) (mkIf (cfg.modules != {}) {
LoadModule = builtins.attrNames cfg.modules;
LoadModulePath = "${moduleEnv}/lib";
})
# the default value for "ListenIP" is 0.0.0.0 but zabbix agent 2 cannot accept configuration files which
# explicitly set "ListenIP" to the default value...
(mkIf (cfg.listen.ip != "0.0.0.0") { ListenIP = cfg.listen.ip; })
]; ];
networking.firewall = mkIf cfg.openFirewall { networking.firewall = mkIf cfg.openFirewall {

View file

@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let
inherit (lib) mkEnableOption mkIf mkOption types; inherit (lib) mkEnableOption mkIf mkOption optionalString types;
generic = variant: generic = variant:
let let
@ -26,6 +26,14 @@ let
<link xlink:href='http://bird.network.cz/'/> <link xlink:href='http://bird.network.cz/'/>
''; '';
}; };
checkConfig = mkOption {
type = types.bool;
default = true;
description = ''
Whether the config should be checked at build time.
Disabling this might become necessary if the config includes files not present during build time.
'';
};
}; };
}; };
@ -36,7 +44,7 @@ let
environment.etc."bird/${variant}.conf".source = pkgs.writeTextFile { environment.etc."bird/${variant}.conf".source = pkgs.writeTextFile {
name = "${variant}.conf"; name = "${variant}.conf";
text = cfg.config; text = cfg.config;
checkPhase = '' checkPhase = optionalString cfg.checkConfig ''
${pkg}/bin/${birdBin} -d -p -c $out ${pkg}/bin/${birdBin} -d -p -c $out
''; '';
}; };
@ -50,7 +58,7 @@ let
Type = "forking"; Type = "forking";
Restart = "on-failure"; Restart = "on-failure";
ExecStart = "${pkg}/bin/${birdBin} -c /etc/bird/${variant}.conf -u ${variant} -g ${variant}"; ExecStart = "${pkg}/bin/${birdBin} -c /etc/bird/${variant}.conf -u ${variant} -g ${variant}";
ExecReload = "${pkg}/bin/${birdc} configure"; ExecReload = "/bin/sh -c '${pkg}/bin/${birdBin} -c /etc/bird/${variant}.conf -p && ${pkg}/bin/${birdc} configure'";
ExecStop = "${pkg}/bin/${birdc} down"; ExecStop = "${pkg}/bin/${birdc} down";
CapabilityBoundingSet = [ "CAP_CHOWN" "CAP_FOWNER" "CAP_DAC_OVERRIDE" "CAP_SETUID" "CAP_SETGID" CapabilityBoundingSet = [ "CAP_CHOWN" "CAP_FOWNER" "CAP_DAC_OVERRIDE" "CAP_SETUID" "CAP_SETGID"
# see bird/sysdep/linux/syspriv.h # see bird/sysdep/linux/syspriv.h

View file

@ -245,7 +245,7 @@ in
fi fi
if [ -z "$CJDNS_ADMIN_PASSWORD" ]; then if [ -z "$CJDNS_ADMIN_PASSWORD" ]; then
echo "CJDNS_ADMIN_PASSWORD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 96)" \ echo "CJDNS_ADMIN_PASSWORD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" \
>> /etc/cjdns.keys >> /etc/cjdns.keys
fi fi
''; '';

View file

@ -10,12 +10,12 @@ let
mkListen = kind: addr: let mkListen = kind: addr: let
al_v4 = builtins.match "([0-9.]+):([0-9]+)" addr; al_v4 = builtins.match "([0-9.]+):([0-9]+)" addr;
al_v6 = builtins.match "\\[(.+)]:([0-9]+)" addr; al_v6 = builtins.match "\\[(.+)]:([0-9]+)" addr;
al_portOnly = builtins.match "()([0-9]+)" addr; al_portOnly = builtins.match "([0-9]+)" addr;
al = findFirst (a: a != null) al = findFirst (a: a != null)
(throw "services.kresd.*: incorrect address specification '${addr}'") (throw "services.kresd.*: incorrect address specification '${addr}'")
[ al_v4 al_v6 al_portOnly ]; [ al_v4 al_v6 al_portOnly ];
port = last al; port = last al;
addrSpec = if al_portOnly == null then "'${head al}'" else "{'::', '127.0.0.1'}"; addrSpec = if al_portOnly == null then "'${head al}'" else "{'::', '0.0.0.0'}";
in # freebind is set for compatibility with earlier kresd services; in # freebind is set for compatibility with earlier kresd services;
# it could be configurable, for example. # it could be configurable, for example.
'' ''
@ -137,10 +137,5 @@ in {
}; };
# We don't mind running stop phase from wrong version. It seems less racy. # We don't mind running stop phase from wrong version. It seems less racy.
systemd.services."kresd@".stopIfChanged = false; systemd.services."kresd@".stopIfChanged = false;
# Try cleaning up the previously default location of cache file.
# Note that /var/cache/* should always be safe to remove.
# TODO: remove later, probably between 20.09 and 21.05
systemd.tmpfiles.rules = [ "R /var/cache/kresd" ];
}; };
} }

View file

@ -238,7 +238,7 @@ let
wantedBy = [ "wireguard-${name}.service" ]; wantedBy = [ "wireguard-${name}.service" ];
requiredBy = [ "wireguard-${name}.service" ]; requiredBy = [ "wireguard-${name}.service" ];
before = [ "wireguard-${name}.service" ]; before = [ "wireguard-${name}.service" ];
path = with pkgs; [ wireguard ]; path = with pkgs; [ wireguard-tools ];
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";

View file

@ -88,7 +88,7 @@ in
enable = true; enable = true;
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${pkgs.pythonPackages.zerobin}/bin/zerobin ${cfg.listenAddress} ${toString cfg.listenPort} false ${cfg.user} ${cfg.group} ${zerobin_config}"; serviceConfig.ExecStart = "${pkgs.zerobin}/bin/zerobin ${cfg.listenAddress} ${toString cfg.listenPort} false ${cfg.user} ${cfg.group} ${zerobin_config}";
serviceConfig.PrivateTmp="yes"; serviceConfig.PrivateTmp="yes";
serviceConfig.User = cfg.user; serviceConfig.User = cfg.user;
serviceConfig.Group = cfg.group; serviceConfig.Group = cfg.group;

View file

@ -26,19 +26,46 @@ in {
''; '';
}; };
capabilities = mkOption { capabilities = {
type = types.commas; view = mkOption {
default = "view"; type = types.bool;
default = true;
description = '' description = ''
Enable the view, add, and/or manage capabilities. E.g. view,add Enable the view capability.
'';
};
add = mkOption {
type = types.bool;
default = false;
description = ''
Enable the add capability.
'';
};
manage = mkOption {
type = types.bool;
default = false;
description = ''
Enable the manage capability.
'';
};
};
stateDir = mkOption {
type = types.path;
default = "/var/lib/hledger-web";
description = ''
Path the service has access to. If left as the default value this
directory will automatically be created before the hledger-web server
starts, otherwise the sysadmin is responsible for ensuring the
directory exists with appropriate ownership and permissions.
''; '';
}; };
journalFile = mkOption { journalFiles = mkOption {
type = types.path; type = types.listOf types.str;
example = "/home/hledger/.hledger.journal"; default = [ ".hledger.journal" ];
description = '' description = ''
Input journal file. Paths to journal files relative to <option>services.hledger-web.stateDir</option>.
''; '';
}; };
@ -50,28 +77,66 @@ in {
Base URL, when sharing over a network. Base URL, when sharing over a network.
''; '';
}; };
extraOptions = mkOption {
type = types.listOf types.str;
default = [];
example = [ "--forecast" ];
description = ''
Extra command line arguments to pass to hledger-web.
'';
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
systemd.services.hledger-web = {
users.users.hledger = {
name = "hledger";
group = "hledger";
isSystemUser = true;
home = cfg.stateDir;
useDefaultShell = true;
};
users.groups.hledger = {};
systemd.services.hledger-web = let
capabilityString = with cfg.capabilities; concatStringsSep "," (
(optional view "view")
++ (optional add "add")
++ (optional manage "manage")
);
serverArgs = with cfg; escapeShellArgs ([
"--serve"
"--host=${host}"
"--port=${toString port}"
"--capabilities=${capabilityString}"
(optionalString (cfg.baseUrl != null) "--base-url=${cfg.baseUrl}")
(optionalString (cfg.serveApi) "--serve-api")
] ++ (map (f: "--file=${stateDir}/${f}") cfg.journalFiles)
++ extraOptions);
in {
description = "hledger-web - web-app for the hledger accounting tool."; description = "hledger-web - web-app for the hledger accounting tool.";
documentation = [ https://hledger.org/hledger-web.html ]; documentation = [ https://hledger.org/hledger-web.html ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "networking.target" ]; after = [ "networking.target" ];
serviceConfig = { serviceConfig = mkMerge [
ExecStart = '' {
${pkgs.hledger-web}/bin/hledger-web \ ExecStart = "${pkgs.hledger-web}/bin/hledger-web ${serverArgs}";
--host=${cfg.host} \
--port=${toString cfg.port} \
--file=${cfg.journalFile} \
"--capabilities=${cfg.capabilities}" \
${optionalString (cfg.baseUrl != null) "--base-url=${cfg.baseUrl}"} \
${optionalString (cfg.serveApi) "--serve-api"}
'';
Restart = "always"; Restart = "always";
}; WorkingDirectory = cfg.stateDir;
}; User = "hledger";
Group = "hledger";
PrivateTmp = true;
}
(mkIf (cfg.stateDir == "/var/lib/hledger-web") {
StateDirectory = "hledger-web";
})
];
}; };
meta.maintainers = with lib.maintainers; [ marijanp ]; };
meta.maintainers = with lib.maintainers; [ marijanp erictapen ];
} }

View file

@ -43,8 +43,32 @@ let
LogsDirectoryMode = "0750"; LogsDirectoryMode = "0750";
# Access write directories # Access write directories
UMask = "0027"; UMask = "0027";
# Capabilities
CapabilityBoundingSet = "";
# Security
NoNewPrivileges = true;
# Sandboxing # Sandboxing
ProtectSystem = "strict";
ProtectHome = true;
PrivateTmp = true; PrivateTmp = true;
PrivateDevices = true;
PrivateUsers = true;
ProtectClock = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectControlGroups = true;
RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" "AF_NETLINK" ];
RestrictNamespaces = true;
LockPersonality = true;
MemoryDenyWriteExecute = false;
RestrictRealtime = true;
RestrictSUIDSGID = true;
PrivateMounts = true;
# System Call Filtering
SystemCallArchitectures = "native";
SystemCallFilter = "~@clock @cpu-emulation @debug @keyring @module @mount @obsolete @reboot @resources @setuid @swap";
}; };
envFile = pkgs.writeText "mastodon.env" (lib.concatMapStrings (s: s + "\n") ( envFile = pkgs.writeText "mastodon.env" (lib.concatMapStrings (s: s + "\n") (

View file

@ -0,0 +1,139 @@
{ lib, pkgs, config, ... }:
with lib;
let
cfg = config.services.wiki-js;
format = pkgs.formats.json { };
configFile = format.generate "wiki-js.yml" cfg.settings;
in {
options.services.wiki-js = {
enable = mkEnableOption "wiki-js";
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/root/wiki-js.env";
description = ''
Environment fiel to inject e.g. secrets into the configuration.
'';
};
stateDirectoryName = mkOption {
default = "wiki-js";
type = types.str;
description = ''
Name of the directory in <filename>/var/lib</filename>.
'';
};
settings = mkOption {
default = {};
type = types.submodule {
freeformType = format.type;
options = {
port = mkOption {
type = types.port;
default = 3000;
description = ''
TCP port the process should listen to.
'';
};
bindIP = mkOption {
default = "0.0.0.0";
type = types.str;
description = ''
IPs the service should listen to.
'';
};
db = {
type = mkOption {
default = "postgres";
type = types.enum [ "postgres" "mysql" "mariadb" "mssql" ];
description = ''
Database driver to use for persistence. Please note that <literal>sqlite</literal>
is currently not supported as the build process for it is currently not implemented
in <package>pkgs.wiki-js</package> and it's not recommended by upstream for
production use.
'';
};
host = mkOption {
type = types.str;
example = "/run/postgresql";
description = ''
Hostname or socket-path to connect to.
'';
};
db = mkOption {
default = "wiki";
type = types.str;
description = ''
Name of the database to use.
'';
};
};
logLevel = mkOption {
default = "info";
type = types.enum [ "error" "warn" "info" "verbose" "debug" "silly" ];
description = ''
Define how much detail is supposed to be logged at runtime.
'';
};
offline = mkEnableOption "offline mode" // {
description = ''
Disable latest file updates and enable
<link xlink:href="https://docs.requarks.io/install/sideload">sideloading</link>.
'';
};
};
};
description = ''
Settings to configure <package>wiki-js</package>. This directly
corresponds to <link xlink:href="https://docs.requarks.io/install/config">the upstream
configuration options</link>.
Secrets can be injected via the environment by
<itemizedlist>
<listitem><para>specifying <xref linkend="opt-services.wiki-js.environmentFile" />
to contain secrets</para></listitem>
<listitem><para>and setting sensitive values to <literal>$(ENVIRONMENT_VAR)</literal>
with this value defined in the environment-file.</para></listitem>
</itemizedlist>
'';
};
};
config = mkIf cfg.enable {
services.wiki-js.settings.dataPath = "/var/lib/${cfg.stateDirectoryName}";
systemd.services.wiki-js = {
description = "A modern and powerful wiki app built on Node.js";
documentation = [ "https://docs.requarks.io/" ];
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ coreutils ];
preStart = ''
ln -sf ${configFile} /var/lib/${cfg.stateDirectoryName}/config.yml
ln -sf ${pkgs.wiki-js}/server /var/lib/${cfg.stateDirectoryName}
ln -sf ${pkgs.wiki-js}/assets /var/lib/${cfg.stateDirectoryName}
ln -sf ${pkgs.wiki-js}/package.json /var/lib/${cfg.stateDirectoryName}/package.json
'';
serviceConfig = {
EnvironmentFile = mkIf (cfg.environmentFile != null) cfg.environmentFile;
StateDirectory = cfg.stateDirectoryName;
WorkingDirectory = "/var/lib/${cfg.stateDirectoryName}";
DynamicUser = true;
PrivateTmp = true;
ExecStart = "${pkgs.nodejs}/bin/node ${pkgs.wiki-js}/server";
};
};
};
meta.maintainers = with maintainers; [ ma27 ];
}

View file

@ -386,7 +386,7 @@ let
) config.boot.initrd.secrets) ) config.boot.initrd.secrets)
} }
(cd "$tmp" && find . -print0 | sort -z | cpio -o -H newc -R +0:+0 --reproducible --null) | \ (cd "$tmp" && find . -print0 | sort -z | cpio --quiet -o -H newc -R +0:+0 --reproducible --null) | \
${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1" ${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1"
''; '';

View file

@ -22,8 +22,6 @@ let
# their assertions too # their assertions too
(attrValues config.fileSystems); (attrValues config.fileSystems);
prioOption = prio: optionalString (prio != null) " pri=${toString prio}";
specialFSTypes = [ "proc" "sysfs" "tmpfs" "ramfs" "devtmpfs" "devpts" ]; specialFSTypes = [ "proc" "sysfs" "tmpfs" "ramfs" "devtmpfs" "devpts" ];
coreFileSystemOpts = { name, config, ... }: { coreFileSystemOpts = { name, config, ... }: {
@ -240,6 +238,8 @@ in
skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck; skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck;
# https://wiki.archlinux.org/index.php/fstab#Filepath_spaces # https://wiki.archlinux.org/index.php/fstab#Filepath_spaces
escape = string: builtins.replaceStrings [ " " "\t" ] [ "\\040" "\\011" ] string; escape = string: builtins.replaceStrings [ " " "\t" ] [ "\\040" "\\011" ] string;
swapOptions = sw: "defaults"
+ optionalString (sw.priority != null) ",pri=${toString sw.priority}";
in '' in ''
# This is a generated file. Do not edit! # This is a generated file. Do not edit!
# #
@ -262,7 +262,7 @@ in
# Swap devices. # Swap devices.
${flip concatMapStrings config.swapDevices (sw: ${flip concatMapStrings config.swapDevices (sw:
"${sw.realDevice} none swap${prioOption sw.priority}\n" "${sw.realDevice} none swap ${swapOptions sw}\n"
)} )}
''; '';

View file

@ -5,5 +5,13 @@ let self = {
"17.03" = "gs://nixos-cloud-images/nixos-image-17.03.1082.4aab5c5798-x86_64-linux.raw.tar.gz"; "17.03" = "gs://nixos-cloud-images/nixos-image-17.03.1082.4aab5c5798-x86_64-linux.raw.tar.gz";
"18.03" = "gs://nixos-cloud-images/nixos-image-18.03.132536.fdb5ba4cdf9-x86_64-linux.raw.tar.gz"; "18.03" = "gs://nixos-cloud-images/nixos-image-18.03.132536.fdb5ba4cdf9-x86_64-linux.raw.tar.gz";
"18.09" = "gs://nixos-cloud-images/nixos-image-18.09.1228.a4c4cbb613c-x86_64-linux.raw.tar.gz"; "18.09" = "gs://nixos-cloud-images/nixos-image-18.09.1228.a4c4cbb613c-x86_64-linux.raw.tar.gz";
latest = self."18.09";
# This format will be handled by the upcoming NixOPS 2.0 release.
# The old images based on a GS object are deprecated.
"20.09" = {
project = "nixos-cloud";
name = "nixos-image-20-09-3531-3858fbc08e6-x86-64-linux";
};
latest = self."20.09";
}; in self }; in self

View file

@ -504,7 +504,7 @@ in
path = mkOption { path = mkOption {
type = types.path; type = types.path;
example = "/nix/var/nix/profiles/containers/webserver"; example = "/nix/var/nix/profiles/per-container/webserver";
description = '' description = ''
As an alternative to specifying As an alternative to specifying
<option>config</option>, you can specify the path to <option>config</option>, you can specify the path to

View file

@ -253,7 +253,7 @@ in import ./make-test-python.nix ({ lib, ... }: {
def check_connection(node, domain, retries=3): def check_connection(node, domain, retries=3):
assert retries >= 0 assert retries >= 0, f"Failed to connect to https://{domain}"
result = node.succeed( result = node.succeed(
"openssl s_client -brief -verify 2 -CAfile /tmp/ca.crt" "openssl s_client -brief -verify 2 -CAfile /tmp/ca.crt"
@ -262,12 +262,12 @@ in import ./make-test-python.nix ({ lib, ... }: {
for line in result.lower().split("\n"): for line in result.lower().split("\n"):
if "verification" in line and "error" in line: if "verification" in line and "error" in line:
time.sleep(1) time.sleep(3)
return check_connection(node, domain, retries - 1) return check_connection(node, domain, retries - 1)
def check_connection_key_bits(node, domain, bits, retries=3): def check_connection_key_bits(node, domain, bits, retries=3):
assert retries >= 0 assert retries >= 0, f"Did not find expected number of bits ({bits}) in key"
result = node.succeed( result = node.succeed(
"openssl s_client -CAfile /tmp/ca.crt" "openssl s_client -CAfile /tmp/ca.crt"
@ -277,12 +277,12 @@ in import ./make-test-python.nix ({ lib, ... }: {
print("Key type:", result) print("Key type:", result)
if bits not in result: if bits not in result:
time.sleep(1) time.sleep(3)
return check_connection_key_bits(node, domain, bits, retries - 1) return check_connection_key_bits(node, domain, bits, retries - 1)
def check_stapling(node, domain, retries=3): def check_stapling(node, domain, retries=3):
assert retries >= 0 assert retries >= 0, "OCSP Stapling check failed"
# Pebble doesn't provide a full OCSP responder, so just check the URL # Pebble doesn't provide a full OCSP responder, so just check the URL
result = node.succeed( result = node.succeed(
@ -293,10 +293,23 @@ in import ./make-test-python.nix ({ lib, ... }: {
print("OCSP Responder URL:", result) print("OCSP Responder URL:", result)
if "${caDomain}:4002" not in result.lower(): if "${caDomain}:4002" not in result.lower():
time.sleep(1) time.sleep(3)
return check_stapling(node, domain, retries - 1) return check_stapling(node, domain, retries - 1)
def download_ca_certs(node, retries=5):
assert retries >= 0, "Failed to connect to pebble to download root CA certs"
exit_code, _ = node.execute("curl https://${caDomain}:15000/roots/0 > /tmp/ca.crt")
exit_code_2, _ = node.execute(
"curl https://${caDomain}:15000/intermediate-keys/0 >> /tmp/ca.crt"
)
if exit_code + exit_code_2 > 0:
time.sleep(3)
return download_ca_certs(node, retries - 1)
client.start() client.start()
dnsserver.start() dnsserver.start()
@ -313,8 +326,7 @@ in import ./make-test-python.nix ({ lib, ... }: {
acme.wait_for_unit("network-online.target") acme.wait_for_unit("network-online.target")
acme.wait_for_unit("pebble.service") acme.wait_for_unit("pebble.service")
client.succeed("curl https://${caDomain}:15000/roots/0 > /tmp/ca.crt") download_ca_certs(client)
client.succeed("curl https://${caDomain}:15000/intermediate-keys/0 >> /tmp/ca.crt")
with subtest("Can request certificate with HTTPS-01 challenge"): with subtest("Can request certificate with HTTPS-01 challenge"):
webserver.wait_for_unit("acme-finished-a.example.test.target") webserver.wait_for_unit("acme-finished-a.example.test.target")
@ -322,6 +334,21 @@ in import ./make-test-python.nix ({ lib, ... }: {
check_issuer(webserver, "a.example.test", "pebble") check_issuer(webserver, "a.example.test", "pebble")
check_connection(client, "a.example.test") check_connection(client, "a.example.test")
with subtest("Certificates and accounts have safe + valid permissions"):
group = "${nodes.webserver.config.security.acme.certs."a.example.test".group}"
webserver.succeed(
f"test $(stat -L -c \"%a %U %G\" /var/lib/acme/a.example.test/* | tee /dev/stderr | grep '640 acme {group}' | wc -l) -eq 5"
)
webserver.succeed(
f"test $(stat -L -c \"%a %U %G\" /var/lib/acme/.lego/a.example.test/**/* | tee /dev/stderr | grep '640 acme {group}' | wc -l) -eq 5"
)
webserver.succeed(
f"test $(stat -L -c \"%a %U %G\" /var/lib/acme/a.example.test | tee /dev/stderr | grep '750 acme {group}' | wc -l) -eq 1"
)
webserver.succeed(
f"test $(find /var/lib/acme/accounts -type f -exec stat -L -c \"%a %U %G\" {{}} \\; | tee /dev/stderr | grep -v '600 acme {group}' | wc -l) -eq 0"
)
with subtest("Can generate valid selfsigned certs"): with subtest("Can generate valid selfsigned certs"):
webserver.succeed("systemctl clean acme-a.example.test.service --what=state") webserver.succeed("systemctl clean acme-a.example.test.service --what=state")
webserver.succeed("systemctl start acme-selfsigned-a.example.test.service") webserver.succeed("systemctl start acme-selfsigned-a.example.test.service")
@ -375,8 +402,15 @@ in import ./make-test-python.nix ({ lib, ... }: {
assert keyhash_old == keyhash_new assert keyhash_old == keyhash_new
with subtest("Can request certificates for vhost + aliases (apache-httpd)"): with subtest("Can request certificates for vhost + aliases (apache-httpd)"):
try:
switch_to(webserver, "httpd-aliases") switch_to(webserver, "httpd-aliases")
webserver.wait_for_unit("acme-finished-c.example.test.target") webserver.wait_for_unit("acme-finished-c.example.test.target")
except Exception as err:
_, output = webserver.execute(
"cat /var/log/httpd/*.log && ls -al /var/lib/acme/acme-challenge"
)
print(output)
raise err
check_issuer(webserver, "c.example.test", "pebble") check_issuer(webserver, "c.example.test", "pebble")
check_connection(client, "c.example.test") check_connection(client, "c.example.test")
check_connection(client, "d.example.test") check_connection(client, "d.example.test")

View file

@ -426,6 +426,7 @@ in
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {}; virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
vscodium = handleTest ./vscodium.nix {}; vscodium = handleTest ./vscodium.nix {};
wasabibackend = handleTest ./wasabibackend.nix {}; wasabibackend = handleTest ./wasabibackend.nix {};
wiki-js = handleTest ./wiki-js.nix {};
wireguard = handleTest ./wireguard {}; wireguard = handleTest ./wireguard {};
wordpress = handleTest ./wordpress.nix {}; wordpress = handleTest ./wordpress.nix {};
xandikos = handleTest ./xandikos.nix {}; xandikos = handleTest ./xandikos.nix {};

View file

@ -113,6 +113,7 @@ let
driver.find_element_by_css_selector('input#masterPasswordRetype').send_keys( driver.find_element_by_css_selector('input#masterPasswordRetype').send_keys(
'${userPassword}' '${userPassword}'
) )
driver.find_element_by_css_selector('input#acceptPolicies').click()
driver.find_element_by_xpath("//button[contains(., 'Submit')]").click() driver.find_element_by_xpath("//button[contains(., 'Submit')]").click()

View file

@ -161,12 +161,18 @@ import ./make-test-python.nix ({ pkgs, ... }: {
"docker run --rm ${examples.layered-image.imageName} cat extraCommands", "docker run --rm ${examples.layered-image.imageName} cat extraCommands",
) )
with subtest("Ensure building an image on top of a layered Docker images work"): with subtest("Ensure images built on top of layered Docker images work"):
docker.succeed( docker.succeed(
"docker load --input='${examples.layered-on-top}'", "docker load --input='${examples.layered-on-top}'",
"docker run --rm ${examples.layered-on-top.imageName}", "docker run --rm ${examples.layered-on-top.imageName}",
) )
with subtest("Ensure layered images built on top of layered Docker images work"):
docker.succeed(
"docker load --input='${examples.layered-on-top-layered}'",
"docker run --rm ${examples.layered-on-top-layered.imageName}",
)
def set_of_layers(image_name): def set_of_layers(image_name):
return set( return set(
@ -205,6 +211,31 @@ import ./make-test-python.nix ({ pkgs, ... }: {
assert "FROM_CHILD=true" in env, "envvars from the child should be preserved" assert "FROM_CHILD=true" in env, "envvars from the child should be preserved"
assert "LAST_LAYER=child" in env, "envvars from the child should take priority" assert "LAST_LAYER=child" in env, "envvars from the child should take priority"
with subtest("Ensure environment variables of layered images are correctly inherited"):
docker.succeed(
"docker load --input='${examples.environmentVariablesLayered}'"
)
out = docker.succeed("docker run --rm ${examples.environmentVariablesLayered.imageName} env")
env = out.splitlines()
assert "FROM_PARENT=true" in env, "envvars from the parent should be preserved"
assert "FROM_CHILD=true" in env, "envvars from the child should be preserved"
assert "LAST_LAYER=child" in env, "envvars from the child should take priority"
with subtest(
"Ensure inherited environment variables of layered images are correctly resolved"
):
# Read environment variables as stored in image config
config = docker.succeed(
"tar -xOf ${examples.environmentVariablesLayered} manifest.json | ${pkgs.jq}/bin/jq -r .[].Config"
).strip()
out = docker.succeed(
f"tar -xOf ${examples.environmentVariablesLayered} {config} | ${pkgs.jq}/bin/jq -r '.config.Env | .[]'"
)
env = out.splitlines()
assert (
sum(entry.startswith("LAST_LAYER") for entry in env) == 1
), "envvars overridden by child should be unique"
with subtest("Ensure image with only 2 layers can be loaded"): with subtest("Ensure image with only 2 layers can be loaded"):
docker.succeed( docker.succeed(
"docker load --input='${examples.two-layered-image}'" "docker load --input='${examples.two-layered-image}'"
@ -219,6 +250,18 @@ import ./make-test-python.nix ({ pkgs, ... }: {
"docker run bulk-layer ls /bin/hello", "docker run bulk-layer ls /bin/hello",
) )
with subtest(
"Ensure the bulk layer with a base image respects the number of maxLayers"
):
docker.succeed(
"docker load --input='${pkgs.dockerTools.examples.layered-bulk-layer}'",
# Ensure the image runs correctly
"docker run layered-bulk-layer ls /bin/hello",
)
# Ensure the image has the correct number of layers
assert len(set_of_layers("layered-bulk-layer")) == 4
with subtest("Ensure correct behavior when no store is needed"): with subtest("Ensure correct behavior when no store is needed"):
# This check tests that buildLayeredImage can build images that don't need a store. # This check tests that buildLayeredImage can build images that don't need a store.
docker.succeed( docker.succeed(

View file

@ -13,25 +13,22 @@ rec {
name = "hledger-web"; name = "hledger-web";
meta.maintainers = with lib.maintainers; [ marijanp ]; meta.maintainers = with lib.maintainers; [ marijanp ];
nodes = { nodes = rec {
server = { config, pkgs, ... }: rec { server = { config, pkgs, ... }: {
services.hledger-web = { services.hledger-web = {
host = "127.0.0.1"; host = "127.0.0.1";
port = 5000; port = 5000;
enable = true; enable = true;
journalFile = journal; capabilities.manage = true;
}; };
networking.firewall.allowedTCPPorts = [ services.hledger-web.port ]; networking.firewall.allowedTCPPorts = [ config.services.hledger-web.port ];
systemd.services.hledger-web.preStart = ''
ln -s ${journal} /var/lib/hledger-web/.hledger.journal
'';
}; };
apiserver = { config, pkgs, ... }: rec { apiserver = { ... }: {
services.hledger-web = { imports = [ server ];
host = "127.0.0.1"; services.hledger-web.serveApi = true;
port = 5000;
enable = true;
serveApi = true;
journalFile = journal;
};
networking.firewall.allowedTCPPorts = [ services.hledger-web.port ];
}; };
}; };
@ -42,7 +39,7 @@ rec {
server.wait_for_open_port(5000) server.wait_for_open_port(5000)
with subtest("Check if web UI is accessible"): with subtest("Check if web UI is accessible"):
page = server.succeed("curl -L http://127.0.0.1:5000") page = server.succeed("curl -L http://127.0.0.1:5000")
assert "test.journal" in page assert ".hledger.journal" in page
apiserver.wait_for_unit("hledger-web.service") apiserver.wait_for_unit("hledger-web.service")
apiserver.wait_for_open_port(5000) apiserver.wait_for_open_port(5000)

View file

@ -0,0 +1,152 @@
import ./make-test-python.nix ({ pkgs, lib, ...} : {
name = "wiki-js";
meta = with pkgs.lib.maintainers; {
maintainers = [ ma27 ];
};
machine = { pkgs, ... }: {
virtualisation.memorySize = 2048;
services.wiki-js = {
enable = true;
settings.db.host = "/run/postgresql";
settings.db.user = "wiki-js";
settings.logLevel = "debug";
};
services.postgresql = {
enable = true;
ensureDatabases = [ "wiki" ];
ensureUsers = [
{ name = "wiki-js";
ensurePermissions."DATABASE wiki" = "ALL PRIVILEGES";
}
];
};
systemd.services.wiki-js = {
requires = [ "postgresql.service" ];
after = [ "postgresql.service" ];
};
environment.systemPackages = with pkgs; [ jq ];
};
testScript = let
payloads.finalize = pkgs.writeText "finalize.json" (builtins.toJSON {
adminEmail = "webmaster@example.com";
adminPassword = "notapassword";
adminPasswordConfirm = "notapassword";
siteUrl = "http://localhost:3000";
telemetry = false;
});
payloads.login = pkgs.writeText "login.json" (builtins.toJSON [{
operationName = null;
extensions = {};
query = ''
mutation ($username: String!, $password: String!, $strategy: String!) {
authentication {
login(username: $username, password: $password, strategy: $strategy) {
responseResult {
succeeded
errorCode
slug
message
__typename
}
jwt
mustChangePwd
mustProvideTFA
mustSetupTFA
continuationToken
redirect
tfaQRImage
__typename
}
__typename
}
}
'';
variables = {
password = "notapassword";
strategy = "local";
username = "webmaster@example.com";
};
}]);
payloads.content = pkgs.writeText "content.json" (builtins.toJSON [{
extensions = {};
operationName = null;
query = ''
mutation ($content: String!, $description: String!, $editor: String!, $isPrivate: Boolean!, $isPublished: Boolean!, $locale: String!, $path: String!, $publishEndDate: Date, $publishStartDate: Date, $scriptCss: String, $scriptJs: String, $tags: [String]!, $title: String!) {
pages {
create(content: $content, description: $description, editor: $editor, isPrivate: $isPrivate, isPublished: $isPublished, locale: $locale, path: $path, publishEndDate: $publishEndDate, publishStartDate: $publishStartDate, scriptCss: $scriptCss, scriptJs: $scriptJs, tags: $tags, title: $title) {
responseResult {
succeeded
errorCode
slug
message
__typename
}
page {
id
updatedAt
__typename
}
__typename
}
__typename
}
}
'';
variables = {
content = "# Header\n\nHello world!";
description = "";
editor = "markdown";
isPrivate = false;
isPublished = true;
locale = "en";
path = "home";
publishEndDate = "";
publishStartDate = "";
scriptCss = "";
scriptJs = "";
tags = [];
title = "Hello world";
};
}]);
in ''
machine.start()
machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(3000)
machine.succeed("curl -sSf localhost:3000")
with subtest("Setup"):
result = machine.succeed(
"set -o pipefail; curl -sSf localhost:3000/finalize -X POST -d "
+ "@${payloads.finalize} -H 'Content-Type: application/json' "
+ "| jq .ok | xargs echo"
)
assert result.strip() == "true", f"Expected true, got {result}"
# During the setup the service gets restarted, so we use this
# to check if the setup is done.
machine.wait_until_fails("curl -sSf localhost:3000")
machine.wait_until_succeeds("curl -sSf localhost:3000")
with subtest("Base functionality"):
auth = machine.succeed(
"set -o pipefail; curl -sSf localhost:3000/graphql -X POST "
+ "-d @${payloads.login} -H 'Content-Type: application/json' "
+ "| jq '.[0].data.authentication.login.jwt' | xargs echo"
).strip()
assert auth
create = machine.succeed(
"set -o pipefail; curl -sSf localhost:3000/graphql -X POST "
+ "-d @${payloads.content} -H 'Content-Type: application/json' "
+ f"-H 'Authorization: Bearer {auth}' "
+ "| jq '.[0].data.pages.create.responseResult.succeeded'|xargs echo"
)
assert create.strip() == "true", f"Expected true, got {create}"
machine.shutdown()
'';
})

View file

@ -12,6 +12,10 @@ stdenv.mkDerivation {
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];
# -Wnarrowing is enabled by default in recent GCC versions,
# causing compilation to fail.
NIX_CFLAGS_COMPILE = "-Wno-narrowing";
postPatch = '' postPatch = ''
( (
cd mp4v2 cd mp4v2

View file

@ -6,11 +6,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "bitwig-studio"; pname = "bitwig-studio";
version = "3.3.3"; version = "3.3.6";
src = fetchurl { src = fetchurl {
url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb"; url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
sha256 = "sha256-NDkGHJDr6TCHEhgSKK7jLYk5RjGEj8+lDYZ4ywvG20g="; sha256 = "10nf29zr0xg9mxmknkc39jh3y9kpxzy5wg1v0s3kkd180lja9zpn";
}; };
nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ]; nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];

View file

@ -10,7 +10,7 @@ let
withCD = config.clementine.cd or true; withCD = config.clementine.cd or true;
withCloud = config.clementine.cloud or true; withCloud = config.clementine.cloud or true;
# On the update after all 1.4rc, qt5.15 will be supported. # On the update after all 1.4rc, qt5.15 and protobuf 3.15 will be supported.
version = "1.4.0rc1"; version = "1.4.0rc1";
src = fetchFromGitHub { src = fetchFromGitHub {

View file

@ -1,5 +1,5 @@
{ lib, stdenv, fetchFromGitHub, makeWrapper, rofi, mpc_cli, perl, { lib, stdenv, fetchFromGitHub, makeWrapper, rofi, mpc_cli, perl,
util-linux, pythonPackages, libnotify }: util-linux, python3Packages, libnotify }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "clerk-2016-10-14"; name = "clerk-2016-10-14";
@ -12,10 +12,12 @@ stdenv.mkDerivation {
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
buildInputs = [ pythonPackages.mpd2 ]; buildInputs = [ python3Packages.mpd2 ];
dontBuild = true; dontBuild = true;
strictDeps = true;
installPhase = '' installPhase = ''
DESTDIR=$out PREFIX=/ make install DESTDIR=$out PREFIX=/ make install
wrapProgram $out/bin/clerk \ wrapProgram $out/bin/clerk \

View file

@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
strictDeps = true; strictDeps = true;
CXXFLAGS = "-std=c++11";
configureFlags = "--enable-liblilv --with-extra-cppflags=-Dnullptr=0"; configureFlags = "--enable-liblilv --with-extra-cppflags=-Dnullptr=0";
postPatch = '' postPatch = ''

View file

@ -5,14 +5,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "helio-workstation"; pname = "helio-workstation";
version = "3.3"; version = "3.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "helio-fm"; owner = "helio-fm";
repo = pname; repo = pname;
rev = version; rev = version;
fetchSubmodules = true; fetchSubmodules = true;
sha256 = "sha256-meeNqV1jKUwWc7P3p/LicPsbpzpKKFmQ1wP9DuXc9NY="; sha256 = "sha256-zXsDu/xi7OV6VtnZK9ZJ8uwPeA5uTgNpAQsqe90iwG4=";
}; };
buildInputs = [ buildInputs = [

View file

@ -1,14 +1,14 @@
{ mkDerivation, lib, fetchFromGitHub, fetchpatch, pkg-config, qtscript, qmake, libjack2 { mkDerivation, lib, fetchFromGitHub, pkg-config, qtscript, qmake, libjack2
}: }:
mkDerivation rec { mkDerivation rec {
pname = "jamulus"; pname = "jamulus";
version = "3.6.2"; version = "3.7.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "corrados"; owner = "jamulussoftware";
repo = "jamulus"; repo = "jamulus";
rev = "r${lib.replaceStrings [ "." ] [ "_" ] version}"; rev = "r${lib.replaceStrings [ "." ] [ "_" ] version}";
sha256 = "sha256-b187Q8KXcU32C2hGFqs6R2CqWgmieq6ewQDx+elEgP4="; sha256 = "sha256-8zCPT0jo4ExgmZWxGinumv3JauH4csM9DtuHmOiJQAM=";
}; };
nativeBuildInputs = [ pkg-config qmake ]; nativeBuildInputs = [ pkg-config qmake ];
@ -20,7 +20,7 @@ mkDerivation rec {
description = "Enables musicians to perform real-time jam sessions over the internet"; description = "Enables musicians to perform real-time jam sessions over the internet";
longDescription = "You also need to enable JACK and should enable several real-time optimizations. See project website for details"; longDescription = "You also need to enable JACK and should enable several real-time optimizations. See project website for details";
homepage = "https://github.com/corrados/jamulus/wiki"; homepage = "https://github.com/corrados/jamulus/wiki";
license = lib.licenses.gpl2; # linked in git repo, at least license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.seb314 ]; maintainers = [ lib.maintainers.seb314 ];
}; };

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "new-session-manager"; pname = "new-session-manager";
version = "1.5.0"; version = "1.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "linuxaudio"; owner = "linuxaudio";
repo = "new-session-manager"; repo = "new-session-manager";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-YP5AHoFP8P1o0Y2jAipRcNPxPRuM7COs5tBMm6Eojoc="; sha256 = "sha256-hcw+Fn5s1S786eqmR95RmkFcIaRzWaH38YE9DXVQJU0=";
}; };
nativeBuildInputs = [ meson pkg-config ninja ]; nativeBuildInputs = [ meson pkg-config ninja ];

View file

@ -2,14 +2,14 @@
, usePulseAudio ? config.pulseaudio or false, libpulseaudio }: , usePulseAudio ? config.pulseaudio or false, libpulseaudio }:
let let
version = "0.5.5"; version = "0.5.6";
in stdenv.mkDerivation { in stdenv.mkDerivation {
pname = "openmpt123"; pname = "openmpt123";
inherit version; inherit version;
src = fetchurl { src = fetchurl {
url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz"; url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz";
sha256 = "sha256-8eAUg+vxpoDZ7AMMmvIPXypawPHgZCwYvVWTz6qc62s="; sha256 = "sha256-F96ngrM0wUb0rNlIx8Mf/dKvyJnrNH6+Ab4WBup59Lg=";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View file

@ -1,5 +1,6 @@
{ lib, stdenv { lib, stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, meson , meson
, ninja , ninja
, pkg-config , pkg-config
@ -45,13 +46,15 @@ let
]; ];
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "pulseeffects"; pname = "pulseeffects";
version = "5.0.0"; # 5.0.3 crashes. Test carefully before updating.
# https://github.com/wwmm/pulseeffects/issues/927
version = "5.0.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wwmm"; owner = "wwmm";
repo = "pulseeffects"; repo = "pulseeffects";
rev = "v${version}"; rev = "v${version}";
sha256 = "1zs13bivxlgcb24lz1pgmgy2chcjxnmn4lz7g1n0ygiaaj4c30xj"; sha256 = "14ir25q6bws26im6qmj3k6hkfdh5pc6mbvln7wkdwy5dv0vix3cm";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -87,6 +90,15 @@ in stdenv.mkDerivation rec {
zita-convolver zita-convolver
]; ];
patches = [
(fetchpatch {
# Fix build failure.
# https://github.com/wwmm/pulseeffects/pull/934
url = "https://github.com/wwmm/pulseeffects/commit/ab7354a6850d23840b4c9af212dbebf4f31a562f.patch";
sha256 = "1hd05xn6sp0xs632mqgwk19hl40kh2f69mx5mgzahysrj057w22c";
})
];
postPatch = '' postPatch = ''
chmod +x meson_post_install.py chmod +x meson_post_install.py
patchShebangs meson_post_install.py patchShebangs meson_post_install.py
@ -104,6 +116,8 @@ in stdenv.mkDerivation rec {
BOOST_INCLUDEDIR = "${lib.getDev boost}/include"; BOOST_INCLUDEDIR = "${lib.getDev boost}/include";
BOOST_LIBRARYDIR = "${lib.getLib boost}/lib"; BOOST_LIBRARYDIR = "${lib.getLib boost}/lib";
separateDebugInfo = true;
meta = with lib; { meta = with lib; {
description = "Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications"; description = "Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications";
homepage = "https://github.com/wwmm/pulseeffects"; homepage = "https://github.com/wwmm/pulseeffects";

View file

@ -1,12 +1,12 @@
{ mkDerivation, lib, fetchurl, pkg-config, qtbase, qttools, alsaLib, libjack2 }: { mkDerivation, lib, fetchurl, pkg-config, qtbase, qttools, alsaLib, libjack2 }:
mkDerivation rec { mkDerivation rec {
version = "0.6.3"; version = "0.9.1";
pname = "qmidinet"; pname = "qmidinet";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/qmidinet/${pname}-${version}.tar.gz"; url = "mirror://sourceforge/qmidinet/${pname}-${version}.tar.gz";
sha256 = "04jbvnf6yp9l0bhl1ym6zqkmaz8c2az3flq7qgflaxzj3isns1p1"; sha256 = "sha256-cDgF5hbjy5DzGn4Rlmb76XzRa2wURVwPu2rQRKENxQU=";
}; };
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];

View file

@ -4,11 +4,11 @@
mkDerivation rec { mkDerivation rec {
pname = "qsynth"; pname = "qsynth";
version = "0.6.3"; version = "0.9.1";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/qsynth/${pname}-${version}.tar.gz"; url = "mirror://sourceforge/qsynth/${pname}-${version}.tar.gz";
sha256 = "0xiqmpzpxjvh32vivfj6h33w0ahmyfjzjb41b6fnf92bbg9k6mqv"; sha256 = "sha256-VNcI5QOVacHBcI6psEvhm7+cOTpwr2pMVXmk7nMXNiY=";
}; };
nativeBuildInputs = [ autoconf pkg-config ]; nativeBuildInputs = [ autoconf pkg-config ];

View file

@ -1,20 +1,49 @@
{ lib, stdenv, fetchFromGitHub , cmake, libjack2, libsndfile, pkg-config }: { lib, stdenv, fetchFromGitHub
, libjack2, libsndfile, xorg, freetype, libxkbcommon
, cairo, glib, gnome3, flac, libogg, libvorbis, libopus
, cmake, pkg-config
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "sfizz"; pname = "sfizz";
version = "0.4.0"; version = "0.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "sfztools"; owner = "sfztools";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0zpmvmh7n0064rxfqxb7z9rnz493k7yq7nl0vxppqnasg97jn5f3"; sha256 = "sha256-3RdY5+BPsdk6vctDy24w5aJsVOV9qzSgXs62Pm5UEKs=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
buildInputs = [
libjack2
libsndfile
flac
libogg
libvorbis
libopus
xorg.libX11
xorg.libxcb
xorg.libXau
xorg.libXdmcp
xorg.xcbutil
xorg.xcbutilcursor
xorg.xcbutilrenderutil
xorg.xcbutilkeysyms
xorg.xcbutilimage
libxkbcommon
cairo
glib
gnome3.zenity
freetype
];
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [ libjack2 libsndfile ]; postPatch = ''
substituteInPlace editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp \
--replace '"/usr/bin/zenity' '"${gnome3.zenity}/bin/zenity'
'';
cmakeFlags = [ cmakeFlags = [
"-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_BUILD_TYPE=Release"

View file

@ -1,7 +1,7 @@
{ fetchurl, lib, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype { fetchurl, lib, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
, glib, pango, cairo, atk, gdk-pixbuf, gtk2, cups, nspr, nss, libpng, libnotify , glib, pango, cairo, atk, gdk-pixbuf, gtk3, cups, nspr, nss, libpng, libnotify
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3 , libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3
, at-spi2-atk, at-spi2-core, libpulseaudio, libdrm, mesa , at-spi2-atk, at-spi2-core, libpulseaudio, libdrm, mesa, libxkbcommon
}: }:
let let
@ -10,14 +10,14 @@ let
# If an update breaks things, one of those might have valuable info: # If an update breaks things, one of those might have valuable info:
# https://aur.archlinux.org/packages/spotify/ # https://aur.archlinux.org/packages/spotify/
# https://community.spotify.com/t5/Desktop-Linux # https://community.spotify.com/t5/Desktop-Linux
version = "1.1.46.916.g416cacf1"; version = "1.1.55.494.gca75f788";
# To get the latest stable revision: # To get the latest stable revision:
# curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated' # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
# To get general information: # To get general information:
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.' # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
# More examples of api usage: # More examples of api usage:
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
rev = "43"; rev = "45";
deps = [ deps = [
alsaLib alsaLib
@ -34,12 +34,13 @@ let
freetype freetype
gdk-pixbuf gdk-pixbuf
glib glib
gtk2 gtk3
libdrm libdrm
libgcrypt libgcrypt
libnotify libnotify
libpng libpng
libpulseaudio libpulseaudio
libxkbcommon
mesa mesa
nss nss
pango pango
@ -78,11 +79,10 @@ stdenv.mkDerivation {
# https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334 # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
src = fetchurl { src = fetchurl {
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap"; url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
sha512 = "5b3d5d1f52a554c8e775b8aed16ef84e96bf3b61a2b53266e10d3c47e341899310af13cc8513b04424fc14532e36543a6fae677f80a036e3f51c75166d8d53d1"; sha512 = "5d61a2d5b26be651620ab5d18d3a204d8d7b09dcec8a733ddc176c44cb43e9176c4350933ebe4498b065ba219113f3226c13bea9659da738fe635f41d01db303";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper squashfsTools ];
buildInputs = [ squashfsTools ];
dontStrip = true; dontStrip = true;
dontPatchELF = true; dontPatchELF = true;

View file

@ -19,20 +19,20 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pika-backup"; pname = "pika-backup";
version = "0.2.1"; version = "0.2.2";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.gnome.org"; domain = "gitlab.gnome.org";
owner = "World"; owner = "World";
repo = "pika-backup"; repo = "pika-backup";
rev = "v${version}"; rev = "v${version}";
sha256 = "0fm6vwpw0pa98v2yn8p3818rrlv9lk3pmgnal1b2kh52im5ll7m8"; sha256 = "16284gv31wdwmb99056962d1gh6xz26ami6synr47nsbbp5l0s6k";
}; };
cargoDeps = rustPlatform.fetchCargoTarball { cargoDeps = rustPlatform.fetchCargoTarball {
inherit src; inherit src;
name = "${pname}-${version}"; name = "${pname}-${version}";
sha256 = "1f5s6a0wjrs2spsicirhbvb5xlz9iflwsaqchij9k02hfcsr308y"; sha256 = "12ymjwpxx3sdna8w5j9fnwwfk8ynk9ziwl0lkpq68y0vyllln5an";
}; };
patches = [ patches = [

View file

@ -1,5 +1,5 @@
{ lib, stdenv, fetchFromGitHub, fetchurl, linkFarmFromDrvs, makeWrapper, { lib, stdenv, fetchFromGitHub, fetchurl, linkFarmFromDrvs, makeWrapper,
dotnetPackages, dotnetCorePackages, writeScript, bash dotnetPackages, dotnetCorePackages
}: }:
let let
@ -15,13 +15,13 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "btcpayserver"; pname = "btcpayserver";
version = "1.0.6.8"; version = "1.0.7.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "1znmix9w7ahzyb933lxzqv6j8j5qycknq3gmnkakj749ksshql1b"; sha256 = "1pbq0kik29sx1lwlic7fvhnjhrpnlk94w53wmywqnlpgjscx8x8a";
}; };
nativeBuildInputs = [ dotnetSdk dotnetPackages.Nuget makeWrapper ]; nativeBuildInputs = [ dotnetSdk dotnetPackages.Nuget makeWrapper ];

View file

@ -19,6 +19,11 @@
version = "3.3.110.10"; version = "3.3.110.10";
sha256 = "1lf1hfbx792dpa1hxgn0a0jrrvldd16hgbxx229dk2qcz5qlnc38"; sha256 = "1lf1hfbx792dpa1hxgn0a0jrrvldd16hgbxx229dk2qcz5qlnc38";
}) })
(fetchNuGet {
name = "BIP78.Sender";
version = "0.2.0";
sha256 = "0gyynn15rc1x9p2703ffi4jnbpbd0k3wvg839xrk2skmaw8nxamf";
})
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Hwi"; name = "BTCPayServer.Hwi";
version = "1.1.3"; version = "1.1.3";
@ -26,38 +31,43 @@
}) })
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Lightning.All"; name = "BTCPayServer.Lightning.All";
version = "1.2.4"; version = "1.2.7";
sha256 = "1f4wgs8ijk1wmppz5lmas7l6m83szz57jyk6ak0dxhccdld9rdaj"; sha256 = "0jzmzvlpf6iba2fsc6cyi69vlaim9slqm2sapknmd7drl3gcn2zj";
}) })
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Lightning.Charge"; name = "BTCPayServer.Lightning.Charge";
version = "1.2.1"; version = "1.2.3";
sha256 = "0iv9frbr6xfxif3pnfd7c87y8mv31nqkdrnhvnaswrx43nv6s272"; sha256 = "1rdrwmijx0v4z0xsq4acyvdcj7hv6arfh3hwjy89rqnkkznrzgwv";
}) })
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Lightning.CLightning"; name = "BTCPayServer.Lightning.CLightning";
version = "1.2.1"; version = "1.2.3";
sha256 = "14km69jzmnyqg19w27g6znml4z0xkm8l4j7rj0x36bw67cjmgahv"; sha256 = "02197rh03q8d0mv40zf67wp1rd2gbxi5l8krd2rzj84n267bcfvc";
}) })
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Lightning.Common"; name = "BTCPayServer.Lightning.Common";
version = "1.2.0"; version = "1.2.0";
sha256 = "17di8ndkw8z0ci0zk15mcrqpmganwkz9ys2snr2rqpw5mrlhpwa0"; sha256 = "17di8ndkw8z0ci0zk15mcrqpmganwkz9ys2snr2rqpw5mrlhpwa0";
}) })
(fetchNuGet {
name = "BTCPayServer.Lightning.Common";
version = "1.2.2";
sha256 = "07xb7fsqvfjmcawxylriw60i73h0cvfb765aznhp9ffyrmjaql7z";
})
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Lightning.Eclair"; name = "BTCPayServer.Lightning.Eclair";
version = "1.2.0"; version = "1.2.2";
sha256 = "0w7nwsr0n2hrqak023xa294palsk3r96wlgw2ks8d3p5kxm8kskp"; sha256 = "03dymhwxb5s28kb187g5h4aysnz2xzml89p47nmwz9lkg2h4s73h";
}) })
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Lightning.LND"; name = "BTCPayServer.Lightning.LND";
version = "1.2.1"; version = "1.2.4";
sha256 = "0ql4qyvz0rms6ls46pi3bgak3r6hj2c5ivnzahiq6cb84pbl61cr"; sha256 = "0qnj5rsp6hnybsr58zny9dfbsxksg1674q0z9944jwkzm7pcqyg4";
}) })
(fetchNuGet { (fetchNuGet {
name = "BTCPayServer.Lightning.Ptarmigan"; name = "BTCPayServer.Lightning.Ptarmigan";
version = "1.2.0"; version = "1.2.2";
sha256 = "1yd6nhlssb9k08p5491knlwwjij9324ildir99sa9cp24rlq5nis"; sha256 = "17yl85vqfp7l12bv3f3w1b861hm41i7cfhs78gaq04s4drvcnj6k";
}) })
(fetchNuGet { (fetchNuGet {
name = "BuildBundlerMinifier"; name = "BuildBundlerMinifier";
@ -79,11 +89,6 @@
version = "15.0.5"; version = "15.0.5";
sha256 = "01y8bhsnxghn3flz0pr11vj6wjrpmia8rpdrsp7kjfc1zmhqlgma"; sha256 = "01y8bhsnxghn3flz0pr11vj6wjrpmia8rpdrsp7kjfc1zmhqlgma";
}) })
(fetchNuGet {
name = "DBriize";
version = "1.0.1.3";
sha256 = "0rsm68hwq2ky8i6mv3ckdjkj4vjygnkgk3disva0skl3apk833dc";
})
(fetchNuGet { (fetchNuGet {
name = "DigitalRuby.ExchangeSharp"; name = "DigitalRuby.ExchangeSharp";
version = "0.6.3"; version = "0.6.3";
@ -666,13 +671,8 @@
}) })
(fetchNuGet { (fetchNuGet {
name = "NBitcoin.Altcoins"; name = "NBitcoin.Altcoins";
version = "2.0.21"; version = "2.0.28";
sha256 = "0xmygiwjlia7fbxy63893jb15g6fxggxxr9bbm8znd9bs3jzp2g1"; sha256 = "1zfirfmhgigp733km9rqkgz560h5wg88bpba499x49h5j650cnn4";
})
(fetchNuGet {
name = "NBitcoin";
version = "5.0.33";
sha256 = "030q609b9lhapq4wfl1w3impjw5m40kz2rg1s9jn3bn8yjfmsi4a";
}) })
(fetchNuGet { (fetchNuGet {
name = "NBitcoin"; name = "NBitcoin";
@ -686,13 +686,13 @@
}) })
(fetchNuGet { (fetchNuGet {
name = "NBitcoin"; name = "NBitcoin";
version = "5.0.60"; version = "5.0.67";
sha256 = "0pin4ldfz5lfxyd47mj1ypyp8lmj0v5nq5zvygdjna956vphd39v"; sha256 = "049marx1jwr7srlpqspimrqqgahh53gi2iyp7bpzn5npsbzh9v3h";
}) })
(fetchNuGet { (fetchNuGet {
name = "NBitcoin"; name = "NBitcoin";
version = "5.0.68"; version = "5.0.73";
sha256 = "0k275mbp9wannm10pqj4nv8agjc1f6hsrfhl0m6ax1apv81sfxcd"; sha256 = "0vqgcb0ws5fnkrdzqfkyh78041c6q4l22b93rr0006dd4bmqrmg1";
}) })
(fetchNuGet { (fetchNuGet {
name = "NBitpayClient"; name = "NBitpayClient";
@ -701,8 +701,8 @@
}) })
(fetchNuGet { (fetchNuGet {
name = "NBXplorer.Client"; name = "NBXplorer.Client";
version = "3.0.19"; version = "3.0.20";
sha256 = "0nahfxdsryf5snjy87770m51v2jcry02lmb10ilsg4h2ig4pjdk4"; sha256 = "1mwa6ncmg5r6q7yn6skm9dgqm631c7r7nadcg9mvbw81113h0xxy";
}) })
(fetchNuGet { (fetchNuGet {
name = "NETStandard.Library"; name = "NETStandard.Library";
@ -729,11 +729,6 @@
version = "10.0.3"; version = "10.0.3";
sha256 = "06vy67bkshclpz69kps4vgzc9h2cgg41c8vlqmdbwclfky7c4haq"; sha256 = "06vy67bkshclpz69kps4vgzc9h2cgg41c8vlqmdbwclfky7c4haq";
}) })
(fetchNuGet {
name = "Newtonsoft.Json";
version = "11.0.1";
sha256 = "1z68j07if1xf71lbsrgbia52r812i2dv541sy44ph4dzjjp7pd4m";
})
(fetchNuGet { (fetchNuGet {
name = "Newtonsoft.Json"; name = "Newtonsoft.Json";
version = "11.0.2"; version = "11.0.2";
@ -921,8 +916,8 @@
}) })
(fetchNuGet { (fetchNuGet {
name = "Selenium.WebDriver.ChromeDriver"; name = "Selenium.WebDriver.ChromeDriver";
version = "87.0.4280.8800"; version = "88.0.4324.9600";
sha256 = "1zrizydlhjv81r1fa5g8wzxrx1cxly3ip7pargj48hdx419iblfr"; sha256 = "0jm8dpfp329xsrg69lzq2m6x9yin1m43qgrhs15cz2qx9f02pdx9";
}) })
(fetchNuGet { (fetchNuGet {
name = "Selenium.WebDriver"; name = "Selenium.WebDriver";

View file

@ -0,0 +1,44 @@
{ lib, fetchFromGitHub, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "lndmanage";
version = "0.11.0";
src = fetchFromGitHub {
owner = "bitromortac";
repo = pname;
rev = "v${version}";
sha256 = "19sqf7cjslwpfzcdbyq182dx7gnn9hii77sahbnh88v69qxgwzvb";
};
propagatedBuildInputs = with python3Packages; [
cycler
decorator
googleapis-common-protos
grpcio
grpcio-tools
kiwisolver
networkx
numpy
protobuf
pyparsing
python-dateutil
six
pygments
];
preBuild = ''
substituteInPlace setup.py --replace '==' '>='
'';
preCheck = ''
export HOME=$(mktemp -d)
'';
meta = with lib; {
description = "Channel management tool for lightning network daemon (LND) operators";
homepage = "https://github.com/bitromortac/lndmanage";
license = licenses.mit;
maintainers = with maintainers; [ mmilata ];
};
}

View file

@ -12,16 +12,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "openethereum"; pname = "openethereum";
version = "3.1.1"; version = "3.2.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "openethereum"; owner = "openethereum";
repo = "openethereum"; repo = "openethereum";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-RUrJuJF0R0mc7XdLyk915fRWtMfzjp5QE6oeWxHfyEQ="; sha256 = "sha256-+bzMo0s+wdp8T/YjPk6mrPSPid1G8WScB8FJhXdL9JQ=";
}; };
cargoSha256 = "sha256-b+winsCzU0sXGDX6nUtWq4JrIyTcJ3uva7RlV5VsXfk="; cargoSha256 = "sha256-ibjjJ5zGF6wbO24/RoYKsTYsMNXHb1EdekDwSICPc5g=";
LIBCLANG_PATH = "${llvmPackages.libclang}/lib"; LIBCLANG_PATH = "${llvmPackages.libclang}/lib";
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -24,11 +24,11 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wasabiwallet"; pname = "wasabiwallet";
version = "1.1.12.4"; version = "1.1.12.5";
src = fetchurl { src = fetchurl {
url = "https://github.com/zkSNACKs/WalletWasabi/releases/download/v${version}/Wasabi-${version}.tar.gz"; url = "https://github.com/zkSNACKs/WalletWasabi/releases/download/v${version}/Wasabi-${version}.tar.gz";
sha256 = "sha256-1yg0C1lJrLxQEs2GA+XEBUx/JAyc+aW0UWjLhSEy0RI="; sha256 = "sha256-6KIsSsCAyZ6uYSbDBIKdtM4adGOttvJ78obCptcd57s=";
}; };
dontBuild = true; dontBuild = true;

View file

@ -1,4 +1,4 @@
{ mkDerivation, lib, fetchFromGitHub { mkDerivation, lib, fetchFromGitHub, fetchpatch
, cmake, extra-cmake-modules, pkg-config, libxcb, libpthreadstubs , cmake, extra-cmake-modules, pkg-config, libxcb, libpthreadstubs
, libXdmcp, libXau, qtbase, qtdeclarative, qtquickcontrols2, qttools, pam, systemd , libXdmcp, libXau, qtbase, qtdeclarative, qtquickcontrols2, qttools, pam, systemd
}: }:
@ -19,6 +19,12 @@ in mkDerivation {
patches = [ patches = [
./sddm-ignore-config-mtime.patch ./sddm-ignore-config-mtime.patch
# Load `/etc/profile` for `environment.variables` with zsh default shell.
# See: https://github.com/sddm/sddm/pull/1382
(fetchpatch {
url = "https://github.com/sddm/sddm/commit/e1dedeeab6de565e043f26ac16033e613c222ef9.patch";
sha256 = "sha256-OPyrUI3bbH+PGDBfoL4Ohb4wIvmy9TeYZhE0JxR/D58=";
})
]; ];
postPatch = postPatch =

View file

@ -1,5 +1,5 @@
{ lib, stdenv, fetchurl, intltool, wrapGAppsHook, pkg-config , gtk, libxml2 { lib, stdenv, fetchurl, intltool, wrapGAppsHook, pkg-config , gtk, libxml2
, enchant, gucharmap, python, gnome3 , enchant, gucharmap, python3, gnome3
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ intltool pkg-config wrapGAppsHook ]; nativeBuildInputs = [ intltool pkg-config wrapGAppsHook ];
buildInputs = [ gnome3.adwaita-icon-theme gtk libxml2 buildInputs = [ gnome3.adwaita-icon-theme gtk libxml2
enchant gucharmap python ]; enchant gucharmap python3 ];
meta = with lib; { meta = with lib; {
description = "A powerful editor targeted towards programmers and webdevelopers"; description = "A powerful editor targeted towards programmers and webdevelopers";

View file

@ -223,10 +223,10 @@
elpaBuild { elpaBuild {
pname = "auctex"; pname = "auctex";
ename = "auctex"; ename = "auctex";
version = "13.0.4"; version = "13.0.5";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/auctex-13.0.4.tar"; url = "https://elpa.gnu.org/packages/auctex-13.0.5.tar";
sha256 = "1362dqb8mcaddda9849gqsj6rzlfq18xprddb74j02884xl7hq65"; sha256 = "072wwsqfl8n2gi2inbp0s8k1ydr6fh1zyvc3rgynwzibjjniy319";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -2203,10 +2203,10 @@
elpaBuild { elpaBuild {
pname = "modus-operandi-theme"; pname = "modus-operandi-theme";
ename = "modus-operandi-theme"; ename = "modus-operandi-theme";
version = "0.13.1"; version = "0.13.2";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.13.1.tar"; url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.13.2.tar";
sha256 = "08l9qmhvxiscxn4mfb80x57mk4gfm5r0fs2l9c8i3gfzd4i3h091"; sha256 = "1sw18ijp9rhaf8y8x8z5rmxy23pxd3gaicgmp2zndcfmm54gwsic";
}; };
packageRequires = [ emacs modus-themes ]; packageRequires = [ emacs modus-themes ];
meta = { meta = {
@ -2237,10 +2237,10 @@
elpaBuild { elpaBuild {
pname = "modus-vivendi-theme"; pname = "modus-vivendi-theme";
ename = "modus-vivendi-theme"; ename = "modus-vivendi-theme";
version = "0.13.1"; version = "0.13.2";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.13.1.tar"; url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.13.2.tar";
sha256 = "0xz304zcc872c2zwnlm8ky0m18smf7bffiyj21ygghgclr7kgma1"; sha256 = "1qn3kzxwf81zc7gprd9wblhb8b8akdkxwajpgk036y8i4cmvmspn";
}; };
packageRequires = [ emacs modus-themes ]; packageRequires = [ emacs modus-themes ];
meta = { meta = {
@ -3252,10 +3252,10 @@
elpaBuild { elpaBuild {
pname = "setup"; pname = "setup";
ename = "setup"; ename = "setup";
version = "0.1.1"; version = "0.1.2";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/setup-0.1.1.tar"; url = "https://elpa.gnu.org/packages/setup-0.1.2.tar";
sha256 = "0z34m06lxw6xd6bxacm1h5cijamsksk4daf6fbzhd7kqmw3gbgqg"; sha256 = "1q29phch4fvmvc255kgvzsnzdqp6kaip7ybpxprd0kkdjs3jrsqv";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs ];
meta = { meta = {

View file

@ -4,10 +4,10 @@
elpaBuild { elpaBuild {
pname = "org"; pname = "org";
ename = "org"; ename = "org";
version = "20210315"; version = "20210322";
src = fetchurl { src = fetchurl {
url = "https://orgmode.org/elpa/org-20210315.tar"; url = "https://orgmode.org/elpa/org-20210322.tar";
sha256 = "128agds82kfmvxshzrs61802vgwlf2dsm79hq9x2bljrnvf8p14l"; sha256 = "0iv54rhwa0972yr1wqzmlkggs5vc6qajz8mmyfhynp65ap088g6v";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -19,10 +19,10 @@
elpaBuild { elpaBuild {
pname = "org-plus-contrib"; pname = "org-plus-contrib";
ename = "org-plus-contrib"; ename = "org-plus-contrib";
version = "20210315"; version = "20210322";
src = fetchurl { src = fetchurl {
url = "https://orgmode.org/elpa/org-plus-contrib-20210315.tar"; url = "https://orgmode.org/elpa/org-plus-contrib-20210322.tar";
sha256 = "0dih4690pbbnwlphjnv1kgvsw43pkcgk41xjjiphy9sf7w9gr11j"; sha256 = "0riswc3ira8hsawm37yypji55z47bw2477kaw3qx7ghz3n62r9nf";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {

View file

@ -2,13 +2,13 @@
mkDerivation rec { mkDerivation rec {
pname = "ghostwriter"; pname = "ghostwriter";
version = "2.0.0-rc4"; version = "2.0.0-rc5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wereturtle"; owner = "wereturtle";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "07547503a209hc0fcg902w3x0s1m899c10nj3gqz3hak0cmrasi3"; sha256 = "sha256-Gc0/AHxxJd5Cq3dBQ0Xy2TF78CBmQFYUzm4s7q1aHEE=";
}; };
nativeBuildInputs = [ qmake pkg-config qttools ]; nativeBuildInputs = [ qmake pkg-config qttools ];

View file

@ -29,24 +29,24 @@ let
connect-kak = buildKakounePluginFrom2Nix { connect-kak = buildKakounePluginFrom2Nix {
pname = "connect-kak"; pname = "connect-kak";
version = "2021-02-13"; version = "2021-02-24";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "alexherbo2"; owner = "kakounedotcom";
repo = "connect.kak"; repo = "connect.kak";
rev = "0858c0e50c6ca6d214fb088f052385a242548e83"; rev = "a536605a208149eed58986bda54f3dda215dfe61";
sha256 = "1w4pwybg3v916hcyc49gz0blygv54ivv81x8fxp44ck0sy98idr3"; sha256 = "1svw64zk28sn271vjyzvq21zaln13vnx59rxnxah6adq8n5nkr4a";
}; };
meta.homepage = "https://github.com/alexherbo2/connect.kak/"; meta.homepage = "https://github.com/kakounedotcom/connect.kak/";
}; };
fzf-kak = buildKakounePluginFrom2Nix { fzf-kak = buildKakounePluginFrom2Nix {
pname = "fzf-kak"; pname = "fzf-kak";
version = "2021-01-27"; version = "2021-03-15";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "andreyorst"; owner = "andreyorst";
repo = "fzf.kak"; repo = "fzf.kak";
rev = "e10de405e2a98e910d0808059200d206ba80f865"; rev = "4e6c9a857511fccdbbc835a1c9acb205b6486a4c";
sha256 = "1hbsm1k8k0cgv7gxqicvnl22n2lb1plhkanniggk694gll22lq68"; sha256 = "0syhhdlsm7vg6hcd2n2acag9g562z49rbb5smh5p2gnplhmp93i0";
}; };
meta.homepage = "https://github.com/andreyorst/fzf.kak/"; meta.homepage = "https://github.com/andreyorst/fzf.kak/";
}; };
@ -149,26 +149,26 @@ let
powerline-kak = buildKakounePluginFrom2Nix { powerline-kak = buildKakounePluginFrom2Nix {
pname = "powerline-kak"; pname = "powerline-kak";
version = "2021-02-15"; version = "2021-02-25";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jdugan6240"; owner = "andreyorst";
repo = "powerline.kak"; repo = "powerline.kak";
rev = "322a760daa099d519ff50d14c29b27f3e2af00d1"; rev = "64ad98b6c85e63345563671b043960464d51c4b0";
sha256 = "0mb8f8p6g75p05ifp45i0gbq2mib8c8giz7r1xfd0yrwspp4aksc"; sha256 = "09w2sk19qi64hgsyg4gb407vyppnlgk272mqbinz2r3apy6szkl3";
}; };
meta.homepage = "https://github.com/jdugan6240/powerline.kak/"; meta.homepage = "https://github.com/andreyorst/powerline.kak/";
}; };
prelude-kak = buildKakounePluginFrom2Nix { prelude-kak = buildKakounePluginFrom2Nix {
pname = "prelude-kak"; pname = "prelude-kak";
version = "2020-09-06"; version = "2021-02-24";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "alexherbo2"; owner = "kakounedotcom";
repo = "prelude.kak"; repo = "prelude.kak";
rev = "f1e0f4d5cb62a36924e3f8ba6824d6aed8c19d23"; rev = "5dbdc020c546032885c1fdb463e366cc89fc15ad";
sha256 = "1pncr8azqvl2z9yvzhc68p1s9fld8cvak8yz88zgrp5ypx2cxl8c"; sha256 = "1pncr8azqvl2z9yvzhc68p1s9fld8cvak8yz88zgrp5ypx2cxl8c";
}; };
meta.homepage = "https://github.com/alexherbo2/prelude.kak/"; meta.homepage = "https://github.com/kakounedotcom/prelude.kak/";
}; };
replace-mode-kak = buildKakounePluginFrom2Nix { replace-mode-kak = buildKakounePluginFrom2Nix {

View file

@ -1,16 +1,16 @@
alexherbo2/auto-pairs.kak alexherbo2/auto-pairs.kak
alexherbo2/connect.kak
alexherbo2/prelude.kak
alexherbo2/replace-mode.kak alexherbo2/replace-mode.kak
alexherbo2/sleuth.kak alexherbo2/sleuth.kak
andreyorst/fzf.kak andreyorst/fzf.kak
andreyorst/powerline.kak
danr/kakoune-easymotion danr/kakoune-easymotion
Delapouite/kakoune-buffers Delapouite/kakoune-buffers
Delapouite/kakoune-registers Delapouite/kakoune-registers
enricozb/tabs.kak@main enricozb/tabs.kak@main
greenfork/active-window.kak greenfork/active-window.kak
jdugan6240/powerline.kak
kakoune-editor/kakoune-extra-filetypes kakoune-editor/kakoune-extra-filetypes
kakounedotcom/connect.kak
kakounedotcom/prelude.kak
listentolist/kakoune-rainbow listentolist/kakoune-rainbow
mayjs/openscad.kak mayjs/openscad.kak
occivink/kakoune-buffer-switcher occivink/kakoune-buffer-switcher

View file

@ -1,4 +1,4 @@
{ lib, stdenv, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper { lib, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper
, msgpack, neovim, pythonPackages, qtbase }: , msgpack, neovim, pythonPackages, qtbase }:
mkDerivation rec { mkDerivation rec {

View file

@ -1,20 +1,20 @@
{ lib, stdenv, fetchhg, fetchFromGitHub, fetchurl, gtk2, glib, pkg-config, unzip, ncurses, zip }: { lib, stdenv, fetchFromGitHub, fetchurl, gtk2, glib, pkg-config, unzip, ncurses, zip }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "11.0_beta"; version = "11.1";
pname = "textadept11"; pname = "textadept11";
nativeBuildInputs = [ pkg-config unzip ]; nativeBuildInputs = [ pkg-config unzip zip ];
buildInputs = [ buildInputs = [
gtk2 ncurses glib zip gtk2 ncurses glib
]; ];
src = fetchFromGitHub { src = fetchFromGitHub {
name = "textadept11"; name = "textadept11";
owner = "orbitalquark"; owner = "orbitalquark";
repo = "textadept"; repo = "textadept";
rev = "8da5f6b4a13f14b9dd3cb9dc23ad4f7bf41e91c1"; rev = "1df99d561dd2055a01efa9183bb9e1b2ad43babc";
sha256 = "0v11v3x8g6v696m3l1bm52zy2g9xzz7hlmn912sn30nhcag3raxs"; sha256 = "0g4bh5dp391vi32aa796vszpbxyl2dm5231v9dwc8l9v0b2786qn";
}; };
preConfigure = preConfigure =
@ -40,7 +40,9 @@ stdenv.mkDerivation rec {
''; '';
makeFlags = [ makeFlags = [
"PREFIX=$(out) WGET=true PIXMAPS_DIR=$(out)/share/pixmaps" "PREFIX=$(out)"
"WGET=true"
"PIXMAPS_DIR=$(out)/share/pixmaps"
]; ];
meta = with lib; { meta = with lib; {

View file

@ -3,13 +3,13 @@
url = "https://www.scintilla.org/scintilla445.tgz"; url = "https://www.scintilla.org/scintilla445.tgz";
sha256 = "1v1kyxj7rv5rxadbg8gl8wh1jafpy7zj0wr6dcyxq9209dl6h8ag"; sha256 = "1v1kyxj7rv5rxadbg8gl8wh1jafpy7zj0wr6dcyxq9209dl6h8ag";
}; };
"9e2ffa159299899c9345aea15c17ba1941953871.zip" = { "6a774158d8a3c7bc7ea120bc01cdb016fa351a7e.zip" = {
url = "https://github.com/orbitalquark/scinterm/archive/9e2ffa159299899c9345aea15c17ba1941953871.zip"; url = "https://github.com/orbitalquark/scinterm/archive/6a774158d8a3c7bc7ea120bc01cdb016fa351a7e.zip";
sha256 = "12h7prgp689w45p4scxd8vvsyw8fkv27g6gvgis55xr44daa6122"; sha256 = "083xvpw14dxbyrv4i48q76bmr44hs637qv363n6ibfs8xv1kq7iv";
}; };
"scintillua_4.4.5-1.zip" = { "scintillua_4.4.5-2.zip" = {
url = "https://github.com/orbitalquark/scintillua/archive/scintillua_4.4.5-1.zip"; url = "https://github.com/orbitalquark/scintillua/archive/scintillua_4.4.5-2.zip";
sha256 = "095wpbid2kvr5xgkhd5bd4sd7ljgk6gd9palrjkmdcwfgsf1lp04"; sha256 = "1061y2gg78zb2mml8msyarxgdwbf7g8g2v08fr1qqsqi2pbb7mfc";
}; };
"lua-5.3.5.tar.gz" = { "lua-5.3.5.tar.gz" = {
url = "http://www.lua.org/ftp/lua-5.3.5.tar.gz"; url = "http://www.lua.org/ftp/lua-5.3.5.tar.gz";
@ -19,17 +19,17 @@
url = "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.2.tar.gz"; url = "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.2.tar.gz";
sha256 = "1zjzl7acvcdavmcg5l7wi12jd4rh95q9pl5aiww7hv0v0mv6bmj8"; sha256 = "1zjzl7acvcdavmcg5l7wi12jd4rh95q9pl5aiww7hv0v0mv6bmj8";
}; };
"v1_7_0_2.zip" = { "v1_8_0.zip" = {
url = "https://github.com/keplerproject/luafilesystem/archive/v1_7_0_2.zip"; url = "https://github.com/keplerproject/luafilesystem/archive/v1_8_0.zip";
sha256 = "0y44ymc7higz5dd2w3c6ib7mwmpr6yvszcl7lm12nf8x3y4snx4i"; sha256 = "12p1p5qpdql44y3cc035h8rs8rgdqp6nrnrixlp5544agb5bx9p3";
}; };
"64587546482a1a6324706d75c80b77d2f87118a4.zip" = { "64587546482a1a6324706d75c80b77d2f87118a4.zip" = {
url = "https://github.com/orbitalquark/gtdialog/archive/64587546482a1a6324706d75c80b77d2f87118a4.zip"; url = "https://github.com/orbitalquark/gtdialog/archive/64587546482a1a6324706d75c80b77d2f87118a4.zip";
sha256 = "10mglbnn8r1cakqn9h285pwfnh7kfa98v7j8qh83c24n66blyfh9"; sha256 = "10mglbnn8r1cakqn9h285pwfnh7kfa98v7j8qh83c24n66blyfh9";
}; };
"cdk-5.0-20150928.tgz" = { "cdk-5.0-20200923.tgz" = {
url = "http://invisible-mirror.net/archives/cdk/cdk-5.0-20150928.tgz"; url = "http://invisible-mirror.net/archives/cdk/cdk-5.0-20200923.tgz";
sha256 = "0j74l874y33i26y5kjg3pf1vswyjif8k93pqhi0iqykpbxfsg382"; sha256 = "1vdakz119a13d7p7w53hk56fdmbkhv6y9xvdapcfnbnbh3l5szq0";
}; };
"libtermkey-0.20.tar.gz" = { "libtermkey-0.20.tar.gz" = {
url = "http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.20.tar.gz"; url = "http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.20.tar.gz";

View file

@ -3,13 +3,13 @@
mkDerivation rec { mkDerivation rec {
pname = "tiled"; pname = "tiled";
version = "1.4.3"; version = "1.5.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bjorn"; owner = "bjorn";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0n8p7bp5pqq72c65av3v7wbazwphh78pw27nqvpiyp9y8k5w4pg0"; sha256 = "sha256-Pf9nA5DUAJ+PPNG+oP7RO4/TD8fy4ADsyq625a6cbFk=";
}; };
nativeBuildInputs = [ pkg-config qmake ]; nativeBuildInputs = [ pkg-config qmake ];

View file

@ -75,7 +75,6 @@ in stdenv.mkDerivation rec {
patches = [ ./cflags-prune.diff ] ++ lib.optional ftNixSupport ./ft-nix-support.patch; patches = [ ./cflags-prune.diff ] ++ lib.optional ftNixSupport ./ft-nix-support.patch;
configureFlags = [ configureFlags = [
"--enable-gui=${guiSupport}"
"--with-features=${features}" "--with-features=${features}"
"--disable-xsmp" # XSMP session management "--disable-xsmp" # XSMP session management
"--disable-xsmp_interact" # XSMP interaction "--disable-xsmp_interact" # XSMP interaction
@ -95,6 +94,7 @@ in stdenv.mkDerivation rec {
"--disable-carbon_check" "--disable-carbon_check"
"--disable-gtktest" "--disable-gtktest"
] ]
++ lib.optional (guiSupport == "gtk2" || guiSupport == "gtk3") "--enable-gui=${guiSupport}"
++ lib.optional stdenv.isDarwin ++ lib.optional stdenv.isDarwin
(if darwinSupport then "--enable-darwin" else "--disable-darwin") (if darwinSupport then "--enable-darwin" else "--disable-darwin")
++ lib.optionals luaSupport [ ++ lib.optionals luaSupport [
@ -127,8 +127,22 @@ in stdenv.mkDerivation rec {
++ lib.optional (guiSupport == "gtk3") wrapGAppsHook ++ lib.optional (guiSupport == "gtk3") wrapGAppsHook
; ;
buildInputs = [ ncurses libX11 libXext libSM libXpm libXt libXaw libXau buildInputs = [
libXmu glib libICE ] ncurses
glib
]
# All X related dependencies
++ lib.optionals (guiSupport == "gtk2" || guiSupport == "gtk3") [
libSM
libICE
libX11
libXext
libXpm
libXt
libXaw
libXau
libXmu
]
++ lib.optional (guiSupport == "gtk2") gtk2-x11 ++ lib.optional (guiSupport == "gtk2") gtk2-x11
++ lib.optional (guiSupport == "gtk3") gtk3-x11 ++ lib.optional (guiSupport == "gtk3") gtk3-x11
++ lib.optionals darwinSupport [ CoreServices CoreData Cocoa Foundation libobjc ] ++ lib.optionals darwinSupport [ CoreServices CoreData Cocoa Foundation libobjc ]

View file

@ -19,18 +19,18 @@ fi
VSCODE_VER=$(curl --fail --silent https://api.github.com/repos/Microsoft/vscode/releases/latest | jq --raw-output .tag_name) VSCODE_VER=$(curl --fail --silent https://api.github.com/repos/Microsoft/vscode/releases/latest | jq --raw-output .tag_name)
sed -i "s/version = \".*\"/version = \"${VSCODE_VER}\"/" "$ROOT/vscode.nix" sed -i "s/version = \".*\"/version = \"${VSCODE_VER}\"/" "$ROOT/vscode.nix"
VSCODE_LINUX_URL="https://vscode-update.azurewebsites.net/${VSCODE_VER}/linux-x64/stable" VSCODE_LINUX_URL="https://update.code.visualstudio.com/${VSCODE_VER}/linux-x64/stable"
VSCODE_LINUX_SHA256=$(nix-prefetch-url ${VSCODE_LINUX_URL}) VSCODE_LINUX_SHA256=$(nix-prefetch-url ${VSCODE_LINUX_URL})
sed -i "s/x86_64-linux = \".\{52\}\"/x86_64-linux = \"${VSCODE_LINUX_SHA256}\"/" "$ROOT/vscode.nix" sed -i "s/x86_64-linux = \".\{52\}\"/x86_64-linux = \"${VSCODE_LINUX_SHA256}\"/" "$ROOT/vscode.nix"
VSCODE_DARWIN_URL="https://vscode-update.azurewebsites.net/${VSCODE_VER}/darwin/stable" VSCODE_DARWIN_URL="https://update.code.visualstudio.com/${VSCODE_VER}/darwin/stable"
VSCODE_DARWIN_SHA256=$(nix-prefetch-url ${VSCODE_DARWIN_URL}) VSCODE_DARWIN_SHA256=$(nix-prefetch-url ${VSCODE_DARWIN_URL})
sed -i "s/x86_64-darwin = \".\{52\}\"/x86_64-darwin = \"${VSCODE_DARWIN_SHA256}\"/" "$ROOT/vscode.nix" sed -i "s/x86_64-darwin = \".\{52\}\"/x86_64-darwin = \"${VSCODE_DARWIN_SHA256}\"/" "$ROOT/vscode.nix"
VSCODE_LINUX_AARCH64_URL="https://vscode-update.azurewebsites.net/${VSCODE_VER}/linux-arm64/stable" VSCODE_LINUX_AARCH64_URL="https://update.code.visualstudio.com/${VSCODE_VER}/linux-arm64/stable"
VSCODE_LINUX_AARCH64_SHA256=$(nix-prefetch-url ${VSCODE_LINUX_AARCH64_URL}) VSCODE_LINUX_AARCH64_SHA256=$(nix-prefetch-url ${VSCODE_LINUX_AARCH64_URL})
sed -i "s/aarch64-linux = \".\{52\}\"/aarch64-linux = \"${VSCODE_LINUX_AARCH64_SHA256}\"/" "$ROOT/vscode.nix" sed -i "s/aarch64-linux = \".\{52\}\"/aarch64-linux = \"${VSCODE_LINUX_AARCH64_SHA256}\"/" "$ROOT/vscode.nix"
VSCODE_LINUX_ARMV7L_URL="https://vscode-update.azurewebsites.net/${VSCODE_VER}/linux-armhf/stable" VSCODE_LINUX_ARMV7L_URL="https://update.code.visualstudio.com/${VSCODE_VER}/linux-armhf/stable"
VSCODE_LINUX_ARMV7L_SHA256=$(nix-prefetch-url ${VSCODE_LINUX_ARMV7L_URL}) VSCODE_LINUX_ARMV7L_SHA256=$(nix-prefetch-url ${VSCODE_LINUX_ARMV7L_URL})
sed -i "s/armv7l-linux = \".\{52\}\"/armv7l-linux = \"${VSCODE_LINUX_ARMV7L_SHA256}\"/" "$ROOT/vscode.nix" sed -i "s/armv7l-linux = \".\{52\}\"/armv7l-linux = \"${VSCODE_LINUX_ARMV7L_SHA256}\"/" "$ROOT/vscode.nix"

View file

@ -13,10 +13,10 @@ let
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz"; archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
sha256 = { sha256 = {
x86_64-linux = "1px6x99cv8nb8lcy3vgcicr4ar0bfj5rfnc5a1yw8rs5p1qnflgw"; x86_64-linux = "0fpa3b807hy3wrb98h5s0p6ljya279bikv2qwq30nvr0f4zn48bk";
x86_64-darwin = "0grzivqb2fyvwh0fjh9vr205fjcsrd1iqhkwk3mgv792zfrb7ksf"; x86_64-darwin = "0bw7pdzn0a0zr7x8fpwck7v73dq5vh71ja00z11mhjrkjnvmmd9k";
aarch64-linux = "0p0msxgc13kqmpq7wk61igc1qbgmgg9463s44dp4ii3630iyr4lw"; aarch64-linux = "04wrqcmyamhwiwcyay1z0q0dvf6g7k3pcs93x7hahy16l65w7s2c";
armv7l-linux = "147lki1wr5nzsg1mq12jmdjq9qr6vbdpmzbpr5nrvq23cak94ff8"; armv7l-linux = "1hkc9i4z021jwjn275w790bppfvi63g0cnwvkssqdh1c94939rhv";
}.${system}; }.${system};
in in
callPackage ./generic.nix rec { callPackage ./generic.nix rec {
@ -25,7 +25,7 @@ in
# Please backport all compatible updates to the stable release. # Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem. # This is important for the extension ecosystem.
version = "1.54.2"; version = "1.54.3";
pname = "vscode"; pname = "vscode";
executableName = "code" + lib.optionalString isInsiders "-insiders"; executableName = "code" + lib.optionalString isInsiders "-insiders";
@ -34,7 +34,7 @@ in
src = fetchurl { src = fetchurl {
name = "VSCode_${version}_${plat}.${archive_fmt}"; name = "VSCode_${version}_${plat}.${archive_fmt}";
url = "https://vscode-update.azurewebsites.net/${version}/${plat}/stable"; url = "https://update.code.visualstudio.com/${version}/${plat}/stable";
inherit sha256; inherit sha256;
}; };

View file

@ -1,20 +1,39 @@
{ fetchurl, lib, stdenv, glib, libgee, pkg-config, ncurses, boehmgc, perl, help2man, vala }: { lib
, stdenv
, fetchurl
, boehmgc
, glib
, help2man
, libgee
, ncurses
, perl
, pkg-config
, vala
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "zile-2.6.0.90"; pname = "zile";
version = "2.6.1";
src = fetchurl { src = fetchurl {
url = "mirror://gnu/zile/${name}.tar.gz"; url = "mirror://gnu/zile/${pname}-${version}.tar.gz";
sha256 = "1bhdwnasmqhy0hi3fqmpzr8xkw5zlqjpmf1cj42h4cg3fnamp6r3"; hash = "sha256-v7rN33aOORc6J0Z5JP5AmZCj6XvjYyoCl5hl+7mvAnc=";
}; };
buildInputs = [ glib libgee ncurses boehmgc vala ]; buildInputs = [
nativeBuildInputs = [ perl pkg-config ] boehmgc
glib
libgee
ncurses
];
nativeBuildInputs = [
perl
pkg-config
vala
]
# `help2man' wants to run Zile, which won't work when the # `help2man' wants to run Zile, which won't work when the
# newly-produced binary can't be run at build-time. # newly-produced binary can't be run at build-time.
++ lib.optional ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) help2man;
(stdenv.hostPlatform == stdenv.buildPlatform)
help2man;
# Tests can't be run because most of them rely on the ability to # Tests can't be run because most of them rely on the ability to
# fiddle with the terminal. # fiddle with the terminal.
@ -24,33 +43,38 @@ stdenv.mkDerivation rec {
gl_cv_func_fstatat_zero_flag="yes"; gl_cv_func_fstatat_zero_flag="yes";
meta = with lib; { meta = with lib; {
description = "Lightweight Emacs clone";
longDescription = ''
GNU Zile, which is a lightweight Emacs clone. Zile is short
for Zile Is Lossy Emacs. Zile has been written to be as
similar as possible to Emacs; every Emacs user should feel at
home.
Zile has all of Emacs's basic editing features: it is 8-bit
clean (though it currently lacks Unicode support), and the
number of editing buffers and windows is only limited by
available memory and screen space respectively. Registers,
minibuffer completion and auto fill are available. Function
and variable names are identical with Emacs's (except those
containing the word "emacs", which instead contain the word
"zile"!).
However, all of this is packed into a program which typically
compiles to about 130Kb.
'';
homepage = "https://www.gnu.org/software/zile/"; homepage = "https://www.gnu.org/software/zile/";
description = "Zile Implements Lua Editors";
longDescription = ''
GNU Zile is a text editor development kit, so that you can (relatively)
quickly develop your own ideal text editor without reinventing the wheel
for many of the common algorithms and data-structures needed to do so.
It comes with an example implementation of a lightweight Emacs clone,
called Zemacs. Every Emacs user should feel at home with Zemacs. Zemacs is
aimed at small footprint systems and quick editing sessions (it starts up
and shuts down instantly).
More editors implemented over the Zile frameworks are forthcoming as the
data-structures and interfaces improve: Zz an emacs inspired editor using
Lua as an extension language; Zee a minimalist non-modal editor; Zi a
lightweight vi clone; and more...
Zile is a collection of algorithms and data-structures that currently
support all basic Emacs-like editing features: it is 8-bit clean (though
Unicode support is not ready yet), and the number of editing buffers and
windows is only limited by available memoryand screen space
respectively. Registers, minibuffer completion and auto fill are
available.
Zemacs implements a subset of Emacs with identical function and variable
names, continuing the spirit of the earlier Zile editor implemented in C.
GNU Zile, which is a lightweight Emacs clone. Zile is short for Zile Is
Lossy Emacs. Zile has been written to be as similar as possible to Emacs;
every Emacs user should feel at home.
'';
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
maintainers = with maintainers; [ pSub AndersonTorres ];
maintainers = with maintainers; [ pSub ];
platforms = platforms.unix; platforms = platforms.unix;
}; };
} }

View file

@ -1,6 +1,7 @@
{ lib, stdenv { lib, stdenv
, mkDerivation , mkDerivation
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, substituteAll , substituteAll
, gdal , gdal
, cmake , cmake
@ -19,7 +20,7 @@
mkDerivation rec { mkDerivation rec {
pname = "OpenOrienteering-Mapper"; pname = "OpenOrienteering-Mapper";
version = "0.9.4"; version = "0.9.5";
buildInputs = [ buildInputs = [
gdal gdal
@ -38,14 +39,21 @@ mkDerivation rec {
owner = "OpenOrienteering"; owner = "OpenOrienteering";
repo = "mapper"; repo = "mapper";
rev = "v${version}"; rev = "v${version}";
sha256 = "13k9dirqm74lknhr8w121zr1hjd9gm1y73cj4rrj98rx44dzmk7b"; sha256 = "1w8ikqpgi0ksrzjal5ihfaik4grc5v3gdnnv79j20xkr2p4yn1h5";
}; };
patches = (substituteAll { patches = [
# See https://github.com/NixOS/nixpkgs/issues/86054 # https://github.com/NixOS/nixpkgs/issues/86054
(substituteAll {
src = ./fix-qttranslations-path.diff; src = ./fix-qttranslations-path.diff;
inherit qttranslations; inherit qttranslations;
}); })
# https://github.com/OpenOrienteering/mapper/pull/1907
(fetchpatch {
url = "https://github.com/OpenOrienteering/mapper/commit/bc52aa567e90a58d6963b44d5ae1909f3f841508.patch";
sha256 = "1bkckapzccn6k0ri6bgrr0nhis9498fnwj7b32s2ysym8zcg0355";
})
];
cmakeFlags = [ cmakeFlags = [
# Building the manual and bundling licenses fails # Building the manual and bundling licenses fails
@ -81,7 +89,8 @@ mkDerivation rec {
and provides a free alternative to the existing proprietary solution. and provides a free alternative to the existing proprietary solution.
''; '';
homepage = "https://www.openorienteering.org/apps/mapper/"; homepage = "https://www.openorienteering.org/apps/mapper/";
license = licenses.gpl3; changelog = "https://github.com/OpenOrienteering/mapper/releases/tag/v${version}";
license = licenses.gpl3Plus;
platforms = with platforms; linux ++ darwin; platforms = with platforms; linux ++ darwin;
maintainers = with maintainers; [ mpickering sikmir ]; maintainers = with maintainers; [ mpickering sikmir ];
}; };

View file

@ -1,5 +1,5 @@
{ lib, stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkg-config, perlPackages, { lib, stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkg-config, perlPackages,
libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl, libxml2, gettext, python2, libxml2Python, docbook5, docbook_xsl,
libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui, libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui,
gtk-mac-integration-gtk2 }: gtk-mac-integration-gtk2 }:
@ -18,7 +18,7 @@ stdenv.mkDerivation {
]; ];
buildInputs = buildInputs =
[ gtk2 libxml2 gettext python libxml2Python docbook5 [ gtk2 libxml2 gettext python2 libxml2Python docbook5
libxslt docbook_xsl libart_lgpl ] libxslt docbook_xsl libart_lgpl ]
++ lib.optional withGNOME libgnomeui ++ lib.optional withGNOME libgnomeui
++ lib.optional stdenv.isDarwin gtk-mac-integration-gtk2; ++ lib.optional stdenv.isDarwin gtk-mac-integration-gtk2;

View file

@ -6,7 +6,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "lightburn"; pname = "lightburn";
version = "0.9.21"; version = "0.9.22";
nativeBuildInputs = [ nativeBuildInputs = [
p7zip p7zip
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://github.com/LightBurnSoftware/deployment/releases/download/${version}/LightBurn-Linux64-v${version}.7z"; url = "https://github.com/LightBurnSoftware/deployment/releases/download/${version}/LightBurn-Linux64-v${version}.7z";
sha256 = "sha256-Tnv+vfKOdDWIU36T9ZqwdTwuMd2AOGyKBY0IkPfrZlc="; sha256 = "sha256-DOiO36suytukkviqYyLL47DFVzsJt2ZfSnnni95CLaA=";
}; };
buildInputs = [ buildInputs = [

View file

@ -1,6 +1,6 @@
{ lib, stdenv { lib
, stdenv
, fetchFromGitLab , fetchFromGitLab
, fetchpatch
, writeText , writeText
, cmake , cmake
, doxygen , doxygen
@ -44,24 +44,16 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "monado"; pname = "monado";
version = "0.4.1"; version = "21.0.0";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.freedesktop.org"; domain = "gitlab.freedesktop.org";
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "114aif79dqyn2qg07mkv6lzmqn15k6fdcii818rdf5g4bp7zzzgm"; sha256 = "07zxs96i3prjqww1f68496cl2xxqaidx32lpfyy0pn5am4c297zc";
}; };
patches = [
# fix libsurvive autodetection, drop with the next version update
(fetchpatch {
url = "https://gitlab.freedesktop.org/monado/monado/-/commit/345e9eab56e2de9e8b07cf72c2a67cf2ebd01e62.patch";
sha256 = "17c110an6sxc8rn7dfz30rfkbayg64w68licicwc8cqabi6cgrm3";
})
];
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
doxygen doxygen

View file

@ -3,13 +3,13 @@
mkDerivation rec { mkDerivation rec {
pname = "photoflare"; pname = "photoflare";
version = "1.6.7"; version = "1.6.7.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "PhotoFlare"; owner = "PhotoFlare";
repo = "photoflare"; repo = "photoflare";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-Gx3YP29NrNHp0p05a1O4Xb9kqkA6pQLTJZ3/wOx+BWY="; sha256 = "sha256-7b7ICcHuMjOMtyQDkokoHeZrF4G+bOzgRJP4mkns+Zc=";
}; };
nativeBuildInputs = [ qmake qttools ]; nativeBuildInputs = [ qmake qttools ];

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "yEd"; pname = "yEd";
version = "3.20.1"; version = "3.21.1";
src = fetchzip { src = fetchzip {
url = "https://www.yworks.com/resources/yed/demo/${pname}-${version}.zip"; url = "https://www.yworks.com/resources/yed/demo/${pname}-${version}.zip";
sha256 = "0sd73s700f3gqq5zq1psrqjg6ff2gv49f8vd37v6bv65vdxqxryq"; sha256 = "1jw28hkd7p0n660gid8yh5y0kdcz6ycn4hsgjlf0pq48x9kv6w0c";
}; };
nativeBuildInputs = [ makeWrapper unzip wrapGAppsHook ]; nativeBuildInputs = [ makeWrapper unzip wrapGAppsHook ];

View file

@ -1,7 +1,7 @@
{ {
mkDerivation, lib, mkDerivation, lib,
extra-cmake-modules, extra-cmake-modules,
ffmpeg_3, kio, taglib ffmpeg_4, kio, taglib
}: }:
mkDerivation { mkDerivation {
@ -11,5 +11,5 @@ mkDerivation {
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ extra-cmake-modules ]; nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ ffmpeg_3 kio taglib ]; buildInputs = [ ffmpeg_4 kio taglib ];
} }

View file

@ -9,7 +9,7 @@ mkDerivation {
pname = "libksane"; pname = "libksane";
meta = with lib; { meta = with lib; {
license = licenses.gpl2; license = licenses.gpl2;
maintainers = with maintainers; [ pshendry ]; maintainers = with maintainers; [ polendri ];
}; };
nativeBuildInputs = [ extra-cmake-modules ]; nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ qtbase ki18n ktextwidgets kwallet kwidgetsaddons sane-backends ]; buildInputs = [ qtbase ki18n ktextwidgets kwallet kwidgetsaddons sane-backends ];

View file

@ -8,11 +8,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "1password"; pname = "1password";
version = "8.0.28"; version = "8.0.30";
src = fetchurl { src = fetchurl {
url = "https://onepassword.s3.amazonaws.com/linux/appimage/${pname}-${version}.AppImage"; url = "https://onepassword.s3.amazonaws.com/linux/appimage/${pname}-${version}.AppImage";
hash = "sha256-okLeyok/5rihGXaQaUR06dGkpuqqW02qJ6q6VVLtZsE="; hash = "sha256-j+fp/f8nta+OOuOFU4mmUrGYlVmAqdaXO4rLJ0in+m8=";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View file

@ -1,10 +1,10 @@
{ stdenv, lib, fetchFromGitHub, makeWrapper { stdenv, lib, fetchFromGitHub, makeWrapper
, curl, python, bind, iproute, bc, gitMinimal }: , curl, python3, bind, iproute, bc, gitMinimal }:
let let
version = "1.23.0"; version = "1.23.0";
deps = lib.makeBinPath [ deps = lib.makeBinPath [
curl curl
python python3
bind.dnsutils bind.dnsutils
iproute iproute
bc bc
@ -24,11 +24,13 @@ stdenv.mkDerivation {
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
patchPhase = '' postPatch = ''
patchShebangs install.sh patchShebangs install.sh
substituteInPlace install.sh --replace /usr/local "$out" substituteInPlace install.sh --replace /usr/local "$out"
''; '';
strictDeps = true;
dontBuild = true; dontBuild = true;
installPhase = '' installPhase = ''

View file

@ -86,6 +86,7 @@ mkDerivation rec {
with python3Packages; [ with python3Packages; [
apsw apsw
beautifulsoup4 beautifulsoup4
cchardet
css-parser css-parser
cssselect cssselect
dateutil dateutil

View file

@ -1,6 +1,6 @@
{ lib, fetchFromGitHub, pythonPackages, gettext }: { lib, fetchFromGitHub, python2Packages, gettext }:
pythonPackages.buildPythonApplication rec { python2Packages.buildPythonApplication rec {
pname = "cherrytree"; pname = "cherrytree";
version = "0.39.4"; version = "0.39.4";
@ -14,7 +14,7 @@ pythonPackages.buildPythonApplication rec {
nativeBuildInputs = [ gettext ]; nativeBuildInputs = [ gettext ];
propagatedBuildInputs = with pythonPackages; [ pygtk dbus-python pygtksourceview ]; propagatedBuildInputs = with python2Packages; [ pygtk dbus-python pygtksourceview ];
patches = [ ./subprocess.patch ]; patches = [ ./subprocess.patch ];

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch { lib, stdenv, fetchFromGitHub
, dbus, cmake, pkg-config , dbus, cmake, pkg-config
, glib, udev, polkit, libusb1, libjpeg, libmodule , glib, udev, polkit, libusb1, libjpeg, libmodule
, pcre, libXdmcp, util-linux, libpthreadstubs , pcre, libXdmcp, util-linux, libpthreadstubs
@ -9,39 +9,31 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "clightd"; pname = "clightd";
version = "5.1"; version = "5.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "FedeDP"; owner = "FedeDP";
repo = "Clightd"; repo = "Clightd";
rev = version; rev = version;
sha256 = "sha256-BEGum0t+FrCTAEQwTsWeYpoIqimTAz+Bv/ZQPQ3fePY="; sha256 = "sha256-bb+PQsWLf4KnbzWUY6B42yHaDQKN9dtyfwSLe8FBaWU=";
}; };
patches = [
# Not needed by next version bump
(fetchpatch {
url = "https://github.com/FedeDP/Clightd/commit/a52a2888e3798c572dad359a017cb0d40e7c5fb7.patch";
sha256 = "sha256-nUzNBia1EvBQxinAfjyKbuldBoHLY1hfMaxgG2lKQWg=";
})
];
# dbus-1.pc has datadir=/etc # dbus-1.pc has datadir=/etc
SYSTEM_BUS_DIR = "${placeholder "out"}/share/dbus-1/system-services"; SYSTEM_BUS_DIR = "${placeholder "out"}/share/dbus-1/system-services";
# systemd.pc has prefix=${systemd.out}
MODULE_LOAD_DIR = "${placeholder "out"}/lib/modules-load.d";
# polkit-gobject-1.pc has prefix=${polkit.out} # polkit-gobject-1.pc has prefix=${polkit.out}
POLKIT_ACTION_DIR = "${placeholder "out"}/share/polkit-1/actions"; POLKIT_ACTION_DIR = "${placeholder "out"}/share/polkit-1/actions";
postPatch = '' postPatch = ''
sed -i "s@/etc@$out\0@" CMakeLists.txt
sed -i "s@pkg_get_variable(SYSTEM_BUS_DIR.*@set(SYSTEM_BUS_DIR $SYSTEM_BUS_DIR)@" CMakeLists.txt sed -i "s@pkg_get_variable(SYSTEM_BUS_DIR.*@set(SYSTEM_BUS_DIR $SYSTEM_BUS_DIR)@" CMakeLists.txt
sed -i "s@pkg_get_variable(MODULE_LOAD_DIR.*@set(MODULE_LOAD_DIR $MODULE_LOAD_DIR)@" CMakeLists.txt
sed -i "s@pkg_get_variable(POLKIT_ACTION_DIR.*@set(POLKIT_ACTION_DIR $POLKIT_ACTION_DIR)@" CMakeLists.txt sed -i "s@pkg_get_variable(POLKIT_ACTION_DIR.*@set(POLKIT_ACTION_DIR $POLKIT_ACTION_DIR)@" CMakeLists.txt
''; '';
cmakeFlags = with lib; cmakeFlags = with lib;
optional enableDdc "-DENABLE_DDC=1" [ "-DSYSTEMD_SERVICE_DIR=${placeholder "out"}/lib/systemd/system"
"-DDBUS_CONFIG_DIR=${placeholder "out"}/etc/dbus-1/system.d"
# systemd.pc has prefix=${systemd.out}
"-DMODULE_LOAD_DIR=${placeholder "out"}/lib/modules-load.d"
] ++ optional enableDdc "-DENABLE_DDC=1"
++ optional enableDpms "-DENABLE_DPMS=1" ++ optional enableDpms "-DENABLE_DPMS=1"
++ optional enableGamma "-DENABLE_GAMMA=1" ++ optional enableGamma "-DENABLE_GAMMA=1"
++ optional enableScreen "-DENABLE_SCREEN=1"; ++ optional enableScreen "-DENABLE_SCREEN=1";

View file

@ -1,4 +1,4 @@
{ stdenv, runtimeShell, lib, fetchurl, python, pythonPackages, unzip }: { stdenv, runtimeShell, lib, fetchurl, python2Packages, unzip }:
# This package uses a precompiled "binary" distribution of CuraByDagoma, # This package uses a precompiled "binary" distribution of CuraByDagoma,
# distributed by the editor. # distributed by the editor.
@ -13,7 +13,9 @@
# I guess people owning a 3D printer generally don't use i686. # I guess people owning a 3D printer generally don't use i686.
# If, however, someone needs it, we certainly can find a solution. # If, however, someone needs it, we certainly can find a solution.
stdenv.mkDerivation rec { let
pythonPackages = python2Packages;
in stdenv.mkDerivation rec {
pname = "curabydagoma"; pname = "curabydagoma";
# Version is the date, UNIX format # Version is the date, UNIX format
version = "1520506579"; version = "1520506579";
@ -26,7 +28,7 @@ stdenv.mkDerivation rec {
}; };
unpackCmd = "unzip $curSrc && tar zxf CuraByDagoma_amd64.tar.gz"; unpackCmd = "unzip $curSrc && tar zxf CuraByDagoma_amd64.tar.gz";
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];
buildInputs = [ python pythonPackages.pyopengl pythonPackages.wxPython pythonPackages.pyserial pythonPackages.numpy ]; buildInputs = [ pythonPackages.python pythonPackages.pyopengl pythonPackages.wxPython pythonPackages.pyserial pythonPackages.numpy ];
# Compile all pyc files because the included pyc files may be older than the # Compile all pyc files because the included pyc files may be older than the
# py files. However, Python doesn't realize that because the packages # py files. However, Python doesn't realize that because the packages
@ -46,7 +48,7 @@ stdenv.mkDerivation rec {
cat > $out/bin/curabydago <<EOF cat > $out/bin/curabydago <<EOF
#!${runtimeShell} #!${runtimeShell}
export PYTHONPATH=$PYTHONPATH export PYTHONPATH=$PYTHONPATH
${python.out}/bin/python $out/curabydago/cura.py ${pythonPackages.python.interpreter} $out/curabydago/cura.py
EOF EOF
chmod a+x $out/bin/curabydago chmod a+x $out/bin/curabydago

View file

@ -1,5 +1,6 @@
{ lib { lib
, stdenv , stdenv
, copyDesktopItems
, fetchFromGitHub , fetchFromGitHub
, makeDesktopItem , makeDesktopItem
, makeWrapper , makeWrapper
@ -14,26 +15,16 @@
, zlib , zlib
, maven , maven
}: }:
let
desktopItem = makeDesktopItem {
name = "dbeaver";
exec = "dbeaver";
icon = "dbeaver";
desktopName = "dbeaver";
comment = "SQL Integrated Development Environment";
genericName = "SQL Integrated Development Environment";
categories = "Development;";
};
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dbeaver-ce"; pname = "dbeaver-ce";
version = "21.0.0"; # When updating also update fetchedMavenDeps.sha256 version = "21.0.1"; # When updating also update fetchedMavenDeps.sha256
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dbeaver"; owner = "dbeaver";
repo = "dbeaver"; repo = "dbeaver";
rev = version; rev = version;
sha256 = "sha256-it0EcPD7TXSknjVkGv22Nq1D4J32OEncQDy4w9CIPNk="; sha256 = "sha256-9l8604STqmdoUjD+EJCp4aDk4juKsPCmFnD/WYpajxo=";
}; };
fetchedMavenDeps = stdenv.mkDerivation { fetchedMavenDeps = stdenv.mkDerivation {
@ -62,6 +53,12 @@ stdenv.mkDerivation rec {
outputHash = "sha256-xKlFFQXd2U513KZKQa7ttSFNX2gxVr9hNsvyaoN/rEE="; outputHash = "sha256-xKlFFQXd2U513KZKQa7ttSFNX2gxVr9hNsvyaoN/rEE=";
}; };
nativeBuildInputs = [
copyDesktopItems
makeWrapper
maven
];
buildInputs = [ buildInputs = [
fontconfig fontconfig
freetype freetype
@ -71,12 +68,19 @@ stdenv.mkDerivation rec {
libX11 libX11
libXrender libXrender
libXtst libXtst
makeWrapper
zlib zlib
]; ];
nativeBuildInputs = [ desktopItems = [
maven (makeDesktopItem {
name = "dbeaver";
exec = "dbeaver";
icon = "dbeaver";
desktopName = "dbeaver";
comment = "SQL Integrated Development Environment";
genericName = "SQL Integrated Development Environment";
categories = "Development;";
})
]; ];
buildPhase = '' buildPhase = ''
@ -89,7 +93,7 @@ stdenv.mkDerivation rec {
installPhase = installPhase =
let let
productTargetPath = "product/standalone/target/products/org.jkiss.dbeaver.core.product"; productTargetPath = "product/community/target/products/org.jkiss.dbeaver.core.product";
platformMap = { platformMap = {
aarch64-linux = "aarch64"; aarch64-linux = "aarch64";
@ -129,10 +133,6 @@ stdenv.mkDerivation rec {
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath ([ glib gtk3 libXtst ])} \ --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath ([ glib gtk3 libXtst ])} \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
# Create desktop item.
mkdir -p $out/share/applications
cp ${desktopItem}/share/applications/* $out/share/applications
mkdir -p $out/share/pixmaps mkdir -p $out/share/pixmaps
ln -s $out/dbeaver/icon.xpm $out/share/pixmaps/dbeaver.xpm ln -s $out/dbeaver/icon.xpm $out/share/pixmaps/dbeaver.xpm

View file

@ -1,6 +1,6 @@
{ lib, fetchFromGitHub, pythonPackages, gnome2, keybinder }: { lib, fetchFromGitHub, python2Packages, gnome2, keybinder }:
pythonPackages.buildPythonApplication rec { python2Packages.buildPythonApplication rec {
ver = "0.93"; ver = "0.93";
name = "dockbarx-${ver}"; name = "dockbarx-${ver}";
@ -24,7 +24,7 @@ pythonPackages.buildPythonApplication rec {
substituteInPlace dockx_applets/volume-control.py --replace /usr/share/ $out/share/ substituteInPlace dockx_applets/volume-control.py --replace /usr/share/ $out/share/
''; '';
propagatedBuildInputs = (with pythonPackages; [ pygtk pyxdg dbus-python pillow xlib ]) propagatedBuildInputs = (with python2Packages; [ pygtk pyxdg dbus-python pillow xlib ])
++ (with gnome2; [ gnome_python gnome_python_desktop ]) ++ (with gnome2; [ gnome_python gnome_python_desktop ])
++ [ keybinder ]; ++ [ keybinder ];

View file

@ -1,10 +1,10 @@
{ lib, pythonPackages }: { lib, python3Packages }:
pythonPackages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "dotfiles"; pname = "dotfiles";
version = "0.6.4"; version = "0.6.4";
src = pythonPackages.fetchPypi { src = python3Packages.fetchPypi {
inherit version pname; inherit version pname;
sha256 = "03qis6m9r2qh00sqbgwsm883s4bj1ibwpgk86yh4l235mdw8jywv"; sha256 = "03qis6m9r2qh00sqbgwsm883s4bj1ibwpgk86yh4l235mdw8jywv";
}; };
@ -12,8 +12,8 @@ pythonPackages.buildPythonApplication rec {
# No tests in archive # No tests in archive
doCheck = false; doCheck = false;
checkInputs = with pythonPackages; [ pytest ]; checkInputs = with python3Packages; [ pytest ];
propagatedBuildInputs = with pythonPackages; [ click ]; propagatedBuildInputs = with python3Packages; [ click ];
meta = with lib; { meta = with lib; {
description = "Easily manage your dotfiles"; description = "Easily manage your dotfiles";

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, python, pkg-config, cmake, bluez, libusb1, curl { lib, stdenv, fetchFromGitHub, pkg-config, cmake, bluez, libusb1, curl
, libiconv, gettext, sqlite , libiconv, gettext, sqlite
, dbiSupport ? false, libdbi ? null, libdbiDrivers ? null , dbiSupport ? false, libdbi ? null, libdbiDrivers ? null
, postgresSupport ? false, postgresql ? null , postgresSupport ? false, postgresql ? null
@ -21,7 +21,9 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkg-config cmake ]; nativeBuildInputs = [ pkg-config cmake ];
buildInputs = [ python bluez libusb1 curl gettext sqlite libiconv ] strictDeps = true;
buildInputs = [ bluez libusb1 curl gettext sqlite libiconv ]
++ optionals dbiSupport [ libdbi libdbiDrivers ] ++ optionals dbiSupport [ libdbi libdbiDrivers ]
++ optionals postgresSupport [ postgresql ]; ++ optionals postgresSupport [ postgresql ];

View file

@ -2,13 +2,13 @@
mkDerivation rec { mkDerivation rec {
pname = "gpxsee"; pname = "gpxsee";
version = "8.8"; version = "8.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tumic0"; owner = "tumic0";
repo = "GPXSee"; repo = "GPXSee";
rev = version; rev = version;
sha256 = "sha256-eAXMmjPcfnJA5w6w/SRc6T5KHss77t0JijTB6+ctjzo="; sha256 = "sha256-nl9iu8ezgMZ1wy2swDXYRDLlkSz1II+C65UUWNvGBxg=";
}; };
patches = (substituteAll { patches = (substituteAll {

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