Merge branch 'master' into staging-next

This commit is contained in:
Jan Tojnar 2020-04-16 10:09:43 +02:00
commit 3d8e436917
No known key found for this signature in database
GPG Key ID: 7FAB2A15F7A607A4
277 changed files with 8102 additions and 4662 deletions

View File

@ -25,6 +25,12 @@ If applicable, add screenshots to help explain your problem.
**Additional context** **Additional context**
Add any other context about the problem here. Add any other context about the problem here.
**Notify maintainers**
<!--
Please @ people who are in the `meta.maintainers` list of the offending package or module.
If in doubt, check `git blame` for whoever last touched something.
-->
**Metadata** **Metadata**
Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result. Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result.

3
.gitignore vendored
View File

@ -16,3 +16,6 @@ result-*
/pkgs/development/libraries/qt-5/*/tmp/ /pkgs/development/libraries/qt-5/*/tmp/
/pkgs/desktops/kde-5/*/tmp/ /pkgs/desktops/kde-5/*/tmp/
/pkgs/development/mobile/androidenv/xml/* /pkgs/development/mobile/androidenv/xml/*
# generated by pkgs/common-updater/update-script.nix
update-git-commits.txt

View File

@ -1295,7 +1295,7 @@ installTargets = "install-bin install-doc";</programlisting>
</term> </term>
<listitem> <listitem>
<para> <para>
List of directories to search for libraries and executables from which only debugging-related symbols should be stripped. It defaults to <literal>lib bin sbin</literal>. List of directories to search for libraries and executables from which only debugging-related symbols should be stripped. It defaults to <literal>lib lib32 lib64 libexec bin sbin</literal>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -191,7 +191,14 @@ rec {
Example: Example:
(showOption ["foo" "bar" "baz"]) == "foo.bar.baz" (showOption ["foo" "bar" "baz"]) == "foo.bar.baz"
(showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux" (showOption ["foo" "bar.baz" "tux"]) == "foo.bar.baz.tux"
Placeholders will not be quoted as they are not actual values:
(showOption ["foo" "*" "bar"]) == "foo.*.bar"
(showOption ["foo" "<name>" "bar"]) == "foo.<name>.bar"
Unlike attributes, options can also start with numbers:
(showOption ["windowManager" "2bwm" "enable"]) == "windowManager.2bwm.enable"
*/ */
showOption = parts: let showOption = parts: let
escapeOptionPart = part: escapeOptionPart = part:

View File

@ -315,6 +315,21 @@ rec {
*/ */
escapeNixString = s: escape ["$"] (builtins.toJSON s); escapeNixString = s: escape ["$"] (builtins.toJSON s);
/* Quotes a string if it can't be used as an identifier directly.
Type: string -> string
Example:
escapeNixIdentifier "hello"
=> "hello"
escapeNixIdentifier "0abc"
=> "\"0abc\""
*/
escapeNixIdentifier = s:
# Regex from https://github.com/NixOS/nix/blob/d048577909e383439c2549e849c5c2f2016c997e/src/libexpr/lexer.l#L91
if builtins.match "[a-zA-Z_][a-zA-Z0-9_'-]*" s != null
then s else escapeNixString s;
# Obsolete - use replaceStrings instead. # Obsolete - use replaceStrings instead.
replaceChars = builtins.replaceStrings or ( replaceChars = builtins.replaceStrings or (
del: new: s: del: new: s:

75
lib/tests/maintainers.nix Normal file
View File

@ -0,0 +1,75 @@
# to run these tests:
# nix-build nixpkgs/lib/tests/maintainers.nix
# If nothing is output, all tests passed
{ pkgs ? import ../.. {} }:
let
inherit (pkgs) lib;
inherit (lib) types;
maintainerModule = { config, ... }: {
options = {
name = lib.mkOption {
type = types.str;
};
email = lib.mkOption {
type = types.str;
};
github = lib.mkOption {
type = types.nullOr types.str;
default = null;
};
githubId = lib.mkOption {
type = types.nullOr types.ints.unsigned;
default = null;
};
keys = lib.mkOption {
type = types.listOf (types.submodule {
options.longkeyid = lib.mkOption { type = types.str; };
options.fingerprint = lib.mkOption { type = types.str; };
});
default = [];
};
};
};
checkMaintainer = handle: uncheckedAttrs:
let
prefix = [ "lib" "maintainers" handle ];
checkedAttrs = (lib.modules.evalModules {
inherit prefix;
modules = [
maintainerModule
{
_file = toString ../../maintainers/maintainer-list.nix;
config = uncheckedAttrs;
}
];
}).config;
checkGithubId = lib.optional (checkedAttrs.github != null && checkedAttrs.githubId == null) ''
echo ${lib.escapeShellArg (lib.showOption prefix)}': If `github` is specified, `githubId` must be too.'
# Calling this too often would hit non-authenticated API limits, but this
# shouldn't happen since such errors will get fixed rather quickly
info=$(curl -sS https://api.github.com/users/${checkedAttrs.github})
id=$(jq -r '.id' <<< "$info")
echo "The GitHub ID for GitHub user ${checkedAttrs.github} is $id:"
echo -e " githubId = $id;\n"
'';
in lib.deepSeq checkedAttrs checkGithubId;
missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers);
success = pkgs.runCommandNoCC "checked-maintainers-success" {} ">$out";
failure = pkgs.runCommandNoCC "checked-maintainers-failure" {
nativeBuildInputs = [ pkgs.curl pkgs.jq ];
outputHash = "sha256:${lib.fakeSha256}";
outputHAlgo = "sha256";
outputHashMode = "flat";
SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
} ''
${lib.concatStringsSep "\n" missingGithubIds}
exit 1
'';
in if missingGithubIds == [] then success else failure

View File

@ -3,7 +3,10 @@
# This script is used to test that the module system is working as expected. # This script is used to test that the module system is working as expected.
# By default it test the version of nixpkgs which is defined in the NIX_PATH. # By default it test the version of nixpkgs which is defined in the NIX_PATH.
cd ./modules # https://stackoverflow.com/a/246128/6605742
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
cd "$DIR"/modules
pass=0 pass=0
fail=0 fail=0

View File

@ -1,7 +1,7 @@
{ pkgs ? import ((import ../.).cleanSource ../..) {} }: { pkgs ? import ../.. {} }:
pkgs.runCommandNoCC "nixpkgs-lib-tests" { pkgs.runCommandNoCC "nixpkgs-lib-tests" {
buildInputs = [ pkgs.nix (import ./check-eval.nix) ]; buildInputs = [ pkgs.nix (import ./check-eval.nix) (import ./maintainers.nix { inherit pkgs; }) ];
NIX_PATH = "nixpkgs=${toString pkgs.path}"; NIX_PATH = "nixpkgs=${toString pkgs.path}";
} '' } ''
datadir="${pkgs.nix}/share" datadir="${pkgs.nix}/share"
@ -17,8 +17,8 @@ pkgs.runCommandNoCC "nixpkgs-lib-tests" {
cacheDir=$TEST_ROOT/binary-cache cacheDir=$TEST_ROOT/binary-cache
nix-store --init nix-store --init
cd ${pkgs.path}/lib/tests cp -r ${../.} lib
bash ./modules.sh bash lib/tests/modules.sh
touch $out touch $out
'' ''

View File

@ -100,6 +100,7 @@
abbradar = { abbradar = {
email = "ab@fmap.me"; email = "ab@fmap.me";
github = "abbradar"; github = "abbradar";
githubId = 1174810;
name = "Nikolay Amiantov"; name = "Nikolay Amiantov";
}; };
abhi18av = { abhi18av = {
@ -135,6 +136,7 @@
acairncross = { acairncross = {
email = "acairncross@gmail.com"; email = "acairncross@gmail.com";
github = "acairncross"; github = "acairncross";
githubId = 1517066;
name = "Aiken Cairncross"; name = "Aiken Cairncross";
}; };
acowley = { acowley = {
@ -146,6 +148,7 @@
adamt = { adamt = {
email = "mail@adamtulinius.dk"; email = "mail@adamtulinius.dk";
github = "adamtulinius"; github = "adamtulinius";
githubId = 749381;
name = "Adam Tulinius"; name = "Adam Tulinius";
}; };
adelbertc = { adelbertc = {
@ -229,6 +232,7 @@
aforemny = { aforemny = {
email = "alexanderforemny@googlemail.com"; email = "alexanderforemny@googlemail.com";
github = "aforemny"; github = "aforemny";
githubId = 610962;
name = "Alexander Foremny"; name = "Alexander Foremny";
}; };
afranchuk = { afranchuk = {
@ -276,6 +280,7 @@
ak = { ak = {
email = "ak@formalprivacy.com"; email = "ak@formalprivacy.com";
github = "alexanderkjeldaas"; github = "alexanderkjeldaas";
githubId = 339369;
name = "Alexander Kjeldaas"; name = "Alexander Kjeldaas";
}; };
akavel = { akavel = {
@ -383,6 +388,7 @@
alunduil = { alunduil = {
email = "alunduil@gmail.com"; email = "alunduil@gmail.com";
github = "alunduil"; github = "alunduil";
githubId = 169249;
name = "Alex Brandt"; name = "Alex Brandt";
}; };
alva = { alva = {
@ -404,6 +410,7 @@
ambrop72 = { ambrop72 = {
email = "ambrop7@gmail.com"; email = "ambrop7@gmail.com";
github = "ambrop72"; github = "ambrop72";
githubId = 2626481;
name = "Ambroz Bizjak"; name = "Ambroz Bizjak";
}; };
amiddelk = { amiddelk = {
@ -473,11 +480,13 @@
andreabedini = { andreabedini = {
email = "andrea@kzn.io"; email = "andrea@kzn.io";
github = "andreabedini"; github = "andreabedini";
githubId = 69135;
name = "Andrea Bedini"; name = "Andrea Bedini";
}; };
andres = { andres = {
email = "ksnixos@andres-loeh.de"; email = "ksnixos@andres-loeh.de";
github = "kosmikus"; github = "kosmikus";
githubId = 293191;
name = "Andres Loeh"; name = "Andres Loeh";
}; };
andrestylianos = { andrestylianos = {
@ -507,6 +516,7 @@
andsild = { andsild = {
email = "andsild@gmail.com"; email = "andsild@gmail.com";
github = "andsild"; github = "andsild";
githubId = 3808928;
name = "Anders Sildnes"; name = "Anders Sildnes";
}; };
aneeshusa = { aneeshusa = {
@ -560,6 +570,7 @@
antono = { antono = {
email = "self@antono.info"; email = "self@antono.info";
github = "antono"; github = "antono";
githubId = 7622;
name = "Antono Vasiljev"; name = "Antono Vasiljev";
}; };
antonxy = { antonxy = {
@ -742,7 +753,8 @@
}; };
auntie = { auntie = {
email = "auntieNeo@gmail.com"; email = "auntieNeo@gmail.com";
github = "auntie"; github = "auntieNeo";
githubId = 574938;
name = "Jonathan Glines"; name = "Jonathan Glines";
}; };
avaq = { avaq = {
@ -760,6 +772,7 @@
averelld = { averelld = {
email = "averell+nixos@rxd4.com"; email = "averell+nixos@rxd4.com";
github = "averelld"; github = "averelld";
githubId = 687218;
name = "averelld"; name = "averelld";
}; };
avitex = { avitex = {
@ -815,11 +828,13 @@
backuitist = { backuitist = {
email = "biethb@gmail.com"; email = "biethb@gmail.com";
github = "backuitist"; github = "backuitist";
githubId = 1017537;
name = "Bruno Bieth"; name = "Bruno Bieth";
}; };
badi = { badi = {
email = "abdulwahidc@gmail.com"; email = "abdulwahidc@gmail.com";
github = "badi"; github = "badi";
githubId = 35324;
name = "Badi' Abdul-Wahid"; name = "Badi' Abdul-Wahid";
}; };
balajisivaraman = { balajisivaraman = {
@ -943,6 +958,7 @@
berdario = { berdario = {
email = "berdario@gmail.com"; email = "berdario@gmail.com";
github = "berdario"; github = "berdario";
githubId = 752835;
name = "Dario Bertini"; name = "Dario Bertini";
}; };
bergey = { bergey = {
@ -1024,6 +1040,7 @@
bluescreen303 = { bluescreen303 = {
email = "mathijs@bluescreen303.nl"; email = "mathijs@bluescreen303.nl";
github = "bluescreen303"; github = "bluescreen303";
githubId = 16330;
name = "Mathijs Kwik"; name = "Mathijs Kwik";
}; };
bobakker = { bobakker = {
@ -1053,6 +1070,7 @@
boothead = { boothead = {
email = "ben@perurbis.com"; email = "ben@perurbis.com";
github = "boothead"; github = "boothead";
githubId = 87764;
name = "Ben Ford"; name = "Ben Ford";
}; };
borisbabic = { borisbabic = {
@ -1473,6 +1491,7 @@
coconnor = { coconnor = {
email = "coreyoconnor@gmail.com"; email = "coreyoconnor@gmail.com";
github = "coreyoconnor"; github = "coreyoconnor";
githubId = 34317;
name = "Corey O'Connor"; name = "Corey O'Connor";
}; };
codsl = { codsl = {
@ -1566,6 +1585,7 @@
cransom = { cransom = {
email = "cransom@hubns.net"; email = "cransom@hubns.net";
github = "cransom"; github = "cransom";
githubId = 1957293;
name = "Casey Ransom"; name = "Casey Ransom";
}; };
CrazedProgrammer = { CrazedProgrammer = {
@ -1725,6 +1745,7 @@
davidrusu = { davidrusu = {
email = "davidrusu.me@gmail.com"; email = "davidrusu.me@gmail.com";
github = "davidrusu"; github = "davidrusu";
githubId = 1832378;
name = "David Rusu"; name = "David Rusu";
}; };
davidtwco = { davidtwco = {
@ -1818,6 +1839,7 @@
DerGuteMoritz = { DerGuteMoritz = {
email = "moritz@twoticketsplease.de"; email = "moritz@twoticketsplease.de";
github = "DerGuteMoritz"; github = "DerGuteMoritz";
githubId = 19733;
name = "Moritz Heidkamp"; name = "Moritz Heidkamp";
}; };
dermetfan = { dermetfan = {
@ -1835,6 +1857,7 @@
desiderius = { desiderius = {
email = "didier@devroye.name"; email = "didier@devroye.name";
github = "desiderius"; github = "desiderius";
githubId = 1311761;
name = "Didier J. Devroye"; name = "Didier J. Devroye";
}; };
devhell = { devhell = {
@ -1864,6 +1887,7 @@
dgonyeo = { dgonyeo = {
email = "derek@gonyeo.com"; email = "derek@gonyeo.com";
github = "dgonyeo"; github = "dgonyeo";
githubId = 2439413;
name = "Derek Gonyeo"; name = "Derek Gonyeo";
}; };
dhkl = { dhkl = {
@ -1983,6 +2007,7 @@
doublec = { doublec = {
email = "chris.double@double.co.nz"; email = "chris.double@double.co.nz";
github = "doublec"; github = "doublec";
githubId = 16599;
name = "Chris Double"; name = "Chris Double";
}; };
dpaetzel = { dpaetzel = {
@ -2048,6 +2073,7 @@
dxf = { dxf = {
email = "dingxiangfei2009@gmail.com"; email = "dingxiangfei2009@gmail.com";
github = "dingxiangfei2009"; github = "dingxiangfei2009";
githubId = 6884440;
name = "Ding Xiang Fei"; name = "Ding Xiang Fei";
}; };
dysinger = { dysinger = {
@ -2113,6 +2139,7 @@
edanaher = { edanaher = {
email = "nixos@edanaher.net"; email = "nixos@edanaher.net";
github = "edanaher"; github = "edanaher";
githubId = 984691;
name = "Evan Danaher"; name = "Evan Danaher";
}; };
edef = { edef = {
@ -2262,6 +2289,7 @@
emmanuelrosa = { emmanuelrosa = {
email = "emmanuel_rosa@aol.com"; email = "emmanuel_rosa@aol.com";
github = "emmanuelrosa"; github = "emmanuelrosa";
githubId = 13485450;
name = "Emmanuel Rosa"; name = "Emmanuel Rosa";
}; };
endgame = { endgame = {
@ -2279,7 +2307,7 @@
Enteee = { Enteee = {
email = "nix@duckpond.ch"; email = "nix@duckpond.ch";
github = "Enteee"; github = "Enteee";
githubid = 5493775; githubId = 5493775;
name = "Ente"; name = "Ente";
}; };
enzime = { enzime = {
@ -2337,6 +2365,7 @@
ericsagnes = { ericsagnes = {
email = "eric.sagnes@gmail.com"; email = "eric.sagnes@gmail.com";
github = "ericsagnes"; github = "ericsagnes";
githubId = 367880;
name = "Eric Sagnes"; name = "Eric Sagnes";
}; };
ericson2314 = { ericson2314 = {
@ -2376,6 +2405,7 @@
ertes = { ertes = {
email = "esz@posteo.de"; email = "esz@posteo.de";
github = "ertes"; github = "ertes";
githubId = 1855930;
name = "Ertugrul Söylemez"; name = "Ertugrul Söylemez";
}; };
esclear = { esclear = {
@ -2485,6 +2515,7 @@
fare = { fare = {
email = "fahree@gmail.com"; email = "fahree@gmail.com";
github = "fare"; github = "fare";
githubId = 8073;
name = "Francois-Rene Rideau"; name = "Francois-Rene Rideau";
}; };
farlion = { farlion = {
@ -2496,6 +2527,7 @@
fdns = { fdns = {
email = "fdns02@gmail.com"; email = "fdns02@gmail.com";
github = "fdns"; github = "fdns";
githubId = 541748;
name = "Felipe Espinoza"; name = "Felipe Espinoza";
}; };
ffinkdevs = { ffinkdevs = {
@ -2622,6 +2654,7 @@
fragamus = { fragamus = {
email = "innovative.engineer@gmail.com"; email = "innovative.engineer@gmail.com";
github = "fragamus"; github = "fragamus";
githubId = 119691;
name = "Michael Gough"; name = "Michael Gough";
}; };
@ -2640,11 +2673,13 @@
freezeboy = { freezeboy = {
email = "freezeboy@users.noreply.github.com"; email = "freezeboy@users.noreply.github.com";
github = "freezeboy"; github = "freezeboy";
githubId = 13279982;
name = "freezeboy"; name = "freezeboy";
}; };
Fresheyeball = { Fresheyeball = {
email = "fresheyeball@gmail.com"; email = "fresheyeball@gmail.com";
github = "fresheyeball"; github = "Fresheyeball";
githubId = 609279;
name = "Isaac Shapira"; name = "Isaac Shapira";
}; };
fridh = { fridh = {
@ -2748,6 +2783,7 @@
garbas = { garbas = {
email = "rok@garbas.si"; email = "rok@garbas.si";
github = "garbas"; github = "garbas";
githubId = 20208;
name = "Rok Garbas"; name = "Rok Garbas";
}; };
garrison = { garrison = {
@ -2759,6 +2795,7 @@
gavin = { gavin = {
email = "gavin.rogers@holo.host"; email = "gavin.rogers@holo.host";
github = "gavinrogers"; github = "gavinrogers";
githubId = 2430469;
name = "Gavin Rogers"; name = "Gavin Rogers";
}; };
gazally = { gazally = {
@ -2906,6 +2943,7 @@
gridaphobe = { gridaphobe = {
email = "eric@seidel.io"; email = "eric@seidel.io";
github = "gridaphobe"; github = "gridaphobe";
githubId = 201997;
name = "Eric Seidel"; name = "Eric Seidel";
}; };
guibert = { guibert = {
@ -3035,6 +3073,7 @@
name = "Guanpeng Xu"; name = "Guanpeng Xu";
}; };
hexa = { hexa = {
email = "hexa@darmstadt.ccc.de";
github = "mweinelt"; github = "mweinelt";
githubId = 131599; githubId = 131599;
name = "Martin Weinelt"; name = "Martin Weinelt";
@ -3053,6 +3092,7 @@
email = "me@hkjn.me"; email = "me@hkjn.me";
name = "Henrik Jonsson"; name = "Henrik Jonsson";
github = "hkjn"; github = "hkjn";
githubId = 287215;
keys = [{ keys = [{
longkeyid = "rsa4096/0x03EFBF839A5FDC15"; longkeyid = "rsa4096/0x03EFBF839A5FDC15";
fingerprint = "D618 7A03 A40A 3D56 62F5 4B46 03EF BF83 9A5F DC15"; fingerprint = "D618 7A03 A40A 3D56 62F5 4B46 03EF BF83 9A5F DC15";
@ -3225,6 +3265,7 @@
name = "Michele Catalano"; name = "Michele Catalano";
}; };
isgy = { isgy = {
name = "isgy";
email = "isgy@teiyg.com"; email = "isgy@teiyg.com";
github = "isgy"; github = "isgy";
githubId = 13622947; githubId = 13622947;
@ -3263,7 +3304,7 @@
email = "ivar.scholten@protonmail.com"; email = "ivar.scholten@protonmail.com";
github = "IvarWithoutBones"; github = "IvarWithoutBones";
githubId = 41924494; githubId = 41924494;
Name = "Ivar"; name = "Ivar";
}; };
ivegotasthma = { ivegotasthma = {
email = "ivegotasthma@protonmail.com"; email = "ivegotasthma@protonmail.com";
@ -3302,6 +3343,7 @@
jasoncarr = { jasoncarr = {
email = "jcarr250@gmail.com"; email = "jcarr250@gmail.com";
github = "jasoncarr0"; github = "jasoncarr0";
githubId = 6874204;
name = "Jason Carr"; name = "Jason Carr";
}; };
j-keck = { j-keck = {
@ -3313,6 +3355,7 @@
j03 = { j03 = {
email = "github@johannesloetzsch.de"; email = "github@johannesloetzsch.de";
github = "johannesloetzsch"; github = "johannesloetzsch";
githubId = 175537;
name = "Johannes Lötzsch"; name = "Johannes Lötzsch";
}; };
jagajaga = { jagajaga = {
@ -3439,7 +3482,8 @@
}; };
jeschli = { jeschli = {
email = "jeschli@gmail.com"; email = "jeschli@gmail.com";
github = "jeschli"; github = "Jeschli";
githubId = 10786794;
name = "Markus Hihn"; name = "Markus Hihn";
}; };
jethro = { jethro = {
@ -3451,6 +3495,7 @@
jfb = { jfb = {
email = "james@yamtime.com"; email = "james@yamtime.com";
github = "tftio"; github = "tftio";
githubId = 143075;
name = "James Felix Black"; name = "James Felix Black";
}; };
jflanglois = { jflanglois = {
@ -3510,6 +3555,7 @@
jitwit = { jitwit = {
email = "jrn@bluefarm.ca"; email = "jrn@bluefarm.ca";
github = "jitwit"; github = "jitwit";
githubId = 51518420;
name = "jitwit"; name = "jitwit";
}; };
jlesquembre = { jlesquembre = {
@ -3551,6 +3597,7 @@
joamaki = { joamaki = {
email = "joamaki@gmail.com"; email = "joamaki@gmail.com";
github = "joamaki"; github = "joamaki";
githubId = 1102396;
name = "Jussi Maki"; name = "Jussi Maki";
}; };
joelburget = { joelburget = {
@ -3573,6 +3620,7 @@
email = "admin@cryto.net"; email = "admin@cryto.net";
name = "Sven Slootweg"; name = "Sven Slootweg";
github = "joepie91"; github = "joepie91";
githubId = 1663259;
}; };
joesalisbury = { joesalisbury = {
email = "salisbury.joseph@gmail.com"; email = "salisbury.joseph@gmail.com";
@ -3646,6 +3694,7 @@
jonathanmarler = { jonathanmarler = {
email = "johnnymarler@gmail.com"; email = "johnnymarler@gmail.com";
github = "marler8997"; github = "marler8997";
githubId = 304904;
name = "Jonathan Marler"; name = "Jonathan Marler";
}; };
jonathanreeve = { jonathanreeve = {
@ -3751,6 +3800,7 @@
juliendehos = { juliendehos = {
email = "dehos@lisic.univ-littoral.fr"; email = "dehos@lisic.univ-littoral.fr";
github = "juliendehos"; github = "juliendehos";
githubId = 11947756;
name = "Julien Dehos"; name = "Julien Dehos";
}; };
jumper149 = { jumper149 = {
@ -3784,6 +3834,7 @@
jyp = { jyp = {
email = "jeanphilippe.bernardy@gmail.com"; email = "jeanphilippe.bernardy@gmail.com";
github = "jyp"; github = "jyp";
githubId = 27747;
name = "Jean-Philippe Bernardy"; name = "Jean-Philippe Bernardy";
}; };
jzellner = { jzellner = {
@ -3797,7 +3848,7 @@
email = "KAction@disroot.org"; email = "KAction@disroot.org";
github = "kaction"; github = "kaction";
githubId = 44864956; githubId = 44864956;
key = [{ keys = [{
longkeyid = "ed25519/0x749FD4DFA2E94236"; longkeyid = "ed25519/0x749FD4DFA2E94236";
fingerprint = "3F87 0A7C A7B4 3731 2F13 6083 749F D4DF A2E9 4236"; fingerprint = "3F87 0A7C A7B4 3731 2F13 6083 749F D4DF A2E9 4236";
}]; }];
@ -3833,6 +3884,7 @@
kampfschlaefer = { kampfschlaefer = {
email = "arnold@arnoldarts.de"; email = "arnold@arnoldarts.de";
github = "kampfschlaefer"; github = "kampfschlaefer";
githubId = 3831860;
name = "Arnold Krille"; name = "Arnold Krille";
}; };
karantan = { karantan = {
@ -3990,6 +4042,7 @@
email = "adrian@kummerlaender.eu"; email = "adrian@kummerlaender.eu";
name = "Adrian Kummerlaender"; name = "Adrian Kummerlaender";
github = "KnairdA"; github = "KnairdA";
githubId = 498373;
}; };
knedlsepp = { knedlsepp = {
email = "josef.kemetmueller@gmail.com"; email = "josef.kemetmueller@gmail.com";
@ -4012,6 +4065,7 @@
kolbycrouch = { kolbycrouch = {
email = "kjc.devel@gmail.com"; email = "kjc.devel@gmail.com";
github = "kolbycrouch"; github = "kolbycrouch";
githubId = 6346418;
name = "Kolby Crouch"; name = "Kolby Crouch";
}; };
konimex = { konimex = {
@ -4023,6 +4077,7 @@
koral = { koral = {
email = "koral@mailoo.org"; email = "koral@mailoo.org";
github = "k0ral"; github = "k0ral";
githubId = 524268;
name = "Koral"; name = "Koral";
}; };
kovirobi = { kovirobi = {
@ -4064,7 +4119,7 @@
kristian-brucaj = { kristian-brucaj = {
email = "kbrucaj@gmail.com"; email = "kbrucaj@gmail.com";
github = "kristian-brucaj"; github = "kristian-brucaj";
githubID = "8893110"; githubId = 8893110;
name = "Kristian Brucaj"; name = "Kristian Brucaj";
}; };
kristoff3r = { kristoff3r = {
@ -4124,6 +4179,7 @@
laikq = { laikq = {
email = "gwen@quasebarth.de"; email = "gwen@quasebarth.de";
github = "laikq"; github = "laikq";
githubId = 55911173;
name = "Gwendolyn Quasebarth"; name = "Gwendolyn Quasebarth";
}; };
lasandell = { lasandell = {
@ -4141,6 +4197,7 @@
lassulus = { lassulus = {
email = "lassulus@gmail.com"; email = "lassulus@gmail.com";
github = "Lassulus"; github = "Lassulus";
githubId = 621759;
name = "Lassulus"; name = "Lassulus";
}; };
lattfein = { lattfein = {
@ -4195,6 +4252,7 @@
lebastr = { lebastr = {
email = "lebastr@gmail.com"; email = "lebastr@gmail.com";
github = "lebastr"; github = "lebastr";
githubId = 887072;
name = "Alexander Lebedev"; name = "Alexander Lebedev";
}; };
ledif = { ledif = {
@ -4230,6 +4288,7 @@
leonardoce = { leonardoce = {
email = "leonardo.cecchi@gmail.com"; email = "leonardo.cecchi@gmail.com";
github = "leonardoce"; github = "leonardoce";
githubId = 1572058;
name = "Leonardo Cecchi"; name = "Leonardo Cecchi";
}; };
leshainc = { leshainc = {
@ -4393,6 +4452,7 @@
lovek323 = { lovek323 = {
email = "jason@oconal.id.au"; email = "jason@oconal.id.au";
github = "lovek323"; github = "lovek323";
githubId = 265084;
name = "Jason O'Conal"; name = "Jason O'Conal";
}; };
lovesegfault = { lovesegfault = {
@ -4432,6 +4492,7 @@
ltavard = { ltavard = {
email = "laure.tavard@univ-grenoble-alpes.fr"; email = "laure.tavard@univ-grenoble-alpes.fr";
github = "ltavard"; github = "ltavard";
githubId = 8555953;
name = "Laure Tavard"; name = "Laure Tavard";
}; };
luc65r = { luc65r = {
@ -4495,6 +4556,7 @@
lumi = { lumi = {
email = "lumi@pew.im"; email = "lumi@pew.im";
github = "lumi-me-not"; github = "lumi-me-not";
githubId = 26020062;
name = "lumi"; name = "lumi";
}; };
luz = { luz = {
@ -4678,6 +4740,7 @@
matthewbauer = { matthewbauer = {
email = "mjbauer95@gmail.com"; email = "mjbauer95@gmail.com";
github = "matthewbauer"; github = "matthewbauer";
githubId = 19036;
name = "Matthew Bauer"; name = "Matthew Bauer";
}; };
matthiasbeyer = { matthiasbeyer = {
@ -4695,6 +4758,7 @@
matti-kariluoma = { matti-kariluoma = {
email = "matti@kariluo.ma"; email = "matti@kariluo.ma";
github = "matti-kariluoma"; github = "matti-kariluoma";
githubId = 279868;
name = "Matti Kariluoma"; name = "Matti Kariluoma";
}; };
maurer = { maurer = {
@ -4820,6 +4884,7 @@
melsigl = { melsigl = {
email = "melanie.bianca.sigl@gmail.com"; email = "melanie.bianca.sigl@gmail.com";
github = "melsigl"; github = "melsigl";
githubId = 15093162;
name = "Melanie B. Sigl"; name = "Melanie B. Sigl";
}; };
melkor333 = { melkor333 = {
@ -4888,6 +4953,7 @@
michaelpj = { michaelpj = {
email = "michaelpj@gmail.com"; email = "michaelpj@gmail.com";
github = "michaelpj"; github = "michaelpj";
githubId = 1699466;
name = "Michael Peyton Jones"; name = "Michael Peyton Jones";
}; };
michalrus = { michalrus = {
@ -4899,6 +4965,7 @@
michelk = { michelk = {
email = "michel@kuhlmanns.info"; email = "michel@kuhlmanns.info";
github = "michelk"; github = "michelk";
githubId = 1404919;
name = "Michel Kuhlmann"; name = "Michel Kuhlmann";
}; };
michojel = { michojel = {
@ -4972,6 +5039,7 @@
mirdhyn = { mirdhyn = {
email = "mirdhyn@gmail.com"; email = "mirdhyn@gmail.com";
github = "mirdhyn"; github = "mirdhyn";
githubId = 149558;
name = "Merlin Gaillard"; name = "Merlin Gaillard";
}; };
mirrexagon = { mirrexagon = {
@ -5007,6 +5075,7 @@
mkf = { mkf = {
email = "m@mikf.pl"; email = "m@mikf.pl";
github = "mkf"; github = "mkf";
githubId = 7753506;
name = "Michał Krzysztof Feiler"; name = "Michał Krzysztof Feiler";
keys = [{ keys = [{
longkeyid = "rsa4096/0xE35C2D7C2C6AC724"; longkeyid = "rsa4096/0xE35C2D7C2C6AC724";
@ -5056,6 +5125,7 @@
mmlb = { mmlb = {
email = "manny@peekaboo.mmlb.icu"; email = "manny@peekaboo.mmlb.icu";
github = "mmlb"; github = "mmlb";
githubId = 708570;
name = "Manuel Mendez"; name = "Manuel Mendez";
}; };
mnacamura = { mnacamura = {
@ -5085,6 +5155,7 @@
Mogria = { Mogria = {
email = "m0gr14@gmail.com"; email = "m0gr14@gmail.com";
github = "mogria"; github = "mogria";
githubId = 754512;
name = "Mogria"; name = "Mogria";
}; };
monsieurp = { monsieurp = {
@ -5142,6 +5213,7 @@
MP2E = { MP2E = {
email = "MP2E@archlinux.us"; email = "MP2E@archlinux.us";
github = "MP2E"; github = "MP2E";
githubId = 167708;
name = "Cray Elliott"; name = "Cray Elliott";
}; };
mpcsh = { mpcsh = {
@ -5165,6 +5237,7 @@
mpscholten = { mpscholten = {
email = "marc@mpscholten.de"; email = "marc@mpscholten.de";
github = "mpscholten"; github = "mpscholten";
githubId = 2072185;
name = "Marc Scholten"; name = "Marc Scholten";
}; };
mpsyco = { mpsyco = {
@ -5182,6 +5255,7 @@
mredaelli = { mredaelli = {
email = "massimo@typish.io"; email = "massimo@typish.io";
github = "mredaelli"; github = "mredaelli";
githubId = 3073833;
name = "Massimo Redaelli"; name = "Massimo Redaelli";
}; };
mrkkrp = { mrkkrp = {
@ -5228,6 +5302,12 @@
githubId = 133448; githubId = 133448;
name = "Mikołaj Siedlarek"; name = "Mikołaj Siedlarek";
}; };
msm = {
email = "msm@tailcall.net";
github = "msm-code";
githubId = 7026881;
name = "Jarosław Jedynak";
};
mstarzyk = { mstarzyk = {
email = "mstarzyk@gmail.com"; email = "mstarzyk@gmail.com";
github = "mstarzyk"; github = "mstarzyk";
@ -5249,6 +5329,7 @@
MtP = { MtP = {
email = "marko.nixos@poikonen.de"; email = "marko.nixos@poikonen.de";
github = "MtP76"; github = "MtP76";
githubId = 2176611;
name = "Marko Poikonen"; name = "Marko Poikonen";
}; };
mtreskin = { mtreskin = {
@ -5314,6 +5395,7 @@
nand0p = { nand0p = {
email = "nando@hex7.com"; email = "nando@hex7.com";
github = "nand0p"; github = "nand0p";
githubId = 1916245;
name = "Fernando Jose Pando"; name = "Fernando Jose Pando";
}; };
Nate-Devv = { Nate-Devv = {
@ -5587,6 +5669,7 @@
olynch = { olynch = {
email = "owen@olynch.me"; email = "owen@olynch.me";
github = "olynch"; github = "olynch";
githubId = 4728903;
name = "Owen Lynch"; name = "Owen Lynch";
}; };
omnipotententity = { omnipotententity = {
@ -5610,6 +5693,7 @@
orbitz = { orbitz = {
email = "mmatalka@gmail.com"; email = "mmatalka@gmail.com";
github = "orbitz"; github = "orbitz";
githubId = 75299;
name = "Malcolm Matalka"; name = "Malcolm Matalka";
}; };
orivej = { orivej = {
@ -5636,6 +5720,16 @@
githubId = 108072; githubId = 108072;
name = "Slawomir Gonet"; name = "Slawomir Gonet";
}; };
oxalica = {
email = "oxalicc@pm.me";
github = "oxalica";
githubId = 14816024;
name = "oxalica";
keys = [{
longkeyid = "rsa4096/0xCED392DE0C483D00";
fingerprint = "5CB0 E9E5 D5D5 71F5 7F54 0FEA CED3 92DE 0C48 3D00";
}];
};
oxij = { oxij = {
email = "oxij@oxij.org"; email = "oxij@oxij.org";
github = "oxij"; github = "oxij";
@ -5745,6 +5839,7 @@
pcarrier = { pcarrier = {
email = "pc@rrier.ca"; email = "pc@rrier.ca";
github = "pcarrier"; github = "pcarrier";
githubId = 8641;
name = "Pierre Carrier"; name = "Pierre Carrier";
}; };
periklis = { periklis = {
@ -5890,6 +5985,7 @@
plchldr = { plchldr = {
email = "mail@oddco.de"; email = "mail@oddco.de";
github = "plchldr"; github = "plchldr";
githubId = 11639001;
name = "Jonas Beyer"; name = "Jonas Beyer";
}; };
plcplc = { plcplc = {
@ -5913,6 +6009,7 @@
pmeunier = { pmeunier = {
email = "pierre-etienne.meunier@inria.fr"; email = "pierre-etienne.meunier@inria.fr";
github = "P-E-Meunier"; github = "P-E-Meunier";
githubId = 17021304;
name = "Pierre-Étienne Meunier"; name = "Pierre-Étienne Meunier";
}; };
pmiddend = { pmiddend = {
@ -5942,6 +6039,7 @@
polyrod = { polyrod = {
email = "dc1mdp@gmail.com"; email = "dc1mdp@gmail.com";
github = "polyrod"; github = "polyrod";
githubId = 24878306;
name = "Maurizio Di Pietro"; name = "Maurizio Di Pietro";
}; };
pombeirp = { pombeirp = {
@ -6121,11 +6219,13 @@
raboof = { raboof = {
email = "arnout@bzzt.net"; email = "arnout@bzzt.net";
github = "raboof"; github = "raboof";
githubId = 131856;
name = "Arnout Engelen"; name = "Arnout Engelen";
}; };
rafaelgg = { rafaelgg = {
email = "rafael.garcia.gallego@gmail.com"; email = "rafael.garcia.gallego@gmail.com";
github = "rafaelgg"; github = "rafaelgg";
githubId = 1016742;
name = "Rafael García"; name = "Rafael García";
}; };
raquelgb = { raquelgb = {
@ -6297,6 +6397,7 @@
rickynils = { rickynils = {
email = "rickynils@gmail.com"; email = "rickynils@gmail.com";
github = "rickynils"; github = "rickynils";
githubId = 16779;
name = "Rickard Nilsson"; name = "Rickard Nilsson";
}; };
rika = { rika = {
@ -6380,11 +6481,13 @@
rob = { rob = {
email = "rob.vermaas@gmail.com"; email = "rob.vermaas@gmail.com";
github = "rbvermaa"; github = "rbvermaa";
githubId = 353885;
name = "Rob Vermaas"; name = "Rob Vermaas";
}; };
robberer = { robberer = {
email = "robberer@freakmail.de"; email = "robberer@freakmail.de";
github = "robberer"; github = "robberer";
githubId = 6204883;
name = "Longrin Wischnewski"; name = "Longrin Wischnewski";
}; };
robbinch = { robbinch = {
@ -6504,6 +6607,7 @@
rvolosatovs = { rvolosatovs = {
email = "rvolosatovs@riseup.net"; email = "rvolosatovs@riseup.net";
github = "rvolosatovs"; github = "rvolosatovs";
githubId = 12877905;
name = "Roman Volosatovs"; name = "Roman Volosatovs";
}; };
ryanartecona = { ryanartecona = {
@ -6515,6 +6619,7 @@
ryansydnor = { ryansydnor = {
email = "ryan.t.sydnor@gmail.com"; email = "ryan.t.sydnor@gmail.com";
github = "ryansydnor"; github = "ryansydnor";
githubId = 1832096;
name = "Ryan Sydnor"; name = "Ryan Sydnor";
}; };
ryantm = { ryantm = {
@ -6606,6 +6711,7 @@
sander = { sander = {
email = "s.vanderburg@tudelft.nl"; email = "s.vanderburg@tudelft.nl";
github = "svanderburg"; github = "svanderburg";
githubId = 1153271;
name = "Sander van der Burg"; name = "Sander van der Burg";
}; };
sargon = { sargon = {
@ -6641,6 +6747,7 @@
scalavision = { scalavision = {
email = "scalavision@gmail.com"; email = "scalavision@gmail.com";
github = "scalavision"; github = "scalavision";
githubId = 3958212;
name = "Tom Sorlie"; name = "Tom Sorlie";
}; };
schmitthenner = { schmitthenner = {
@ -6650,8 +6757,10 @@
name = "Fabian Schmitthenner"; name = "Fabian Schmitthenner";
}; };
schmittlauch = { schmittlauch = {
name = "Trolli Schmittlauch";
email = "t.schmittlauch+nixos@orlives.de"; email = "t.schmittlauch+nixos@orlives.de";
github = "schmittlauch"; github = "schmittlauch";
githubId = 1479555;
}; };
schneefux = { schneefux = {
email = "schneefux+nixos_pkg@schneefux.xyz"; email = "schneefux+nixos_pkg@schneefux.xyz";
@ -6690,6 +6799,7 @@
scubed2 = { scubed2 = {
email = "scubed2@gmail.com"; email = "scubed2@gmail.com";
github = "scubed2"; github = "scubed2";
githubId = 7401858;
name = "Sterling Stein"; name = "Sterling Stein";
}; };
sdier = { sdier = {
@ -6749,7 +6859,7 @@
servalcatty = { servalcatty = {
email = "servalcat@pm.me"; email = "servalcat@pm.me";
github = "servalcatty"; github = "servalcatty";
githubid = 51969817; githubId = 51969817;
name = "Serval"; name = "Serval";
keys = [{ keys = [{
longkeyid = "rsa4096/0x4A2AAAA382F8294C"; longkeyid = "rsa4096/0x4A2AAAA382F8294C";
@ -6795,6 +6905,7 @@
shazow = { shazow = {
email = "andrey.petrov@shazow.net"; email = "andrey.petrov@shazow.net";
github = "shazow"; github = "shazow";
githubId = 6292;
name = "Andrey Petrov"; name = "Andrey Petrov";
}; };
sheenobu = { sheenobu = {
@ -6818,16 +6929,19 @@
shlevy = { shlevy = {
email = "shea@shealevy.com"; email = "shea@shealevy.com";
github = "shlevy"; github = "shlevy";
githubId = 487050;
name = "Shea Levy"; name = "Shea Levy";
}; };
shmish111 = { shmish111 = {
email = "shmish111@gmail.com"; email = "shmish111@gmail.com";
github = "shmish111"; github = "shmish111";
githubId = 934267;
name = "David Smith"; name = "David Smith";
}; };
shnarazk = { shnarazk = {
email = "shujinarazaki@protonmail.com"; email = "shujinarazaki@protonmail.com";
github = "shnarazk"; github = "shnarazk";
githubId = 997855;
name = "Narazaki Shuji"; name = "Narazaki Shuji";
}; };
shou = { shou = {
@ -6915,6 +7029,7 @@
sjmackenzie = { sjmackenzie = {
email = "setori88@gmail.com"; email = "setori88@gmail.com";
github = "sjmackenzie"; github = "sjmackenzie";
githubId = 158321;
name = "Stewart Mackenzie"; name = "Stewart Mackenzie";
}; };
sjourdois = { sjourdois = {
@ -7048,6 +7163,7 @@
sprock = { sprock = {
email = "rmason@mun.ca"; email = "rmason@mun.ca";
github = "sprock"; github = "sprock";
githubId = 6391601;
name = "Roger Mason"; name = "Roger Mason";
}; };
spwhitt = { spwhitt = {
@ -7059,6 +7175,7 @@
srghma = { srghma = {
email = "srghma@gmail.com"; email = "srghma@gmail.com";
github = "srghma"; github = "srghma";
githubId = 7573215;
name = "Sergei Khoma"; name = "Sergei Khoma";
}; };
srgom = { srgom = {
@ -7276,6 +7393,7 @@
taha = { taha = {
email = "xrcrod@gmail.com"; email = "xrcrod@gmail.com";
github = "tgharib"; github = "tgharib";
githubId = 6457015;
name = "Taha Gharib"; name = "Taha Gharib";
}; };
tailhook = { tailhook = {
@ -7359,6 +7477,7 @@
tckmn = { tckmn = {
email = "andy@tck.mn"; email = "andy@tck.mn";
github = "tckmn"; github = "tckmn";
githubId = 2389333;
name = "Andy Tockman"; name = "Andy Tockman";
}; };
teh = { teh = {
@ -7388,11 +7507,13 @@
tesq0 = { tesq0 = {
email = "mikolaj.galkowski@gmail.com"; email = "mikolaj.galkowski@gmail.com";
github = "tesq0"; github = "tesq0";
githubId = 26417242;
name = "Mikolaj Galkowski"; name = "Mikolaj Galkowski";
}; };
teto = { teto = {
email = "mcoudron@hotmail.com"; email = "mcoudron@hotmail.com";
github = "teto"; github = "teto";
githubId = 886074;
name = "Matthieu Coudron"; name = "Matthieu Coudron";
}; };
tex = { tex = {
@ -7434,6 +7555,7 @@
the-kenny = { the-kenny = {
email = "moritz@tarn-vedra.de"; email = "moritz@tarn-vedra.de";
github = "the-kenny"; github = "the-kenny";
githubId = 31167;
name = "Moritz Ulrich"; name = "Moritz Ulrich";
}; };
thedavidmeister = { thedavidmeister = {
@ -7521,11 +7643,13 @@
timbertson = { timbertson = {
email = "tim@gfxmonk.net"; email = "tim@gfxmonk.net";
github = "timbertson"; github = "timbertson";
githubId = 14172;
name = "Tim Cuthbertson"; name = "Tim Cuthbertson";
}; };
timma = { timma = {
email = "kunduru.it.iitb@gmail.com"; email = "kunduru.it.iitb@gmail.com";
github = "ktrsoft"; github = "ktrsoft";
githubId = 12712927;
name = "Timma"; name = "Timma";
}; };
timokau = { timokau = {
@ -7577,6 +7701,7 @@
tnias = { tnias = {
email = "phil@grmr.de"; email = "phil@grmr.de";
github = "tnias"; github = "tnias";
githubId = 9853194;
name = "Philipp Bartsch"; name = "Philipp Bartsch";
}; };
tobim = { tobim = {
@ -7672,6 +7797,7 @@
tscholak = { tscholak = {
email = "torsten.scholak@googlemail.com"; email = "torsten.scholak@googlemail.com";
github = "tscholak"; github = "tscholak";
githubId = 1568873;
name = "Torsten Scholak"; name = "Torsten Scholak";
}; };
tstrobel = { tstrobel = {
@ -7693,6 +7819,7 @@
tvestelind = { tvestelind = {
email = "tomas.vestelind@fripost.org"; email = "tomas.vestelind@fripost.org";
github = "tvestelind"; github = "tvestelind";
githubId = 699403;
name = "Tomas Vestelind"; name = "Tomas Vestelind";
}; };
tvorog = { tvorog = {
@ -7704,11 +7831,13 @@
tweber = { tweber = {
email = "tw+nixpkgs@360vier.de"; email = "tw+nixpkgs@360vier.de";
github = "thorstenweber83"; github = "thorstenweber83";
githubId = 9413924;
name = "Thorsten Weber"; name = "Thorsten Weber";
}; };
twey = { twey = {
email = "twey@twey.co.uk"; email = "twey@twey.co.uk";
github = "twey"; github = "Twey";
githubId = 101639;
name = "James Twey Kay"; name = "James Twey Kay";
}; };
twhitehead = { twhitehead = {
@ -7772,6 +7901,7 @@
uwap = { uwap = {
email = "me@uwap.name"; email = "me@uwap.name";
github = "uwap"; github = "uwap";
githubId = 2212422;
name = "uwap"; name = "uwap";
}; };
va1entin = { va1entin = {
@ -7789,12 +7919,13 @@
valebes = { valebes = {
email = "valebes@gmail.com"; email = "valebes@gmail.com";
github = "valebes"; github = "valebes";
githubid = 10956211; githubId = 10956211;
name = "Valerio Besozzi"; name = "Valerio Besozzi";
}; };
valeriangalliat = { valeriangalliat = {
email = "val@codejam.info"; email = "val@codejam.info";
github = "valeriangalliat"; github = "valeriangalliat";
githubId = 3929133;
name = "Valérian Galliat"; name = "Valérian Galliat";
}; };
valodim = { valodim = {
@ -7842,6 +7973,7 @@
vcanadi = { vcanadi = {
email = "vito.canadi@gmail.com"; email = "vito.canadi@gmail.com";
github = "vcanadi"; github = "vcanadi";
githubId = 8889722;
name = "Vitomir Čanadi"; name = "Vitomir Čanadi";
}; };
vcunat = { vcunat = {
@ -7904,6 +8036,7 @@
viric = { viric = {
email = "viric@viric.name"; email = "viric@viric.name";
github = "viric"; github = "viric";
githubId = 66664;
name = "Lluís Batlle i Rossell"; name = "Lluís Batlle i Rossell";
}; };
virusdave = { virusdave = {
@ -7915,6 +8048,7 @@
vizanto = { vizanto = {
email = "danny@prime.vc"; email = "danny@prime.vc";
github = "vizanto"; github = "vizanto";
githubId = 326263;
name = "Danny Wilson"; name = "Danny Wilson";
}; };
vklquevs = { vklquevs = {
@ -7944,6 +8078,7 @@
vmchale = { vmchale = {
email = "tmchale@wisc.edu"; email = "tmchale@wisc.edu";
github = "vmchale"; github = "vmchale";
githubId = 13259982;
name = "Vanessa McHale"; name = "Vanessa McHale";
}; };
volhovm = { volhovm = {
@ -8067,6 +8202,7 @@
wscott = { wscott = {
email = "wsc9tt@gmail.com"; email = "wsc9tt@gmail.com";
github = "wscott"; github = "wscott";
githubId = 31487;
name = "Wayne Scott"; name = "Wayne Scott";
}; };
wucke13 = { wucke13 = {
@ -8120,6 +8256,7 @@
xnaveira = { xnaveira = {
email = "xnaveira@gmail.com"; email = "xnaveira@gmail.com";
github = "xnaveira"; github = "xnaveira";
githubId = 2534411;
name = "Xavier Naveira"; name = "Xavier Naveira";
}; };
xnwdd = { xnwdd = {
@ -8161,6 +8298,7 @@
y0no = { y0no = {
email = "y0no@y0no.fr"; email = "y0no@y0no.fr";
github = "y0no"; github = "y0no";
githubId = 2242427;
name = "Yoann Ono"; name = "Yoann Ono";
}; };
yarny = { yarny = {
@ -8242,6 +8380,7 @@
yvesf = { yvesf = {
email = "yvesf+nix@xapek.org"; email = "yvesf+nix@xapek.org";
github = "yvesf"; github = "yvesf";
githubId = 179548;
name = "Yves Fischer"; name = "Yves Fischer";
}; };
yvt = { yvt = {
@ -8271,6 +8410,7 @@
zalakain = { zalakain = {
email = "ping@umazalakain.info"; email = "ping@umazalakain.info";
github = "umazalakain"; github = "umazalakain";
githubId = 1319905;
name = "Uma Zalakain"; name = "Uma Zalakain";
}; };
zaninime = { zaninime = {
@ -8431,6 +8571,7 @@
name = "Nicholas Gerstle"; name = "Nicholas Gerstle";
email = "ngerstle@gmail.com"; email = "ngerstle@gmail.com";
github = "ngerstle"; github = "ngerstle";
githubId = 1023752;
}; };
xavierzwirtz = { xavierzwirtz = {
email = "me@xavierzwirtz.com"; email = "me@xavierzwirtz.com";

View File

@ -3,7 +3,12 @@
, networkExpr , networkExpr
}: }:
let nodes = import networkExpr; in let
nodes = builtins.mapAttrs (vm: module: {
_file = "${networkExpr}@node-${vm}";
imports = [ module ];
}) (import networkExpr);
in
with import ../../../../lib/testing-python.nix { with import ../../../../lib/testing-python.nix {
inherit system; inherit system;

View File

@ -28,7 +28,7 @@ in
browser = mkOption { browser = mkOption {
type = types.str; type = types.str;
default = concatStringsSep " " [ ''${pkgs.chromium}/bin/chromium'' default = concatStringsSep " " [ ''${pkgs.chromium}/bin/chromium''
''--user-data-dir=$HOME/.chromium-captive'' ''--user-data-dir=''${XDG_DATA_HOME:-$HOME/.local/share}/chromium-captive''
''--proxy-server="socks5://$PROXY"'' ''--proxy-server="socks5://$PROXY"''
''--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE localhost"'' ''--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE localhost"''
''--no-first-run'' ''--no-first-run''

View File

@ -330,13 +330,14 @@ in
User = data.user; User = data.user;
Group = data.group; Group = data.group;
PrivateTmp = true; PrivateTmp = true;
StateDirectory = "acme/.lego/${cert} ${lpath}"; StateDirectory = "acme/.lego/${cert} acme/.lego/accounts ${lpath}";
StateDirectoryMode = if data.allowKeysForGroup then "750" else "700"; StateDirectoryMode = if data.allowKeysForGroup then "750" else "700";
WorkingDirectory = spath; WorkingDirectory = spath;
# Only try loading the credentialsFile if the dns challenge is enabled # Only try loading the credentialsFile if the dns challenge is enabled
EnvironmentFile = if data.dnsProvider != null then data.credentialsFile else null; EnvironmentFile = if data.dnsProvider != null then data.credentialsFile else null;
ExecStart = pkgs.writeScript "acme-start" '' ExecStart = pkgs.writeScript "acme-start" ''
#!${pkgs.runtimeShell} -e #!${pkgs.runtimeShell} -e
test -L ${spath}/accounts -o -d ${spath}/accounts || ln -s ../accounts ${spath}/accounts
${pkgs.lego}/bin/lego ${renewOpts} || ${pkgs.lego}/bin/lego ${runOpts} ${pkgs.lego}/bin/lego ${renewOpts} || ${pkgs.lego}/bin/lego ${runOpts}
''; '';
ExecStartPost = ExecStartPost =

View File

@ -99,14 +99,16 @@ in
environment.systemPackages = [cfg.package]; environment.systemPackages = [cfg.package];
users.users.boinc = { users.users.boinc = {
group = "boinc";
createHome = false; createHome = false;
description = "BOINC Client"; description = "BOINC Client";
home = cfg.dataDir; home = cfg.dataDir;
isSystemUser = true; isSystemUser = true;
}; };
users.groups.boinc = {};
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d '${cfg.dataDir}' - boinc - - -" "d '${cfg.dataDir}' - boinc boinc - -"
]; ];
systemd.services.boinc = { systemd.services.boinc = {
@ -114,7 +116,7 @@ in
after = ["network.target"]; after = ["network.target"];
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
script = '' script = ''
${fhsEnvExecutable} --dir ${cfg.dataDir} --redirectio ${allowRemoteGuiRpcFlag} ${fhsEnvExecutable} --dir ${cfg.dataDir} ${allowRemoteGuiRpcFlag}
''; '';
serviceConfig = { serviceConfig = {
User = "boinc"; User = "boinc";

View File

@ -138,6 +138,7 @@ in {
services.nginx = mkIf (cfg.virtualHost != null) { services.nginx = mkIf (cfg.virtualHost != null) {
enable = true; enable = true;
recommendedProxySettings = true;
virtualHosts.${cfg.virtualHost} = { virtualHosts.${cfg.virtualHost} = {
locations.${cfg.contextPath}.proxyPass = "http://${cfg.listenAddress}:${toString cfg.port}"; locations.${cfg.contextPath}.proxyPass = "http://${cfg.listenAddress}:${toString cfg.port}";
}; };

View File

@ -177,7 +177,7 @@ in
wrapper = {}; wrapper = {};
} }
// lib.optionalAttrs (config.services.httpd.enable) { apache-webapplication = { // lib.optionalAttrs (config.services.httpd.enable) { apache-webapplication = {
documentRoot = config.services.httpd.documentRoot; documentRoot = config.services.httpd.virtualHosts.localhost.documentRoot;
}; } }; }
// lib.optionalAttrs (config.services.tomcat.axis2.enable) { axis2-webservice = {}; } // lib.optionalAttrs (config.services.tomcat.axis2.enable) { axis2-webservice = {}; }
// lib.optionalAttrs (config.services.ejabberd.enable) { ejabberd-dump = { // lib.optionalAttrs (config.services.ejabberd.enable) { ejabberd-dump = {

View File

@ -21,6 +21,8 @@ let
"--config.file /tmp/alert-manager-substituted.yaml" "--config.file /tmp/alert-manager-substituted.yaml"
"--web.listen-address ${cfg.listenAddress}:${toString cfg.port}" "--web.listen-address ${cfg.listenAddress}:${toString cfg.port}"
"--log.level ${cfg.logLevel}" "--log.level ${cfg.logLevel}"
"--storage.path /var/lib/alertmanager"
(toString (map (peer: "--cluster.peer ${peer}:9094") cfg.clusterPeers))
] ++ (optional (cfg.webExternalUrl != null) ] ++ (optional (cfg.webExternalUrl != null)
"--web.external-url ${cfg.webExternalUrl}" "--web.external-url ${cfg.webExternalUrl}"
) ++ (optional (cfg.logFormat != null) ) ++ (optional (cfg.logFormat != null)
@ -120,6 +122,14 @@ in {
''; '';
}; };
clusterPeers = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Initial peers for HA cluster.
'';
};
extraFlags = mkOption { extraFlags = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = []; default = [];
@ -162,6 +172,7 @@ in {
''; '';
serviceConfig = { serviceConfig = {
Restart = "always"; Restart = "always";
StateDirectory = "alertmanager";
DynamicUser = true; # implies PrivateTmp DynamicUser = true; # implies PrivateTmp
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile; EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
WorkingDirectory = "/tmp"; WorkingDirectory = "/tmp";

View File

@ -4,56 +4,102 @@ with lib;
let let
cfg = config.services.traefik; cfg = config.services.traefik;
configFile = jsonValue = with types;
if cfg.configFile == null then let
valueType = nullOr (oneOf [
bool
int
float
str
(lazyAttrsOf valueType)
(listOf valueType)
]) // {
description = "JSON value";
emptyValue.value = { };
};
in valueType;
dynamicConfigFile = if cfg.dynamicConfigFile == null then
pkgs.runCommand "config.toml" { pkgs.runCommand "config.toml" {
buildInputs = [ pkgs.remarshal ]; buildInputs = [ pkgs.remarshal ];
preferLocalBuild = true; preferLocalBuild = true;
} '' } ''
remarshal -if json -of toml \ remarshal -if json -of toml \
< ${pkgs.writeText "config.json" (builtins.toJSON cfg.configOptions)} \ < ${
pkgs.writeText "dynamic_config.json"
(builtins.toJSON cfg.dynamicConfigOptions)
} \
> $out > $out
'' ''
else cfg.configFile; else
cfg.dynamicConfigFile;
staticConfigFile = if cfg.staticConfigFile == null then
pkgs.runCommand "config.toml" {
buildInputs = [ pkgs.yj ];
preferLocalBuild = true;
} ''
yj -jt -i \
< ${
pkgs.writeText "static_config.json" (builtins.toJSON
(recursiveUpdate cfg.staticConfigOptions {
providers.file.filename = "${dynamicConfigFile}";
}))
} \
> $out
''
else
cfg.staticConfigFile;
in { in {
options.services.traefik = { options.services.traefik = {
enable = mkEnableOption "Traefik web server"; enable = mkEnableOption "Traefik web server";
configFile = mkOption { staticConfigFile = mkOption {
default = null; default = null;
example = literalExample "/path/to/config.toml"; example = literalExample "/path/to/static_config.toml";
type = types.nullOr types.path; type = types.nullOr types.path;
description = '' description = ''
Path to verbatim traefik.toml to use. Path to traefik's static configuration to use.
(Using that option has precedence over <literal>configOptions</literal>) (Using that option has precedence over <literal>staticConfigOptions</literal> and <literal>dynamicConfigOptions</literal>)
''; '';
}; };
configOptions = mkOption { staticConfigOptions = mkOption {
description = '' description = ''
Config for Traefik. Static configuration for Traefik.
''; '';
type = types.attrs; type = jsonValue;
default = { default = { entryPoints.http.address = ":80"; };
defaultEntryPoints = ["http"];
entryPoints.http.address = ":80";
};
example = { example = {
defaultEntrypoints = [ "http" ]; entryPoints.web.address = ":8080";
web.address = ":8080";
entryPoints.http.address = ":80"; entryPoints.http.address = ":80";
file = {}; api = { };
frontends = {
frontend1 = {
backend = "backend1";
routes.test_1.rule = "Host:localhost";
}; };
}; };
backends.backend1 = {
servers.server1.url = "http://localhost:8000"; dynamicConfigFile = mkOption {
default = null;
example = literalExample "/path/to/dynamic_config.toml";
type = types.nullOr types.path;
description = ''
Path to traefik's dynamic configuration to use.
(Using that option has precedence over <literal>dynamicConfigOptions</literal>)
'';
}; };
dynamicConfigOptions = mkOption {
description = ''
Dynamic configuration for Traefik.
'';
type = jsonValue;
default = { };
example = {
http.routers.router1 = {
rule = "Host(`localhost`)";
service = "service1";
};
http.services.service1.loadBalancer.servers =
[{ url = "http://localhost:8080"; }];
}; };
}; };
@ -84,16 +130,15 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [ "d '${cfg.dataDir}' 0700 traefik traefik - -" ];
"d '${cfg.dataDir}' 0700 traefik traefik - -"
];
systemd.services.traefik = { systemd.services.traefik = {
description = "Traefik web server"; description = "Traefik web server";
after = [ "network-online.target" ]; after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
ExecStart = ''${cfg.package.bin}/bin/traefik --configfile=${configFile}''; ExecStart =
"${cfg.package}/bin/traefik --configfile=${staticConfigFile}";
Type = "simple"; Type = "simple";
User = "traefik"; User = "traefik";
Group = cfg.group; Group = cfg.group;

View File

@ -14,7 +14,9 @@ let
user = ${cfg.user} user = ${cfg.user}
show-password-label = true show-password-label = true
password-label-text = Password: password-label-text = Password:
invalid-password-text = Invalid Password
show-input-cursor = true show-input-cursor = true
password-alignment = right
[greeter-hotkeys] [greeter-hotkeys]
mod-key = meta mod-key = meta
@ -26,6 +28,8 @@ let
[greeter-theme] [greeter-theme]
font = Sans font = Sans
font-size = 1em font-size = 1em
font-weight = bold
font-style = normal
text-color = "#080800" text-color = "#080800"
error-color = "#F8F8F0" error-color = "#F8F8F0"
background-image = "${ldmcfg.background}" background-image = "${ldmcfg.background}"
@ -36,6 +40,8 @@ let
layout-space = 15 layout-space = 15
password-color = "#F8F8F0" password-color = "#F8F8F0"
password-background-color = "#1B1D1E" password-background-color = "#1B1D1E"
password-border-color = "#080800"
password-border-width = 2px
${cfg.extraConfig} ${cfg.extraConfig}
''; '';

View File

@ -184,7 +184,11 @@ in {
'' ''
Option "DragLockButtons" "L1 B1 L2 B2" Option "DragLockButtons" "L1 B1 L2 B2"
''; '';
description = "Additional options for libinput touchpad driver."; description = ''
Additional options for libinput touchpad driver. See
<citerefentry><refentrytitle>libinput</refentrytitle><manvolnum>4</manvolnum></citerefentry>
for available options.";
'';
}; };
}; };

View File

@ -114,7 +114,9 @@ in rec {
(if isList value then value else [value])) (if isList value then value else [value]))
as)); as));
generateUnits = type: units: upstreamUnits: upstreamWants: generateUnits = generateUnits' true;
generateUnits' = allowCollisions: type: units: upstreamUnits: upstreamWants:
pkgs.runCommand "${type}-units" pkgs.runCommand "${type}-units"
{ preferLocalBuild = true; { preferLocalBuild = true;
allowSubstitutes = false; allowSubstitutes = false;
@ -182,8 +184,13 @@ in rec {
if [ "$(readlink -f $i/$fn)" = /dev/null ]; then if [ "$(readlink -f $i/$fn)" = /dev/null ]; then
ln -sfn /dev/null $out/$fn ln -sfn /dev/null $out/$fn
else else
${if allowCollisions then ''
mkdir -p $out/$fn.d mkdir -p $out/$fn.d
ln -s $i/$fn $out/$fn.d/overrides.conf ln -s $i/$fn $out/$fn.d/overrides.conf
'' else ''
echo "Found multiple derivations configuring $fn!"
exit 1
''}
fi fi
else else
ln -fs $i/$fn $out/ ln -fs $i/$fn $out/

View File

@ -116,7 +116,7 @@ in {
in in
mkMerge [ mkMerge [
(mkIf (cfg != {}) { (mkIf (cfg != {}) {
environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits "nspawn" units [] []); environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits' false "nspawn" units [] []);
}) })
{ {
systemd.targets.multi-user.wants = [ "machines.target" ]; systemd.targets.multi-user.wants = [ "machines.target" ];

View File

@ -237,6 +237,38 @@ let
''; '';
}; };
createNetworkLink = i:
let
deviceDependency = if (config.boot.isContainer || i.name == "lo")
then []
else [ (subsystemDevice i.name) ];
in
nameValuePair "network-link-${i.name}"
{ description = "Link configuration of ${i.name}";
wantedBy = [ "network-interfaces.target" ];
before = [ "network-interfaces.target" ];
bindsTo = deviceDependency;
after = [ "network-pre.target" ] ++ deviceDependency;
path = [ pkgs.iproute ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script =
''
echo "Configuring link..."
'' + optionalString (i.macAddress != null) ''
echo "setting MAC address to ${i.macAddress}..."
ip link set "${i.name}" address "${i.macAddress}"
'' + optionalString (i.mtu != null) ''
echo "setting MTU to ${toString i.mtu}..."
ip link set "${i.name}" mtu "${toString i.mtu}"
'' + ''
echo -n "bringing up interface... "
ip link set "${i.name}" up && echo "done" || (echo "failed"; exit 1)
'';
};
createTunDevice = i: nameValuePair "${i.name}-netdev" createTunDevice = i: nameValuePair "${i.name}-netdev"
{ description = "Virtual Network Interface ${i.name}"; { description = "Virtual Network Interface ${i.name}";
bindsTo = [ "dev-net-tun.device" ]; bindsTo = [ "dev-net-tun.device" ];
@ -508,6 +540,7 @@ let
}); });
in listToAttrs ( in listToAttrs (
map createNetworkLink interfaces ++
map configureAddrs interfaces ++ map configureAddrs interfaces ++
map createTunDevice (filter (i: i.virtual) interfaces)) map createTunDevice (filter (i: i.virtual) interfaces))
// mapAttrs' createBridgeDevice cfg.bridges // mapAttrs' createBridgeDevice cfg.bridges

View File

@ -94,6 +94,11 @@ in
address = forEach (interfaceIps i) address = forEach (interfaceIps i)
(ip: "${ip.address}/${toString ip.prefixLength}"); (ip: "${ip.address}/${toString ip.prefixLength}");
networkConfig.IPv6PrivacyExtensions = "kernel"; networkConfig.IPv6PrivacyExtensions = "kernel";
linkConfig = optionalAttrs (i.macAddress != null) {
MACAddress = i.macAddress;
} // optionalAttrs (i.mtu != null) {
MTUBytes = toString i.mtu;
};
}]; }];
}))) })))
(mkMerge (flip mapAttrsToList cfg.bridges (name: bridge: { (mkMerge (flip mapAttrsToList cfg.bridges (name: bridge: {

View File

@ -1031,6 +1031,11 @@ in
message = '' message = ''
Temporary addresses are only needed when IPv6 is enabled. Temporary addresses are only needed when IPv6 is enabled.
''; '';
})) ++ (forEach interfaces (i: {
assertion = (i.virtual && i.virtualType == "tun") -> i.macAddress == null;
message = ''
Setting a MAC Address for tun device ${i.name} isn't supported.
'';
})) ++ [ })) ++ [
{ {
assertion = cfg.hostId == null || (stringLength cfg.hostId == 8 && isHexString cfg.hostId); assertion = cfg.hostId == null || (stringLength cfg.hostId == 8 && isHexString cfg.hostId);
@ -1140,38 +1145,7 @@ in
${cfg.localCommands} ${cfg.localCommands}
''; '';
}; };
} // (listToAttrs (forEach interfaces (i:
let
deviceDependency = if (config.boot.isContainer || i.name == "lo")
then []
else [ (subsystemDevice i.name) ];
in
nameValuePair "network-link-${i.name}"
{ description = "Link configuration of ${i.name}";
wantedBy = [ "network-interfaces.target" ];
before = [ "network-interfaces.target" ];
bindsTo = deviceDependency;
after = [ "network-pre.target" ] ++ deviceDependency;
path = [ pkgs.iproute ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
}; };
script =
''
echo "Configuring link..."
'' + optionalString (i.macAddress != null) ''
echo "setting MAC address to ${i.macAddress}..."
ip link set "${i.name}" address "${i.macAddress}"
'' + optionalString (i.mtu != null) ''
echo "setting MTU to ${toString i.mtu}..."
ip link set "${i.name}" mtu "${toString i.mtu}"
'' + ''
echo -n "bringing up interface... "
ip link set "${i.name}" up && echo "done" || (echo "failed"; exit 1)
'';
})));
services.mstpd = mkIf needsMstpd { enable = true; }; services.mstpd = mkIf needsMstpd { enable = true; };
virtualisation.vswitch = mkIf (cfg.vswitches != { }) { enable = true; }; virtualisation.vswitch = mkIf (cfg.vswitches != { }) { enable = true; };

View File

@ -0,0 +1,69 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.hyperv;
in {
options = {
hyperv = {
baseImageSize = mkOption {
type = types.int;
default = 2048;
description = ''
The size of the hyper-v base image in MiB.
'';
};
vmDerivationName = mkOption {
type = types.str;
default = "nixos-hyperv-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
description = ''
The name of the derivation for the hyper-v appliance.
'';
};
vmFileName = mkOption {
type = types.str;
default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.vhdx";
description = ''
The file name of the hyper-v appliance.
'';
};
};
};
config = {
system.build.hypervImage = import ../../lib/make-disk-image.nix {
name = cfg.vmDerivationName;
postVM = ''
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=dynamic -O vhdx $diskImage $out/${cfg.vmFileName}
'';
format = "raw";
diskSize = cfg.baseImageSize;
partitionTableType = "efi";
inherit config lib pkgs;
};
fileSystems."/" = {
device = "/dev/disk/by-label/nixos";
autoResize = true;
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-label/ESP";
fsType = "vfat";
};
boot.growPartition = true;
boot.loader.grub = {
version = 2;
device = "nodev";
efiSupport = true;
efiInstallAsRemovable = true;
};
virtualisation.hypervGuest.enable = true;
};
}

View File

@ -303,6 +303,8 @@ in
timezone = handleTest ./timezone.nix {}; timezone = handleTest ./timezone.nix {};
tinydns = handleTest ./tinydns.nix {}; tinydns = handleTest ./tinydns.nix {};
tor = handleTest ./tor.nix {}; tor = handleTest ./tor.nix {};
# traefik test relies on docker-containers
traefik = handleTestOn ["x86_64-linux"] ./traefik.nix {};
transmission = handleTest ./transmission.nix {}; transmission = handleTest ./transmission.nix {};
trac = handleTest ./trac.nix {}; trac = handleTest ./trac.nix {};
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {}; trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};

View File

@ -1,20 +1,24 @@
import ./make-test.nix ({ pkgs, ...} : { import ./make-test-python.nix ({ lib, ...} : {
name = "flannel"; name = "flannel";
meta = with pkgs.stdenv.lib.maintainers; { meta = with lib.maintainers; {
maintainers = [ offline ]; maintainers = [ offline ];
}; };
nodes = let nodes = let
flannelConfig = { flannelConfig = { pkgs, ... } : {
services.flannel = { services.flannel = {
enable = true; enable = true;
backend = {
Type = "udp";
Port = 8285;
};
network = "10.1.0.0/16"; network = "10.1.0.0/16";
iface = "eth1"; iface = "eth1";
etcd.endpoints = ["http://etcd:2379"]; etcd.endpoints = ["http://etcd:2379"];
}; };
networking.firewall.allowedUDPPorts = [ 8472 ]; networking.firewall.allowedUDPPorts = [ 8285 ];
}; };
in { in {
etcd = { ... }: { etcd = { ... }: {
@ -32,25 +36,22 @@ import ./make-test.nix ({ pkgs, ...} : {
networking.firewall.allowedTCPPorts = [ 2379 ]; networking.firewall.allowedTCPPorts = [ 2379 ];
}; };
node1 = { ... }: { node1 = flannelConfig;
require = [flannelConfig]; node2 = flannelConfig;
};
node2 = { ... }: {
require = [flannelConfig];
};
}; };
testScript = '' testScript = ''
startAll; start_all()
$node1->waitForUnit("flannel.service"); node1.wait_for_unit("flannel.service")
$node2->waitForUnit("flannel.service"); node2.wait_for_unit("flannel.service")
my $ip1 = $node1->succeed("ip -4 addr show flannel.1 | grep -oP '(?<=inet).*(?=/)'"); node1.wait_until_succeeds("ip l show dev flannel0")
my $ip2 = $node2->succeed("ip -4 addr show flannel.1 | grep -oP '(?<=inet).*(?=/)'"); ip1 = node1.succeed("ip -4 addr show flannel0 | grep -oP '(?<=inet).*(?=/)'")
node2.wait_until_succeeds("ip l show dev flannel0")
ip2 = node2.succeed("ip -4 addr show flannel0 | grep -oP '(?<=inet).*(?=/)'")
$node1->waitUntilSucceeds("ping -c 1 $ip2"); node1.wait_until_succeeds(f"ping -c 1 {ip2}")
$node2->waitUntilSucceeds("ping -c 1 $ip1"); node2.wait_until_succeeds(f"ping -c 1 {ip1}")
''; '';
}) })

View File

@ -1,6 +1,7 @@
import ./make-test-python.nix ( import ./make-test-python.nix (
{ pkgs, ... }: let { pkgs, ... }: let
domain = "whatever.example.com"; domain = "whatever.example.com";
password = "false;foo;exit;withspecialcharacters";
in in
{ {
name = "iodine"; name = "iodine";
@ -21,7 +22,7 @@ import ./make-test-python.nix (
services.iodine.server = { services.iodine.server = {
enable = true; enable = true;
ip = "10.53.53.1/24"; ip = "10.53.53.1/24";
passwordFile = "${builtins.toFile "password" "foo"}"; passwordFile = "${builtins.toFile "password" password}";
inherit domain; inherit domain;
}; };
@ -41,7 +42,7 @@ import ./make-test-python.nix (
server = domain; server = domain;
}; };
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"f /root/pw 0666 root root - foo" "f /root/pw 0666 root root - ${password}"
]; ];
environment.systemPackages = [ environment.systemPackages = [
pkgs.nagiosPluginsOfficial pkgs.nagiosPluginsOfficial

View File

@ -200,6 +200,7 @@ let
useDHCP = false; useDHCP = false;
interfaces.eth1 = { interfaces.eth1 = {
ipv4.addresses = mkOverride 0 [ ]; ipv4.addresses = mkOverride 0 [ ];
mtu = 1343;
useDHCP = true; useDHCP = true;
}; };
interfaces.eth2.ipv4.addresses = mkOverride 0 [ ]; interfaces.eth2.ipv4.addresses = mkOverride 0 [ ];
@ -216,6 +217,9 @@ let
with subtest("Wait until we have an ip address on each interface"): with subtest("Wait until we have an ip address on each interface"):
client.wait_until_succeeds("ip addr show dev eth1 | grep -q '192.168.1'") client.wait_until_succeeds("ip addr show dev eth1 | grep -q '192.168.1'")
with subtest("ensure MTU is set"):
assert "mtu 1343" in client.succeed("ip link show dev eth1")
with subtest("Test vlan 1"): with subtest("Test vlan 1"):
client.wait_until_succeeds("ping -c 1 192.168.1.1") client.wait_until_succeeds("ping -c 1 192.168.1.1")
client.wait_until_succeeds("ping -c 1 192.168.1.2") client.wait_until_succeeds("ping -c 1 192.168.1.2")
@ -455,11 +459,14 @@ let
ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ]; ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ];
ipv6.addresses = [ { address = "2001:1470:fffd:2096::"; prefixLength = 64; } ]; ipv6.addresses = [ { address = "2001:1470:fffd:2096::"; prefixLength = 64; } ];
virtual = true; virtual = true;
mtu = 1342;
macAddress = "02:de:ad:be:ef:01";
}; };
networking.interfaces.tun0 = { networking.interfaces.tun0 = {
ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ]; ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ];
ipv6.addresses = [ { address = "2001:1470:fffd:2097::"; prefixLength = 64; } ]; ipv6.addresses = [ { address = "2001:1470:fffd:2097::"; prefixLength = 64; } ];
virtual = true; virtual = true;
mtu = 1343;
}; };
}; };
@ -471,7 +478,7 @@ let
with subtest("Wait for networking to come up"): with subtest("Wait for networking to come up"):
machine.start() machine.start()
machine.wait_for_unit("network-online.target") machine.wait_for_unit("network.target")
with subtest("Test interfaces set up"): with subtest("Test interfaces set up"):
list = machine.succeed("ip tuntap list | sort").strip() list = machine.succeed("ip tuntap list | sort").strip()
@ -486,7 +493,12 @@ let
""".format( """.format(
list, targetList list, targetList
) )
with subtest("Test MTU and MAC Address are configured"):
assert "mtu 1342" in machine.succeed("ip link show dev tap0")
assert "mtu 1343" in machine.succeed("ip link show dev tun0")
assert "02:de:ad:be:ef:01" in machine.succeed("ip link show dev tap0")
'' # network-addresses-* only exist in scripted networking
+ optionalString (!networkd) ''
with subtest("Test interfaces clean up"): with subtest("Test interfaces clean up"):
machine.succeed("systemctl stop network-addresses-tap0") machine.succeed("systemctl stop network-addresses-tap0")
machine.sleep(10) machine.sleep(10)
@ -602,17 +614,17 @@ let
}; };
testScript = '' testScript = ''
targetIPv4Table = """ targetIPv4Table = [
10.0.0.0/16 proto static scope link mtu 1500 "10.0.0.0/16 proto static scope link mtu 1500",
192.168.1.0/24 proto kernel scope link src 192.168.1.2 "192.168.1.0/24 proto kernel scope link src 192.168.1.2",
192.168.2.0/24 via 192.168.1.1 proto static "192.168.2.0/24 via 192.168.1.1 proto static",
""".strip() ]
targetIPv6Table = """ targetIPv6Table = [
2001:1470:fffd:2097::/64 proto kernel metric 256 pref medium "2001:1470:fffd:2097::/64 proto kernel metric 256 pref medium",
2001:1470:fffd:2098::/64 via fdfd:b3f0::1 proto static metric 1024 pref medium "2001:1470:fffd:2098::/64 via fdfd:b3f0::1 proto static metric 1024 pref medium",
fdfd:b3f0::/48 proto static metric 1024 pref medium "fdfd:b3f0::/48 proto static metric 1024 pref medium",
""".strip() ]
machine.start() machine.start()
machine.wait_for_unit("network.target") machine.wait_for_unit("network.target")
@ -620,9 +632,9 @@ let
with subtest("test routing tables"): with subtest("test routing tables"):
ipv4Table = machine.succeed("ip -4 route list dev eth0 | head -n3").strip() ipv4Table = machine.succeed("ip -4 route list dev eth0 | head -n3").strip()
ipv6Table = machine.succeed("ip -6 route list dev eth0 | head -n3").strip() ipv6Table = machine.succeed("ip -6 route list dev eth0 | head -n3").strip()
assert ( assert [
ipv4Table == targetIPv4Table l.strip() for l in ipv4Table.splitlines()
), """ ] == targetIPv4Table, """
The IPv4 routing table does not match the expected one: The IPv4 routing table does not match the expected one:
Result: Result:
{} {}
@ -631,9 +643,9 @@ let
""".format( """.format(
ipv4Table, targetIPv4Table ipv4Table, targetIPv4Table
) )
assert ( assert [
ipv6Table == targetIPv6Table l.strip() for l in ipv6Table.splitlines()
), """ ] == targetIPv6Table, """
The IPv6 routing table does not match the expected one: The IPv6 routing table does not match the expected one:
Result: Result:
{} {}

87
nixos/tests/traefik.nix Normal file
View File

@ -0,0 +1,87 @@
# Test Traefik as a reverse proxy of a local web service
# and a Docker container.
import ./make-test-python.nix ({ pkgs, ... }: {
name = "traefik";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ joko ];
};
nodes = {
client = { config, pkgs, ... }: {
environment.systemPackages = [ pkgs.curl ];
};
traefik = { config, pkgs, ... }: {
docker-containers.nginx = {
extraDockerOptions = [
"-l" "traefik.enable=true"
"-l" "traefik.http.routers.nginx.entrypoints=web"
"-l" "traefik.http.routers.nginx.rule=Host(`nginx.traefik.test`)"
];
image = "nginx-container";
imageFile = pkgs.dockerTools.examples.nginx;
};
networking.firewall.allowedTCPPorts = [ 80 ];
services.traefik = {
enable = true;
dynamicConfigOptions = {
http.routers.simplehttp = {
rule = "Host(`simplehttp.traefik.test`)";
entryPoints = [ "web" ];
service = "simplehttp";
};
http.services.simplehttp = {
loadBalancer.servers = [{
url = "http://127.0.0.1:8000";
}];
};
};
staticConfigOptions = {
global = {
checkNewVersion = false;
sendAnonymousUsage = false;
};
entryPoints.web.address = ":80";
providers.docker.exposedByDefault = false;
};
};
systemd.services.simplehttp = {
script = "${pkgs.python3}/bin/python -m http.server 8000";
serviceConfig.Type = "simple";
wantedBy = [ "multi-user.target" ];
};
users.users.traefik.extraGroups = [ "docker" ];
};
};
testScript = ''
start_all()
traefik.wait_for_unit("docker-nginx.service")
traefik.wait_until_succeeds("docker ps | grep nginx-container")
traefik.wait_for_unit("simplehttp.service")
traefik.wait_for_unit("traefik.service")
traefik.wait_for_open_port(80)
traefik.wait_for_unit("multi-user.target")
client.wait_for_unit("multi-user.target")
with subtest("Check that a container can be reached via Traefik"):
assert "Hello from NGINX" in client.succeed(
"curl -sSf -H Host:nginx.traefik.test http://traefik/"
)
with subtest("Check that dynamic configuration works"):
assert "Directory listing for " in client.succeed(
"curl -sSf -H Host:simplehttp.traefik.test http://traefik/"
)
'';
})

View File

@ -1,14 +1,51 @@
{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, doxygen { stdenv
, fftwSinglePrec, flac, glibc, glibmm, graphviz, gtkmm2, libjack2 , fetchgit
, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg , alsaLib
, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile , aubio
, libusb, libuuid, libxml2, libxslt, lilv, lrdf, lv2, makeWrapper , boost
, perl, pkgconfig, python2, rubberband, serd, sord, sratom , cairomm
, taglib, vamp-plugin-sdk, dbus, fftw, pango, suil, libarchive , curl
, wafHook }: , doxygen
, fftwSinglePrec
, flac
, glibc
, glibmm
, graphviz
, gtkmm2
, libjack2
, liblo
, libogg
, libsamplerate
, libsigcxx
, libsndfile
, libusb1
, fluidsynth_1
, hidapi
, libltc
, qm-dsp
, libxml2
, lilv
, lrdf
, lv2
, makeWrapper
, perl
, pkg-config
, itstool
, python2
, rubberband
, serd
, sord
, sratom
, taglib
, vamp-plugin-sdk
, dbus
, fftw
, pango
, suil
, libarchive
, wafHook
}:
let let
# Ardour git repo uses a mix of annotated and lightweight tags. Annotated # Ardour git repo uses a mix of annotated and lightweight tags. Annotated
# tags are used for MAJOR.MINOR versioning, and lightweight tags are used # tags are used for MAJOR.MINOR versioning, and lightweight tags are used
# in-between; MAJOR.MINOR.REV where REV is the number of commits since the # in-between; MAJOR.MINOR.REV where REV is the number of commits since the
@ -18,10 +55,7 @@ let
# Version to build. # Version to build.
tag = "5.12"; tag = "5.12";
in stdenv.mkDerivation rec {
in
stdenv.mkDerivation rec {
name = "ardour-${tag}"; name = "ardour-${tag}";
src = fetchgit { src = fetchgit {
@ -30,46 +64,84 @@ stdenv.mkDerivation rec {
sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"; sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr";
}; };
nativeBuildInputs = [ wafHook ]; nativeBuildInputs = [
buildInputs = wafHook
[ alsaLib aubio boost cairomm curl doxygen dbus fftw fftwSinglePrec flac makeWrapper
glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo pkg-config
libmad libogg librdf_raptor librdf_rasqal libsamplerate itstool
libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lrdf lv2 doxygen
makeWrapper pango perl pkgconfig python2 rubberband serd sord graphviz # for dot
sratom suil taglib vamp-plugin-sdk libarchive perl
python2
]; ];
# ardour's wscript has a "tarball" target but that required the git revision buildInputs = [
# be available. Since this is an unzipped tarball fetched from github we alsaLib
# have to do that ourself. aubio
patchPhase = '' boost
printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc cairomm
sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript curl
patchShebangs ./tools/ dbus
''; fftw
fftwSinglePrec
flac
glibmm
gtkmm2
libjack2
liblo
libogg
libsamplerate
libsigcxx
libsndfile
libusb1
fluidsynth_1
hidapi
libltc
qm-dsp
libxml2
lilv
lrdf
lv2
pango
rubberband
serd
sord
sratom
suil
taglib
vamp-plugin-sdk
libarchive
];
wafConfigureFlags = [ wafConfigureFlags = [
"--optimize" "--optimize"
"--docs" "--docs"
"--use-external-libs"
"--freedesktop"
"--with-backends=jack,alsa,dummy" "--with-backends=jack,alsa,dummy"
]; ];
NIX_CFLAGS_COMPILE = "-I${qm-dsp}/include/qm-dsp";
# ardour's wscript has a "tarball" target but that required the git revision
# be available. Since this is an unzipped tarball fetched from github we
# have to do that ourself.
postPatch = ''
printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc
patchShebangs ./tools/
'';
postInstall = '' postInstall = ''
# Install desktop file # wscript does not install these for some reason
mkdir -p "$out/share/applications" install -vDm 644 "build/gtk2_ardour/ardour.xml" \
cat > "$out/share/applications/ardour.desktop" << EOF -t "$out/share/mime/packages"
[Desktop Entry] install -vDm 644 "build/gtk2_ardour/ardour5.desktop" \
Name=Ardour 5 -t "$out/share/applications"
GenericName=Digital Audio Workstation for size in 16 22 32 48 256 512; do
Comment=Multitrack harddisk recorder install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
Exec=$out/bin/ardour5 "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour5.png"
Icon=$out/share/ardour5/resources/Ardour-icon_256px.png done
Terminal=false install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
Type=Application
X-MultipleArgs=false
Categories=GTK;Audio;AudioVideoEditing;AudioVideo;Video;
EOF
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -15,13 +15,13 @@ assert withGtk3 -> gtk3 != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "carla"; pname = "carla";
version = "2.0.0"; version = "2.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "falkTX"; owner = "falkTX";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0fqgncqlr86n38yy7pa118mswfacmfczj7w9xx6c6k0jav3wk29k"; sha256 = "074y40yrgl3qrdr3a5vn0scsw0qv77r5p5m6gc89zhf20ic8ajzc";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "lightdm-mini-greeter"; pname = "lightdm-mini-greeter";
version = "0.3.4"; version = "0.4.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "prikhi"; owner = "prikhi";
repo = "lightdm-mini-greeter"; repo = "lightdm-mini-greeter";
rev = version; rev = version;
sha256 = "1qi0bsqi8z2zv3303ww0kd7bciz6qx8na5bkvgrqlwyvq31czai5"; sha256 = "10hga7pmfyjdvj4xwm3djwrhk50brcpycj3p3c57pa0vnx4ill3s";
}; };
nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook ]; nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook ];
@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
license = licenses.gpl3; license = licenses.gpl3;
maintainers = with maintainers; [ mnacamura prikhi ]; maintainers = with maintainers; [ mnacamura prikhi ];
platforms = platforms.linux; platforms = platforms.linux;
changelog = "https://github.com/prikhi/lightdm-mini-greeter/blob/master/CHANGELOG.md";
}; };
} }

View File

@ -1,18 +1,16 @@
{ stdenv, fetchurl { stdenv, fetchurl, ncurses, gpm }:
, ncurses, gpm
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "jupp"; pname = "jupp";
version = "3.1"; version = "39";
srcName = "joe-3.1jupp31"; srcName = "joe-3.1${pname}${version}";
src = fetchurl { src = fetchurl {
urls = [ urls = [
"https://www.mirbsd.org/MirOS/dist/jupp/${srcName}.tgz" "https://www.mirbsd.org/MirOS/dist/jupp/${srcName}.tgz"
"https://pub.allbsd.org/MirOS/dist/jupp/${srcName}.tgz" ]; "https://pub.allbsd.org/MirOS/dist/jupp/${srcName}.tgz" ];
sha256 = "1fnf9jsd6p4jyybkhjjs328qx38ywy8w029ngc7j7kqp0ixn0l0s"; sha256 = "14gys92dy3kq9ikigry7q2x4w5v2z76d97vp212bddrxiqy5np8d";
}; };
preConfigure = "chmod +x ./configure"; preConfigure = "chmod +x ./configure";
@ -37,7 +35,7 @@ stdenv.mkDerivation rec {
and has a lot of bugs fixed. It is based upon an older version of joe and has a lot of bugs fixed. It is based upon an older version of joe
because these behave better overall. because these behave better overall.
''; '';
homepage = "http://mirbsd.de/jupp"; homepage = "http://www.mirbsd.org/jupp.htm";
license = licenses.gpl1; license = licenses.gpl1;
maintainers = with maintainers; [ AndersonTorres ]; maintainers = with maintainers; [ AndersonTorres ];
}; };

View File

@ -1,54 +1,62 @@
{ stdenv, fetchurl, fetchpatch, pkgconfig, perlPackages, libXft { stdenv
, libpng, zlib, popt, boehmgc, libxml2, libxslt, glib, gtkmm2 , boehmgc
, glibmm, libsigcxx, lcms, boost, gettext, makeWrapper , boost
, gsl, gtkspell2, cairo, python2, poppler, imagemagick, libwpg, librevenge , cairo
, libvisio, libcdr, libexif, potrace, cmake , cmake
, librsvg, wrapGAppsHook , fetchpatch
, fetchurl
, gettext
, glib
, glibmm
, gsl
, gtkmm2
, gtkspell2
, imagemagick
, lcms
, libcdr
, libexif
, libpng
, librevenge
, librsvg
, libsigcxx
, libvisio
, libwpg
, libXft
, libxml2
, libxslt
, makeWrapper
, perlPackages
, pkg-config
, poppler
, popt
, potrace
, python3
, wrapGAppsHook
, zlib
}: }:
let let
python2Env = python2.withPackages(ps: with ps; python3Env = python3.withPackages
[ numpy lxml scour ]); (ps: with ps; [
numpy
lxml
scour
]);
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "inkscape-0.92.4"; pname = "inkscape";
version = "0.92.5";
src = fetchurl { src = fetchurl {
url = "https://media.inkscape.org/dl/resources/file/${name}.tar.bz2"; url = "https://media.inkscape.org/dl/resources/file/${pname}-${version}.tar.bz2";
sha256 = "0pjinhjibfsz1aywdpgpj3k23xrsszpj4a1ya5562dkv2yl2vv2p"; sha256 = "ge5/aeK9ZKlzQ9g5Wkp6eQWyG4YVZu1eXZF5F41Rmgs=";
}; };
patches = [
(fetchpatch {
name = "inkscape-poppler_0_76_compat.patch";
url = "https://gitlab.com/inkscape/inkscape/commit/e831b034746f8dc3c3c1b88372751f6dcb974831.diff";
sha256 = "096rdyi6ppjq1h9jwwsm9hb99nggfrfinik8rm23jkn4h2zl01zf";
})
(fetchpatch {
name = "inkscape-poppler_0_82_compat.patch";
url = "https://gitlab.com/inkscape/inkscape/commit/835b6bb62be565efab986d5a3f30a672ad56c7eb.patch";
sha256 = "02c6sxi2w52b885vr3pgani6kvxp9gdqqk2jgiykkdzv70hhrnm7";
})
(fetchpatch {
name = "inkscape-poppler_0_83_compat.patch";
url = "https://gitlab.com/inkscape/inkscape/commit/b5360a807b12d4e8318475ffd0464b84882788b5.patch";
sha256 = "1p44rr2q2i3zkd1y1j7xgdcbgx8yvlq6hq92im8s0bkjby6p5cpz";
})
];
# Inkscape hits the ARGMAX when linking on macOS. It appears to be # Inkscape hits the ARGMAX when linking on macOS. It appears to be
# CMakes ARGMAX check doesnt offer enough padding for NIX_LDFLAGS. # CMakes ARGMAX check doesnt offer enough padding for NIX_LDFLAGS.
# Setting strictDeps it avoids duplicating some dependencies so it # Setting strictDeps it avoids duplicating some dependencies so it
# will leave us under ARGMAX. # will leave us under ARGMAX.
strictDeps = true; strictDeps = true;
unpackPhase = ''
cp $src ${name}.tar.bz2
tar xvjf ${name}.tar.bz2 > /dev/null
cd ${name}
'';
postPatch = '' postPatch = ''
patchShebangs share/extensions patchShebangs share/extensions
patchShebangs fix-roff-punct patchShebangs fix-roff-punct
@ -56,24 +64,52 @@ stdenv.mkDerivation rec {
# Python is used at run-time to execute scripts, e.g., those from # Python is used at run-time to execute scripts, e.g., those from
# the "Effects" menu. # the "Effects" menu.
substituteInPlace src/extension/implementation/script.cpp \ substituteInPlace src/extension/implementation/script.cpp \
--replace '"python-interpreter", "python"' '"python-interpreter", "${python2Env}/bin/python"' --replace '"python-interpreter", "python"' '"python-interpreter", "${python3Env}/bin/python"'
''; '';
nativeBuildInputs = [ pkgconfig cmake makeWrapper python2Env wrapGAppsHook ] nativeBuildInputs = [
++ (with perlPackages; [ perl XMLParser ]); pkg-config
cmake
makeWrapper
python3Env
wrapGAppsHook
] ++ (with perlPackages; [
perl
XMLParser
]);
buildInputs = [ buildInputs = [
libXft libpng zlib popt boehmgc boehmgc
libxml2 libxslt glib gtkmm2 glibmm libsigcxx lcms boost gettext boost
gsl poppler imagemagick libwpg librevenge gettext
libvisio libcdr libexif potrace glib
glibmm
gsl
gtkmm2
imagemagick
lcms
libcdr
libexif
libpng
librevenge
librsvg # for loading icons librsvg # for loading icons
libsigcxx
python2Env perlPackages.perl libvisio
] ++ stdenv.lib.optional (!stdenv.isDarwin) gtkspell2 libwpg
++ stdenv.lib.optional stdenv.isDarwin cairo; libXft
libxml2
enableParallelBuilding = true; libxslt
perlPackages.perl
poppler
popt
potrace
python3Env
zlib
] ++ stdenv.lib.optionals (!stdenv.isDarwin) [
gtkspell2
] ++ stdenv.lib.optionals stdenv.isDarwin [
cairo
];
# Make sure PyXML modules can be found at run-time. # Make sure PyXML modules can be found at run-time.
postInstall = stdenv.lib.optionalString stdenv.isDarwin '' postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
@ -82,9 +118,10 @@ stdenv.mkDerivation rec {
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
license = "GPL";
homepage = "https://www.inkscape.org";
description = "Vector graphics editor"; description = "Vector graphics editor";
homepage = "https://www.inkscape.org";
license = licenses.gpl3Plus;
maintainers = [ maintainers.jtojnar ];
platforms = platforms.all; platforms = platforms.all;
longDescription = '' longDescription = ''
Inkscape is a feature-rich vector graphics editor that edits Inkscape is a feature-rich vector graphics editor that edits

View File

@ -21,9 +21,9 @@ stdenv.mkDerivation rec {
src = fetchzip { src = fetchzip {
url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.zip"; url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.zip";
sha256 = { sha256 = {
aarch64-linux = "1lcpj1mgkvksq1d08ibh59y0dmdh7zm77wi5ziqhg3p5g9nxyasd"; aarch64-linux = "0z2fqlf156348ha3zhv16kvqdx68fbwbzch2gzjm9x1na9n5k1ra";
armv7l-linux = "0sljy06302x567jqw5lagbyhpc3j140jk4wccacxjrbb6hcx3l42"; armv7l-linux = "1ppwgrmgl1j2ws9mhrscvvkamd69a6xw7x35df6d30cyj97r0mzy";
x86_64-darwin = "1b058s9kny026q395nj99v8hggxkgv43nnjkmx1a2siajw0db94c"; x86_64-darwin = "0f8vn6m3xzsiyxm2ka5wkbp63wvzrix6g1xrbpvcm3v2llmychkl";
x86_64-linux = "035c1nlw0nim057sz3axpkcgkafqbm6gpr8hwr097vlrqll6w3dv"; x86_64-linux = "035c1nlw0nim057sz3axpkcgkafqbm6gpr8hwr097vlrqll6w3dv";
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
}; };
@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
dontBuild = true; dontBuild = true;
dontStrip = true; dontStrip = true;
dontPatchELF = true; dontPatchELF = true;
preferLocalBuild = true;
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin

View File

@ -1,9 +1,10 @@
{ stdenv, cmake, fetchFromGitHub, pkgconfig, boost, exiv2, fftwFloat, gsl { stdenv, mkDerivation, cmake, fetchFromGitHub, pkgconfig
, boost, exiv2, fftwFloat, gsl
, ilmbase, lcms2, libraw, libtiff, openexr , ilmbase, lcms2, libraw, libtiff, openexr
, qtbase, qtdeclarative, qttools, qtwebengine, eigen , qtbase, qtdeclarative, qttools, qtwebengine, eigen
}: }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "luminance-hdr"; pname = "luminance-hdr";
version = "2.6.0"; version = "2.6.0";

View File

@ -1,6 +1,15 @@
{ mkDerivation, fetchFromGitHub, lib { mkDerivation
, pkgconfig, cmake , lib
, exiv2, qtbase, qtimageformats, qtsvg , fetchFromGitHub
, cmake
, pkgconfig
, exiv2
, mpv
, qtbase
, qtimageformats
, qtsvg
}: }:
mkDerivation rec { mkDerivation rec {
@ -14,33 +23,32 @@ mkDerivation rec {
sha256 = "0cmya06j466v0pirhxbzbj1vbz0346y7rbc1gbv4n9xcp6c6bln6"; sha256 = "0cmya06j466v0pirhxbzbj1vbz0346y7rbc1gbv4n9xcp6c6bln6";
}; };
cmakeFlags = [
# Video support appears to be broken; the following gets printed upon
# attempting to view an mp4, webm, or mkv (and probably all video formats):
#
# [VideoPlayerInitProxy] Error - could not load player library
# "qimgv_player_mpv"
#
# GIFs are unaffected. If this ever gets addressed, all that is necessary is
# to add `mpv` to the arguments list and to `buildInputs`, and to remove
# `cmakeFlags`.
"-DVIDEO_SUPPORT=OFF"
];
nativeBuildInputs = [ nativeBuildInputs = [
pkgconfig
cmake cmake
pkgconfig
]; ];
buildInputs = [ buildInputs = [
exiv2 exiv2
mpv
qtbase qtbase
qtimageformats qtimageformats
qtsvg qtsvg
]; ];
postPatch = ''
sed -i "s@/usr/bin/mpv@${mpv}/bin/mpv@" \
qimgv/settings.cpp
'';
# Wrap the library path so it can see `libqimgv_player_mpv.so`, which is used
# to play video files within qimgv itself.
qtWrapperArgs = [
"--prefix LD_LIBRARY_PATH : ${placeholder "out"}/lib"
];
meta = with lib; { meta = with lib; {
description = "Qt5 image viewer with optional video support"; description = "A Qt5 image viewer with optional video support";
homepage = "https://github.com/easymodo/qimgv"; homepage = "https://github.com/easymodo/qimgv";
license = licenses.gpl3; license = licenses.gpl3;
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -90,6 +90,7 @@ let
kalarm = callPackage ./kalarm.nix {}; kalarm = callPackage ./kalarm.nix {};
kalarmcal = callPackage ./kalarmcal.nix {}; kalarmcal = callPackage ./kalarmcal.nix {};
kate = callPackage ./kate.nix {}; kate = callPackage ./kate.nix {};
kbreakout = callPackage ./kbreakout.nix {};
kcachegrind = callPackage ./kcachegrind.nix {}; kcachegrind = callPackage ./kcachegrind.nix {};
kcalc = callPackage ./kcalc.nix {}; kcalc = callPackage ./kcalc.nix {};
kcalutils = callPackage ./kcalutils.nix {}; kcalutils = callPackage ./kcalutils.nix {};
@ -146,6 +147,7 @@ let
krdc = callPackage ./krdc.nix {}; krdc = callPackage ./krdc.nix {};
krfb = callPackage ./krfb.nix {}; krfb = callPackage ./krfb.nix {};
kruler = callPackage ./kruler.nix {}; kruler = callPackage ./kruler.nix {};
kspaceduel = callPackage ./kspaceduel.nix {};
ksudoku = callPackage ./ksudoku.nix {}; ksudoku = callPackage ./ksudoku.nix {};
ksystemlog = callPackage ./ksystemlog.nix {}; ksystemlog = callPackage ./ksystemlog.nix {};
ktnef = callPackage ./ktnef.nix {}; ktnef = callPackage ./ktnef.nix {};

View File

@ -0,0 +1,22 @@
{ mkDerivation, lib
, extra-cmake-modules
, cmake
, kdbusaddons
, ki18n
, kconfigwidgets
, kcrash
, kxmlgui
, libkdegames
}:
mkDerivation {
name = "kbreakout";
meta.license = with lib.licenses; [ lgpl21 gpl3 ];
outputs = [ "out" "dev" ];
nativeBuildInputs = [
cmake extra-cmake-modules
];
propagatedBuildInputs = [
kdbusaddons ki18n kconfigwidgets kcrash kxmlgui libkdegames
];
}

View File

@ -0,0 +1,22 @@
{ mkDerivation, lib
, extra-cmake-modules
, cmake
, kdbusaddons
, ki18n
, kconfigwidgets
, kcrash
, kxmlgui
, libkdegames
}:
mkDerivation {
name = "kspaceduel";
meta.license = with lib.licenses; [ lgpl21 gpl3 ];
outputs = [ "out" "dev" ];
nativeBuildInputs = [
cmake extra-cmake-modules
];
propagatedBuildInputs = [
kdbusaddons ki18n kconfigwidgets kcrash kxmlgui libkdegames
];
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "blugon"; pname = "blugon";
version = "1.12.0"; version = "1.12.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jumper149"; owner = "jumper149";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0vdhq8v011awhpkccbcmigj9c46widyzh0m5knafapanai3kv7ii"; sha256 = "1i67v8jxvavgax3dwvns200iwwdcvgki04liq0x64q52lg0vrh7m";
}; };
buildInputs = [ python3 libX11 libXrandr ]; buildInputs = [ python3 libX11 libXrandr ];

View File

@ -122,7 +122,16 @@ mkDerivation rec {
export PODOFO_INC_DIR=${podofo.dev}/include/podofo export PODOFO_INC_DIR=${podofo.dev}/include/podofo
export PODOFO_LIB_DIR=${podofo.lib}/lib export PODOFO_LIB_DIR=${podofo.lib}/lib
export SIP_BIN=${pypkgs.sip}/bin/sip export SIP_BIN=${pypkgs.sip}/bin/sip
${pypkgs.python.interpreter} setup.py install --prefix=$out export XDG_DATA_HOME=$out/share
export XDG_UTILS_INSTALL_MODE="user"
${pypkgs.python.interpreter} setup.py install --root=$out \
--prefix=$out \
--libdir=$out/lib \
--staging-root=$out \
--staging-libdir=$out/lib \
--staging-sharedir=$out/share
PYFILES="$out/bin/* $out/lib/calibre/calibre/web/feeds/*.py PYFILES="$out/bin/* $out/lib/calibre/calibre/web/feeds/*.py
$out/lib/calibre/calibre/ebooks/metadata/*.py $out/lib/calibre/calibre/ebooks/metadata/*.py
@ -131,13 +140,6 @@ mkDerivation rec {
sed -i "s/env python[0-9.]*/python/" $PYFILES sed -i "s/env python[0-9.]*/python/" $PYFILES
sed -i "2i import sys; sys.argv[0] = 'calibre'" $out/bin/calibre sed -i "2i import sys; sys.argv[0] = 'calibre'" $out/bin/calibre
# Replace @out@ by the output path.
mkdir -p $out/share/applications/
cp {$calibreDesktopItem,$ebookEditDesktopItem,$ebookViewerDesktopItem}/share/applications/* $out/share/applications/
for entry in $out/share/applications/*.desktop; do
substituteAllInPlace $entry
done
mkdir -p $out/share mkdir -p $out/share
cp -a man-pages $out/share/man cp -a man-pages $out/share/man
@ -165,79 +167,6 @@ mkDerivation rec {
disallowedReferences = [ podofo.dev ]; disallowedReferences = [ podofo.dev ];
calibreDesktopItem = makeDesktopItem {
fileValidation = false; # fails before substitution
name = "calibre-gui";
desktopName = "calibre";
exec = "@out@/bin/calibre --detach %F";
genericName = "E-book library management";
icon = "@out@/share/calibre/images/library.png";
comment = "Manage, convert, edit, and read e-books";
mimeType = lib.concatStringsSep ";" [
"application/x-mobipocket-subscription"
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
"text/html"
"application/x-cbc"
"application/ereader"
"application/oebps-package+xml"
"image/vnd.djvu"
"application/x-sony-bbeb"
"application/vnd.ms-word.document.macroenabled.12"
"text/rtf"
"text/x-markdown"
"application/pdf"
"application/x-cbz"
"application/x-mobipocket-ebook"
"application/x-cbr"
"application/x-mobi8-ebook"
"text/fb2+xml"
"application/vnd.oasis.opendocument.text"
"application/epub+zip"
"text/plain"
"application/xhtml+xml"
];
categories = "Office";
extraEntries = ''
Actions=Edit;Viewer;
[Desktop Action Edit]
Name=Edit E-book
Icon=@out@/share/calibre/images/tweak.png
Exec=@out@/bin/ebook-edit --detach %F
[Desktop Action Viewer]
Name=E-book Viewer
Icon=@out@/share/calibre/images/viewer.png
Exec=@out@/bin/ebook-viewer --detach %F
'';
};
ebookEditDesktopItem = makeDesktopItem {
fileValidation = false; # fails before substitution
name = "calibre-edit-book";
desktopName = "Edit E-book";
genericName = "E-book Editor";
comment = "Edit e-books";
icon = "@out@/share/calibre/images/tweak.png";
exec = "@out@/bin/ebook-edit --detach %F";
categories = "Office;Publishing";
mimeType = "application/epub+zip";
extraEntries = "NoDisplay=true";
};
ebookViewerDesktopItem = makeDesktopItem {
fileValidation = false; # fails before substitution
name = "calibre-ebook-viewer";
desktopName = "E-book Viewer";
genericName = "E-book Viewer";
comment = "Read e-books in all the major formats";
icon = "@out@/share/calibre/images/viewer.png";
exec = "@out@/bin/ebook-viewer --detach %F";
categories = "Office;Viewer";
mimeType = "application/epub+zip";
extraEntries = "NoDisplay=true";
};
meta = with lib; { meta = with lib; {
description = "Comprehensive e-book software"; description = "Comprehensive e-book software";
homepage = "https://calibre-ebook.com"; homepage = "https://calibre-ebook.com";

View File

@ -1,12 +1,15 @@
{ lib, fetchurl, pythonPackages, gettext }: { lib, fetchFromGitHub, pythonPackages, gettext }:
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
pname = "cherrytree"; pname = "cherrytree";
version = "0.39.1"; version = "0.39.2";
src = fetchFromGitHub {
owner = "giuspen";
repo = "cherrytree";
rev = version;
sha256 = "1l6wh24bhp4yhmsfmc0r4n2n10nlilkv4cmv5sfl80i250fiw7xa";
src = fetchurl {
url = "https://www.giuspen.com/software/${pname}-${version}.tar.xz";
sha256 = "0qhycblnixvbybzr8psgmgcpfs6jc9m0p2h9lmd5zmiaggqlcsv7";
}; };
nativeBuildInputs = [ gettext ]; nativeBuildInputs = [ gettext ];
@ -20,17 +23,16 @@ pythonPackages.buildPythonApplication rec {
meta = with lib; { meta = with lib; {
description = "An hierarchical note taking application"; description = "An hierarchical note taking application";
longDescription = '' longDescription = ''
Cherrytree is an hierarchical note taking application, Cherrytree is an hierarchical note taking application, featuring rich
featuring rich text, syntax highlighting and powerful search text, syntax highlighting and powerful search capabilities. It organizes
capabilities. It organizes all information in units called all information in units called "nodes", as in a tree, and can be very
"nodes", as in a tree, and can be very useful to store any piece useful to store any piece of information, from tables and links to
of information, from tables and links to pictures and even entire pictures and even entire documents. All those little bits of information
documents. All those little bits of information you have scattered you have scattered around your hard drive can be conveniently placed into
around your hard drive can be conveniently placed into a a Cherrytree document where you can easily find it.
Cherrytree document where you can easily find it.
''; '';
homepage = "http://www.giuspen.com/cherrytree"; homepage = "http://www.giuspen.com/cherrytree";
license = licenses.gpl3; license = licenses.gpl3;
maintainers = with maintainers; [ AndersonTorres ]; maintainers = with maintainers; [ ];
}; };
} }

View File

@ -74,7 +74,7 @@ stdenv.mkDerivation rec {
wrapProgram $out/bin/far2l --argv0 $out/bin/far2l wrapProgram $out/bin/far2l --argv0 $out/bin/far2l
''; '';
stripDebugList = "bin share"; stripDebugList = [ "bin" "share" ];
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "notejot"; pname = "notejot";
version = "1.6.0"; version = "1.6.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lainsce"; owner = "lainsce";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "1b65m9gvq8ziqqgnw3vgjpjb1qw7bww40ngd3gardsjg9lcwpxaf"; sha256 = "170dzgd6cnf2k3hfifjysmdggpskx6v1pjmblqgbwaj2d3snf3h8";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -11,13 +11,13 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "sequeler"; pname = "sequeler";
version = "0.7.4"; version = "0.7.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Alecaddd"; owner = "Alecaddd";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0ki8dganj6hmvg5qwdlc3y0a4pdmx7454np790yf5wnqb6ixb6gv"; sha256 = "117gcc41rd24y5hpm3drqxfcfz52smpcr8w76xnykx8wb1ac50jf";
}; };
nativeBuildInputs = [ meson ninja pkgconfig vala gettext wrapGAppsHook python3 desktop-file-utils ]; nativeBuildInputs = [ meson ninja pkgconfig vala gettext wrapGAppsHook python3 desktop-file-utils ];

View File

@ -0,0 +1,41 @@
From dfa4bcafec4425659a409550085417af3c5c787b Mon Sep 17 00:00:00 2001
From: Florian Klink <flokli@flokli.de>
Date: Sat, 11 Apr 2020 12:38:38 +0200
Subject: [PATCH] core: fix libgit ifdef to handle libgit2 v1.0 and onwards
Conditional code for older libgit versions was removed in
https://github.com/Subsurface-divelog/subsurface/pull/2737,
but it's a non-trivial backport, and master currently isn't really ready
for a release.
So instead ship a patch fixing the one broken libgit2 conditional until
a 4.10 release has been made.
Note the inverted logic - the if branch now handles the old libgit
condition, and the else branch the newer versions, consistent with how
it's done in the rest of the subsurface codebase.
---
core/git-access.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/core/git-access.c b/core/git-access.c
index 3688cb90c..9997fc8fd 100644
--- a/core/git-access.c
+++ b/core/git-access.c
@@ -359,10 +359,10 @@ static int try_to_git_merge(git_repository *repo, git_reference **local_p, git_r
}
git_merge_init_options(&merge_options, GIT_MERGE_OPTIONS_VERSION);
-#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR > 23
- merge_options.flags = GIT_MERGE_FIND_RENAMES;
-#else
+#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR <= 22
merge_options.tree_flags = GIT_MERGE_TREE_FIND_RENAMES;
+#else
+ merge_options.flags = GIT_MERGE_FIND_RENAMES;
#endif
merge_options.file_favor = GIT_MERGE_FILE_FAVOR_UNION;
merge_options.rename_threshold = 100;
--
2.25.1

View File

@ -4,16 +4,22 @@
}: }:
let let
version = "4.8.2"; version = "4.9.3";
subsurfaceSrc = (fetchFromGitHub {
owner = "Subsurface-divelog";
repo = "subsurface";
rev = "v${version}";
sha256 = "1i07f7appifx9j205x5a7ng01wsipxr6n9a3692pm60jli2nsir5";
fetchSubmodules = true;
});
libdc = stdenv.mkDerivation { libdc = stdenv.mkDerivation {
pname = "libdivecomputer-ssrf"; pname = "libdivecomputer-ssrf";
inherit version; inherit version;
src = fetchurl { src = subsurfaceSrc;
url = "https://subsurface-divelog.org/downloads/libdivecomputer-subsurface-branch-${version}.tgz"; sourceRoot = "source/libdivecomputer";
sha256 = "167qan59raibmilkc574gdqxfjg2f5ww2frn86xzk2kn4qg8190w";
};
nativeBuildInputs = [ autoreconfHook ]; nativeBuildInputs = [ autoreconfHook ];
@ -70,10 +76,10 @@ in stdenv.mkDerivation {
pname = "subsurface"; pname = "subsurface";
inherit version; inherit version;
src = fetchurl { src = subsurfaceSrc;
url = "https://subsurface-divelog.org/downloads/Subsurface-${version}.tgz";
sha256 = "1fzrq6rqb6pzs36wxar2453cl509dqpcy9w7nq4gw7b1v2331wfy"; # remove with the 4.10 release
}; patches = [ ./0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch ];
buildInputs = [ buildInputs = [
libdc googlemaps libdc googlemaps

View File

@ -19,13 +19,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "ulauncher"; pname = "ulauncher";
version = "5.6.1"; version = "5.7.3";
disabled = python3Packages.isPy27; disabled = python3Packages.isPy27;
src = fetchurl { src = fetchurl {
url = "https://github.com/Ulauncher/Ulauncher/releases/download/${version}/ulauncher_${version}.tar.gz"; url = "https://github.com/Ulauncher/Ulauncher/releases/download/${version}/ulauncher_${version}.tar.gz";
sha256 = "14k68lp58wldldhaq4cf0ffkhi81czv4ps9xa86iw1j5b1gd2vbl"; sha256 = "0wq2zsq3496fjfg89q01dsm7sb7kv92sycvqm6ad8z1z2kpisrbh";
}; };
nativeBuildInputs = with python3Packages; [ nativeBuildInputs = with python3Packages; [
@ -71,7 +71,6 @@ python3Packages.buildPythonApplication rec {
patches = [ patches = [
./fix-path.patch ./fix-path.patch
./fix-permissions.patch # ulauncher PR #523
./0001-Adjust-get_data_path-for-NixOS.patch ./0001-Adjust-get_data_path-for-NixOS.patch
./fix-extensions.patch ./fix-extensions.patch
]; ];

View File

@ -1,12 +0,0 @@
diff --git a/ulauncher/utils/Theme.py b/ulauncher/utils/Theme.py
index 9cde624..4e36c4f 100644
--- a/ulauncher/utils/Theme.py
+++ b/ulauncher/utils/Theme.py
@@ -138,6 +138,9 @@ class Theme:
rmtree(new_theme_dir)
copytree(self.path, new_theme_dir)
+ # change file permissions (because Nix store is read-only)
+ os.chmod(new_theme_dir, 0o755)
+
return os.path.join(new_theme_dir, 'generated.css')

View File

@ -2,7 +2,7 @@
let let
pname = "Sylk"; pname = "Sylk";
version = "2.5.0"; version = "2.6.1";
in in
appimageTools.wrapType2 rec { appimageTools.wrapType2 rec {
@ -10,7 +10,7 @@ appimageTools.wrapType2 rec {
src = fetchurl { src = fetchurl {
url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage"; url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage";
sha256 = "1jhs25zzdac3r2wz886vlpb0bz77p52mdlrbsbv28h6is79pbd69"; hash = "sha256:0417qk925k7p3fiq1zha9al86jrz6mqspda7mi3h9blpbyvlcy7w";
}; };
profile = '' profile = ''

View File

@ -19,13 +19,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ephemeral"; pname = "ephemeral";
version = "6.3.1"; version = "6.3.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cassidyjames"; owner = "cassidyjames";
repo = "ephemeral"; repo = "ephemeral";
rev = version; rev = version;
sha256 = "13rl26lv5xgagiv21yp5pz69bkwh4nnz1lx9wryhsplki45xm1sq"; sha256 = "093bqc40p4s8jc1s5rg49363x24vnwwjayvgzmi4xag28f1x6kn8";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -15,13 +15,13 @@ with lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "kubernetes"; pname = "kubernetes";
version = "1.17.3"; version = "1.18.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kubernetes"; owner = "kubernetes";
repo = "kubernetes"; repo = "kubernetes";
rev = "v${version}"; rev = "v${version}";
sha256 = "0caqczz8hrwqb8j94158hz6919i7c9v1v0zknh9m2zbbng4b1awi"; sha256 = "1jp54aahwpx9w73byfyadgffrig9fy6x8xzw27xv0anj2v9bm1fw";
}; };
nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ]; nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];

View File

@ -3,13 +3,13 @@
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "bitlbee-discord"; pname = "bitlbee-discord";
version = "0.4.2"; version = "0.4.3";
src = fetchFromGitHub { src = fetchFromGitHub {
rev = version; rev = version;
owner = "sm00th"; owner = "sm00th";
repo = "bitlbee-discord"; repo = "bitlbee-discord";
sha256 = "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"; sha256 = "00qgdvrp7hv02n0ns685igp810zxmv3adsama8601122al6x041n";
}; };
nativeBuildInputs = [ autoreconfHook pkgconfig ]; nativeBuildInputs = [ autoreconfHook pkgconfig ];

View File

@ -2,13 +2,13 @@
let let
pname = "deltachat-electron"; pname = "deltachat-electron";
version = "1.1.0"; version = "1.2.0";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = url =
"https://download.delta.chat/desktop/r${version}/DeltaChat-${version}.AppImage"; "https://download.delta.chat/desktop/v${version}/DeltaChat-${version}.AppImage";
sha256 = "0pbn45cyv0h3fp7s9v9q93v12ah2gj7daaq0r3z140im6zv0rkrc"; sha256 = "Cyb34bfQEdwOA6XYZO+1Ri/2e/PRat15aUMn7IElmUI=";
}; };
appimageContents = appimageTools.extract { inherit name src; }; appimageContents = appimageTools.extract { inherit name src; };

View File

@ -0,0 +1,57 @@
{ stdenv
, fetchurl
, appimageTools
, makeWrapper
, electron_8
}:
stdenv.mkDerivation rec {
pname = "jitsi-meet-electron";
version = "2.0.0";
src = fetchurl {
url = "https://github.com/jitsi/jitsi-meet-electron/releases/download/v${version}/jitsi-meet-x86_64.AppImage";
sha256 = "11ci9dqhy8hkb4fwykjvcvai20ahqhjil825n1y1xf663ch8by93";
name="${pname}-${version}.AppImage";
};
appimageContents = appimageTools.extractType2 {
name = "${pname}-${version}";
inherit src;
};
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/${pname} $out/share/applications
cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
cp -a ${appimageContents}/jitsi-meet.desktop $out/share/applications/${pname}.desktop
cp -a ${appimageContents}/usr/share/icons $out/share
substituteInPlace $out/share/applications/${pname}.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
runHook postInstall
'';
postFixup = ''
makeWrapper ${electron_8}/bin/electron $out/bin/${pname} \
--add-flags $out/share/${pname}/resources/app.asar \
--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}"
'';
meta = with stdenv.lib; {
description = "Jitsi Meet desktop application powered by Electron";
homepage = "https://github.com/jitsi/jitsi-meet-electron";
license = licenses.asl20;
maintainers = with maintainers; [ prusnak ];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -1,7 +1,6 @@
{ stdenv, fetchFromGitHub { stdenv, fetchFromGitHub
, makeWrapper, makeDesktopItem, mkYarnPackage , makeWrapper, makeDesktopItem, mkYarnPackage
, electron_7, riot-web, gtk3 , electron_7, riot-web
, wrapGAppsHook, glib
}: }:
# Notes for maintainers: # Notes for maintainers:
# * versions of `riot-web` and `riot-desktop` should be kept in sync. # * versions of `riot-web` and `riot-desktop` should be kept in sync.
@ -27,14 +26,7 @@ in mkYarnPackage rec {
packageJSON = ./riot-desktop-package.json; packageJSON = ./riot-desktop-package.json;
yarnNix = ./riot-desktop-yarndeps.nix; yarnNix = ./riot-desktop-yarndeps.nix;
nativeBuildInputs = [ wrapGAppsHook ]; nativeBuildInputs = [ makeWrapper ];
extraBuildInputs = [
glib
gtk3
];
dontWrapGApps = true;
installPhase = '' installPhase = ''
# resources # resources
@ -54,13 +46,10 @@ in mkYarnPackage rec {
# desktop item # desktop item
mkdir -p "$out/share" mkdir -p "$out/share"
ln -s "${desktopItem}/share/applications" "$out/share/applications" ln -s "${desktopItem}/share/applications" "$out/share/applications"
'';
postFixup = ''
# executable wrapper # executable wrapper
makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \ makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
--add-flags "$out/share/riot/electron" \ --add-flags "$out/share/riot/electron"
"''${gappsWrapperArgs[@]}"
''; '';
# Do not attempt generating a tarball for riot-web again. # Do not attempt generating a tarball for riot-web again.

View File

@ -15,11 +15,11 @@ assert pulseaudioSupport -> libpulseaudio != null;
let let
inherit (stdenv.lib) concatStringsSep makeBinPath optional; inherit (stdenv.lib) concatStringsSep makeBinPath optional;
version = "3.5.383291.0407"; version = "3.5.385850.0413";
srcs = { srcs = {
x86_64-linux = fetchurl { x86_64-linux = fetchurl {
url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz"; url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
sha256 = "1l560gv1wpfiggxylz3f62mcjjchpq3p0i1j4b2b68ckgc5sj80k"; sha256 = "049kxgkyaxknxpk0hf1a7bxn0c08dk250z3q2ba9pc1xkrn5kdnw";
}; };
}; };

View File

@ -12,7 +12,9 @@
, json-glib , json-glib
, libsoup , libsoup
, libgee , libgee
, wrapGAppsHook }: , wrapGAppsHook
, vala_0_40
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ping"; pname = "ping";
@ -28,7 +30,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ nativeBuildInputs = [
meson meson
ninja ninja
vala vala_0_40
pkgconfig pkgconfig
python3 python3
wrapGAppsHook wrapGAppsHook

View File

@ -1,20 +1,21 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig { stdenv, lib, fetchFromGitHub, cmake, pkgconfig, alsaLib, ffmpeg, glib, openssl
, alsaLib, ffmpeg, glib, openssl, pcre, zlib , pcre, zlib, libX11, libXcursor, libXdamage, libXext, libXi, libXinerama
, libX11, libXcursor, libXdamage, libXext, libXi, libXinerama, libXrandr, libXrender, libXv, libXtst , libXrandr, libXrender, libXv, libXtst, libxkbcommon, libxkbfile, wayland
, libxkbcommon, libxkbfile , gstreamer, gst-plugins-base, gst-plugins-good, libunwind, orc, libxslt
, wayland , libusb1, libpulseaudio ? null, cups ? null, pcsclite ? null, systemd ? null
, gstreamer, gst-plugins-base, gst-plugins-good, libunwind, orc , buildServer ? true, nocaps ? false }:
, libxslt
, libusb1
, libpulseaudio ? null
, cups ? null
, pcsclite ? null
, systemd ? null
, buildServer ? true
, nocaps ? false
}:
stdenv.mkDerivation rec { let
cmFlag = flag: if flag then "ON" else "OFF";
disabledTests = [
# this one is probably due to our sandbox
{
dir = "libfreerdp/crypto/test";
file = "Test_x509_cert_info.c";
}
];
in stdenv.mkDerivation rec {
pname = "freerdp"; pname = "freerdp";
version = "2.0.0"; version = "2.0.0";
@ -25,10 +26,16 @@ stdenv.mkDerivation rec {
sha256 = "0d2559v0z1jnq6jlrvsgdf8p6gd27m8kwdnxckl1x0ygaxs50bqc"; sha256 = "0d2559v0z1jnq6jlrvsgdf8p6gd27m8kwdnxckl1x0ygaxs50bqc";
}; };
# outputs = [ "bin" "out" "dev" ]; postPatch = ''
prePatch = ''
export HOME=$TMP export HOME=$TMP
# failing test(s)
${lib.concatMapStringsSep "\n" (e: ''
substituteInPlace ${e.dir}/CMakeLists.txt \
--replace ${e.file} ""
rm ${e.dir}/${e.file}
'') disabledTests}
substituteInPlace "libfreerdp/freerdp.pc.in" \ substituteInPlace "libfreerdp/freerdp.pc.in" \
--replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@" --replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@"
'' + lib.optionalString (pcsclite != null) '' '' + lib.optionalString (pcsclite != null) ''
@ -39,32 +46,54 @@ stdenv.mkDerivation rec {
--replace "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL" --replace "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL"
''; '';
buildInputs = with lib; [ buildInputs = with lib;
alsaLib cups ffmpeg glib openssl pcre pcsclite libpulseaudio zlib [
gstreamer gst-plugins-base gst-plugins-good libunwind orc alsaLib
libX11 libXcursor libXdamage libXext libXi libXinerama libXrandr libXrender libXv libXtst cups
libxkbcommon libxkbfile ffmpeg
wayland libusb1 glib
gst-plugins-base
gst-plugins-good
gstreamer
libX11
libXcursor
libXdamage
libXext
libXi
libXinerama
libXrandr
libXrender
libXtst
libXv
libpulseaudio
libunwind
libusb1
libxkbcommon
libxkbfile
libxslt libxslt
openssl
orc
pcre
pcsclite
wayland
zlib
] ++ optional stdenv.isLinux systemd; ] ++ optional stdenv.isLinux systemd;
nativeBuildInputs = [ nativeBuildInputs = [ cmake pkgconfig ];
cmake pkgconfig
];
enableParallelBuilding = true; doCheck = true;
doCheck = false; cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ]
++ lib.mapAttrsToList (k: v: "-D${k}=${if v then "ON" else "OFF"}") {
cmakeFlags = with lib; [ BUILD_TESTING = doCheck;
"-DCMAKE_INSTALL_LIBDIR=lib" WITH_CUNIT = doCheck;
"-DWITH_CUNIT=OFF" WITH_CUPS = (cups != null);
"-DWITH_OSS=OFF" WITH_OSS = false;
] ++ optional (libpulseaudio != null) "-DWITH_PULSE=ON" WITH_PCSC = (pcsclite != null);
++ optional (cups != null) "-DWITH_CUPS=ON" WITH_PULSE = (libpulseaudio != null);
++ optional (pcsclite != null) "-DWITH_PCSC=ON" WITH_SERVER = buildServer;
++ optional buildServer "-DWITH_SERVER=ON" WITH_SSE2 = stdenv.isx86_64;
++ optional (stdenv.isx86_64) "-DWITH_SSE2=ON"; };
meta = with lib; { meta = with lib; {
description = "A Remote Desktop Protocol Client"; description = "A Remote Desktop Protocol Client";
@ -72,7 +101,7 @@ stdenv.mkDerivation rec {
FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP)
following the Microsoft Open Specifications. following the Microsoft Open Specifications.
''; '';
homepage = "http://www.freerdp.com/"; homepage = "https://www.freerdp.com/";
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [ peterhoeg lheckemann ]; maintainers = with maintainers; [ peterhoeg lheckemann ];
platforms = platforms.unix; platforms = platforms.unix;

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "testssl.sh"; pname = "testssl.sh";
version = "3.0rc6"; version = "3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "drwetter"; owner = "drwetter";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "1ks7pqgrg382ry0a0jf1dwgcwv81snhkrhkjdbcpym6w5flmpjsv"; sha256 = "08i1l835zlzb3qmsnsd5vhsrr82li6fnp5jqxiybbqr5wjz67ssd";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View File

@ -1,7 +1,9 @@
{ stdenv { stdenv
, fetchFromGitHub , fetchFromGitHub
, pantheon , pantheon
, cmake , meson
, ninja
, python3
, pkg-config , pkg-config
, vala , vala
, gettext , gettext
@ -13,20 +15,23 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "agenda"; pname = "agenda";
version = "1.0.12"; version = "1.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dahenson"; owner = "dahenson";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "128c9p2jkc90imlq25xg5alqlam8q4i3gd5p1kcggf7s4amv8l8w"; sha256 = "0yfapapsanqacaa83iagar88i335yy2jvay8y6z7gkri7avbs4am";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
cmake
gettext gettext
vala glib # for glib-compile-schemas
meson
ninja
pkg-config pkg-config
python3
vala
wrapGAppsHook wrapGAppsHook
]; ];
@ -37,6 +42,13 @@ stdenv.mkDerivation rec {
pantheon.granite pantheon.granite
]; ];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
doCheck = true;
passthru = { passthru = {
updateScript = pantheon.updateScript { updateScript = pantheon.updateScript {
attrPath = pname; attrPath = pname;

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "atlassian-cli"; pname = "atlassian-cli";
version = "9.1.1"; version = "9.2.0";
src = fetchzip { src = fetchzip {
url = "https://bobswift.atlassian.net/wiki/download/attachments/16285777/${pname}-${version}-distribution.zip"; url = "https://bobswift.atlassian.net/wiki/download/attachments/16285777/${pname}-${version}-distribution.zip";
sha256 = "0mdf4ybp0a6c816210g76lx901qwxw727ipyiph5kbdzl4jlrpgm"; sha256 = "0rdnbx3zfz3lpgka7bb8jzapkr81l2yvgsbmn8hrhva5k61xwx3d";
extraPostFetch = "chmod go-w $out"; extraPostFetch = "chmod go-w $out";
}; };

View File

@ -1,15 +1,16 @@
{ stdenv, fetchFromGitHub, pantheon, vala, python3, python2, pkgconfig, libxml2, meson, ninja, gtk3, gnome3, glib, webkitgtk, libgee { stdenv, fetchFromGitHub, pantheon, vala, python3, python2, pkgconfig, libxml2, meson, ninja, gtk3, gnome3, glib, webkitgtk, libgee
, gobject-introspection, sqlite, poppler, poppler_utils, html2text, curl, gnugrep, coreutils, bash, unzip, unar, wrapGAppsHook }: , gobject-introspection, sqlite, poppler, poppler_utils, html2text, curl, gnugrep, coreutils, bash, unzip, unar, wrapGAppsHook
, appstream, desktop-file-utils }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "bookworm"; pname = "bookworm";
version = "unstable-2018-11-19"; version = "1.1.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "babluboy"; owner = "babluboy";
repo = pname; repo = pname;
rev = "4c3061784ff42151cac77d12bf2a28bf831fdfc5"; rev = version;
sha256 = "0yrqxa60xlvz249kx966z5krx8i7h17ac0hjgq9p8f0irzy5yp0n"; sha256 = "0w0rlyahpgx0l6inkbj106agbnr2czil0vdcy1zzv70apnjz488j";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -35,6 +36,8 @@ stdenv.mkDerivation rec {
python2 python2
sqlite sqlite
webkitgtk webkitgtk
appstream
desktop-file-utils
]; ];
postPatch = '' postPatch = ''

View File

@ -1,67 +1,112 @@
{ stdenv, fetchurl { stdenv
, libX11, glib, xorg, fontconfig, freetype , mkDerivation
, zlib, libpng12, libICE, libXrender, cups , fetchurl
, alsaLib, atk, cairo, dbus, expat , autoPatchelfHook
, gdk-pixbuf, gtk2-x11, lzma, pango, zotero , dpkg
, sqlite, libuuid, qt5, dpkg }: , wrapGAppsHook
, wrapQtAppsHook
, alsaLib
, atk
, bzip2
, cairo
, cups
, dbus
, expat
, ffmpeg_3
, fontconfig
, freetype
, gdk-pixbuf
, glib
, gperftools
, gtk2-x11
, libpng12
, libtool
, libuuid
, libxml2
, lzma
, nspr
, nss
, openssl
, pango
, qt4
, qtbase
, sqlite
, unixODBC
, xorg
, zlib
}:
stdenv.mkDerivation rec{ stdenv.mkDerivation rec{
pname = "wpsoffice"; pname = "wpsoffice";
version = "11.1.0.9080"; version = "11.1.0.9505";
src = fetchurl { src = fetchurl {
url = "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/9080/wps-office_11.1.0.9080.XA_amd64.deb"; url = "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/9505/wps-office_11.1.0.9505.XA_amd64.deb";
sha256 = "1731e9aea22ef4e558ad66b1373d863452b4f570aecf09d448ae28a821333454"; sha256 = "1bvaxwd3npw3kswk7k1p6mcbfg37x0ym4sp6xis6ykz870qivqk5";
}; };
unpackCmd = "dpkg -x $src ."; unpackCmd = "dpkg -x $src .";
sourceRoot = "."; sourceRoot = ".";
nativeBuildInputs = [ qt5.wrapQtAppsHook dpkg ]; postUnpack = stdenv.lib.optionalString (version == "11.1.0.9505") ''
# distribution is missing libjsapiservice.so, so we should not let
# autoPatchelfHook fail on the following dead libraries
rm opt/kingsoft/wps-office/office6/{libjsetapi.so,libjswppapi.so,libjswpsapi.so}
'';
nativeBuildInputs = [ autoPatchelfHook dpkg wrapGAppsHook wrapQtAppsHook ];
meta = { meta = {
description = "Office program originally named Kingsoft Office"; description = "Office program originally named Kingsoft Office";
homepage = "http://wps-community.org/"; homepage = "http://wps-community.org/";
platforms = [ "i686-linux" "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
hydraPlatforms = []; hydraPlatforms = [];
license = stdenv.lib.licenses.unfreeRedistributable; license = stdenv.lib.licenses.unfreeRedistributable;
maintainers = [ stdenv.lib.maintainers.mlatus ]; maintainers = [ stdenv.lib.maintainers.mlatus ];
}; };
libPath = with xorg; stdenv.lib.makeLibraryPath [ buildInputs = with xorg; [
libX11
libpng12
glib
libSM
libXext
fontconfig
zlib
freetype
libICE
cups
libXrender
libxcb
alsaLib alsaLib
atk atk
bzip2
cairo cairo
dbus.daemon.lib dbus.lib
expat expat
fontconfig.lib ffmpeg_3
fontconfig
freetype
gdk-pixbuf gdk-pixbuf
glib
gperftools
gtk2-x11 gtk2-x11
lzma libICE
pango libSM
zotero libX11
sqlite libX11
libuuid libXScrnSaver
libXcomposite libXcomposite
libXcursor libXcursor
libXdamage libXdamage
libXext
libXfixes libXfixes
libXi libXi
libXrandr libXrandr
libXScrnSaver libXrender
libXtst libXtst
libpng12
libtool
libuuid
libxcb
libxml2
lzma
nspr
nss
openssl
pango
qt4
qtbase
sqlite
unixODBC
zlib
]; ];
dontPatchELF = true; dontPatchELF = true;
@ -70,25 +115,59 @@ stdenv.mkDerivation rec{
# references to nix own build directory # references to nix own build directory
noAuditTmpdir = true; noAuditTmpdir = true;
unvendoredLibraries = [
# Have to use parts of the vendored qt4
#"Qt"
"SDL2"
"bz2"
"avcodec"
"avdevice"
"avformat"
"avutil"
"swresample"
"swscale"
"jpeg"
"png"
# File saving breaks unless we are using vendored llvmPackages_8.libcxx
#"c++"
"ssl" "crypto"
"nspr"
"nss"
"odbc"
"tcmalloc" # gperftools
];
installPhase = '' installPhase = ''
prefix=$out/opt/kingsoft/wps-office prefix=$out/opt/kingsoft/wps-office
mkdir -p $out mkdir -p $out
cp -r opt $out cp -r opt $out
cp -r usr/* $out cp -r usr/* $out
# Avoid forbidden reference error due use of patchelf for lib in $unvendoredLibraries; do
rm -r * rm -v "$prefix/office6/lib$lib"*.so{,.*}
done
for i in wps wpp et wpspdf; do for i in wps wpp et wpspdf; do
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--force-rpath --set-rpath "$(patchelf --print-rpath $prefix/office6/$i):${stdenv.cc.cc.lib}/lib64:${libPath}" \
$prefix/office6/$i
substituteInPlace $out/bin/$i \ substituteInPlace $out/bin/$i \
--replace /opt/kingsoft/wps-office $prefix --replace /opt/kingsoft/wps-office $prefix
done done
for i in $out/share/applications/*;do for i in $out/share/applications/*;do
substituteInPlace $i \ substituteInPlace $i \
--replace /usr/bin $out/bin \ --replace /usr/bin $out/bin
--replace /opt/kingsoft/wps-office $prefix done
'';
runtimeLibPath = stdenv.lib.makeLibraryPath [
cups.lib
];
dontWrapQtApps = true;
dontWrapGApps = true;
postFixup = ''
for f in "$out"/bin/*; do
echo "Wrapping $f"
wrapProgram "$f" \
"''${gappsWrapperArgs[@]}" \
"''${qtWrapperArgs[@]}" \
--suffix LD_LIBRARY_PATH : "$runtimeLibPath"
done done
''; '';
} }

View File

@ -4,11 +4,11 @@
}: }:
python2.pkgs.buildPythonApplication rec { python2.pkgs.buildPythonApplication rec {
pname = "chirp-daily"; pname = "chirp-daily";
version = "20200213"; version = "20200409";
src = fetchurl { src = fetchurl {
url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${pname}-${version}.tar.gz"; url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${pname}-${version}.tar.gz";
sha256 = "189kg3425wggib1cggcj49bk01pq3j4b8mks7najpp1rjsl5f2i1"; sha256 = "16zhwg2xmp5kpqx5isavwwkfq1212zgfj8gbp453ngjcrvp3m4lq";
}; };
propagatedBuildInputs = with python2.pkgs; [ propagatedBuildInputs = with python2.pkgs; [

View File

@ -1,5 +1,6 @@
{ stdenv { stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, pkgconfig , pkgconfig
, vala , vala
, gtk3 , gtk3
@ -25,6 +26,14 @@ stdenv.mkDerivation rec {
sha256 = "036v3dx8yasp19j88lflibqnpfi5d0nk7qkcnr80zn1lvawf4wgn"; sha256 = "036v3dx8yasp19j88lflibqnpfi5d0nk7qkcnr80zn1lvawf4wgn";
}; };
patches = [
# fix build with gcc9
(fetchpatch {
url = "https://github.com/parnold-x/nasc/commit/46b9b80e228b6b86001bded45d85e073a9411549.patch";
sha256 = "1sm2aw0xhw2chk036r231nmp2f2ypxcmzggwljkn7wfzgg3h1mx3";
})
];
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
vala vala

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gp2c"; pname = "gp2c";
version = "0.0.11pl2"; version = "0.0.11pl3";
src = fetchurl { src = fetchurl {
url = "https://pari.math.u-bordeaux.fr/pub/pari/GP2C/${pname}-${version}.tar.gz"; url = "https://pari.math.u-bordeaux.fr/pub/pari/GP2C/${pname}-${version}.tar.gz";
sha256 = "0wqsf05wgkqvmmsx7jinvzdqav6rl56sr8haibgs31nzz4x9xz9g"; sha256 = "0yymbrgyjw500hqgmkj5m4nmscd7c9rs9w2c96lxgrcyab8krhrm";
}; };
buildInputs = [ pari perl ]; buildInputs = [ pari perl ];
@ -25,4 +25,3 @@ stdenv.mkDerivation rec {
maintainers = with maintainers; [ AndersonTorres ]; maintainers = with maintainers; [ AndersonTorres ];
}; };
} }
# TODO: add it as "source file" for default package

View File

@ -18,13 +18,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "monitor"; pname = "monitor";
version = "0.6.2"; version = "0.7.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "stsdc"; owner = "stsdc";
repo = "monitor"; repo = "monitor";
rev = version; rev = version;
sha256 = "0cqzxlzdbij26qgbbngqx6njcpcymkgvm29b7ipldgkssxp1mkkg"; sha256 ="194s9rjh3yd2c3rf3zwxsxr2lwqfswjazj39yiyccy0wcxmxpv34";
fetchSubmodules = true;
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -61,6 +62,11 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Manage processes and monitor system resources"; description = "Manage processes and monitor system resources";
longDescription = ''
Manage processes and monitor system resources.
To use the wingpanel indicator in this application, see the Pantheon
section in the NixOS manual.
'';
homepage = "https://github.com/stsdc/monitor"; homepage = "https://github.com/stsdc/monitor";
maintainers = with maintainers; [ kjuvi ] ++ pantheon.maintainers; maintainers = with maintainers; [ kjuvi ] ++ pantheon.maintainers;
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -2,23 +2,23 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "git-trim"; pname = "git-trim";
version = "0.2.4"; version = "0.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "foriequal0"; owner = "foriequal0";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0gfmv9bwhh6bv0s9kfbxq9wsvrk3zz3ibavbpp9l8cpqc3145pqy"; sha256 = "06wni47s8yq274bh5f7bcy0sah23938kjiw5pdxnma5kwwnrccrr";
}; };
cargoSha256 = "0xklczk4vbh2mqf76r3rsfyclyza9imf6yss7vbkm9w4ir3ar9f3"; cargoSha256 = "06ndja8212xy4rybh1117wijsyj70w4z8h6km538a7598s49vzdk";
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ]; buildInputs = [ openssl ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ];
postInstall = '' postInstall = ''
install -Dm644 docs/git-trim.md.1 $out/share/man/man1/git-trim.1 install -Dm644 -t $out/share/man/man1/ docs/git-trim.1
''; '';
# fails with sandbox # fails with sandbox

View File

@ -5,14 +5,15 @@ set -eu -o pipefail
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion git" | tr -d '"')" oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion git" | tr -d '"')"
latestTag="$(git ls-remote --tags --sort="v:refname" git://github.com/git/git.git | grep -v '\{\}' | grep -v '\-rc' | tail -1 | sed 's|^.*/v\(.*\)|\1|')" latestTag="$(git ls-remote --tags --sort="v:refname" git://github.com/git/git.git | grep -v '\{\}' | grep -v '\-rc' | tail -1 | sed 's|^.*/v\(.*\)|\1|')"
targetVersion="${1:-latestTag}"
if [ ! "${oldVersion}" = "${latestTag}" ]; then if [ ! "${oldVersion}" = "${targetVersion}" ]; then
update-source-version git "${latestTag}" update-source-version git "${targetVersion}"
nixpkgs="$(git rev-parse --show-toplevel)" nixpkgs="$(git rev-parse --show-toplevel)"
default_nix="$nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix" default_nix="$nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix"
nix-build -A git nix-build -A git
git add "${default_nix}" git add "${default_nix}"
git commit -m "git: ${oldVersion} -> ${latestTag}" git commit -m "git: ${oldVersion} -> ${targetVersion}"
else else
echo "git is already up-to-date" echo "git is already up-to-date"
fi fi

View File

@ -31,10 +31,13 @@ stdenv.mkDerivation rec {
make install make install
make install-doc make install-doc
substituteInPlace contrib/tig-completion.zsh \ # fixes tig-completion __git-complete dependency
--replace 'e=$(dirname ''${funcsourcetrace[1]%:*})/tig-completion.bash' "e=$out/etc/bash_completion.d/tig-completion.bash" sed -i '1s;^;source ${git}/share/bash-completion/completions/git\n;' contrib/tig-completion.bash
install -D contrib/tig-completion.bash $out/etc/bash_completion.d/tig-completion.bash substituteInPlace contrib/tig-completion.zsh \
--replace 'e=$(dirname ''${funcsourcetrace[1]%:*})/tig-completion.bash' "e=$out/share/bash-completion/completions/tig"
install -D contrib/tig-completion.bash $out/share/bash-completion/completions/tig
install -D contrib/tig-completion.zsh $out/share/zsh/site-functions/_tig install -D contrib/tig-completion.zsh $out/share/zsh/site-functions/_tig
cp contrib/vim.tigrc $out/etc/ cp contrib/vim.tigrc $out/etc/

View File

@ -52,7 +52,7 @@
, xvSupport ? stdenv.isLinux, libXv ? null , xvSupport ? stdenv.isLinux, libXv ? null
, youtubeSupport ? true, youtube-dl ? null , youtubeSupport ? true, youtube-dl ? null
, zimgSupport ? true, zimg ? null , zimgSupport ? true, zimg ? null
, archiveSupport ? false, libarchive ? null , archiveSupport ? true, libarchive ? null
, jackaudioSupport ? false, libjack2 ? null , jackaudioSupport ? false, libjack2 ? null
, openalSupport ? true, openalSoft ? null , openalSupport ? true, openalSoft ? null
, vapoursynthSupport ? false, vapoursynth ? null , vapoursynthSupport ? false, vapoursynth ? null

View File

@ -4,13 +4,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wf-recorder"; pname = "wf-recorder";
version = "0.2"; version = "0.2.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ammen99"; owner = "ammen99";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "1772hrd7j8b32y65x5c392kdijlcn13iqg9hrlagfar92102vsbf"; sha256 = "1cw6kpcbl33wh95pvy32xrsrm6kkk1awccr3phyh885xjs3b3iim";
}; };
nativeBuildInputs = [ meson ninja pkg-config wayland scdoc ]; nativeBuildInputs = [ meson ninja pkg-config wayland scdoc ];

View File

@ -20,7 +20,7 @@ let
buildTags = "apparmor seccomp selinux containers_image_ostree_stub"; buildTags = "apparmor seccomp selinux containers_image_ostree_stub";
in buildGoPackage rec { in buildGoPackage rec {
project = "cri-o"; project = "cri-o";
version = "1.17.1"; version = "1.17.3";
name = "${project}-${version}${flavor}"; name = "${project}-${version}${flavor}";
goPackagePath = "github.com/${project}/${project}"; goPackagePath = "github.com/${project}/${project}";
@ -29,7 +29,7 @@ in buildGoPackage rec {
owner = "cri-o"; owner = "cri-o";
repo = "cri-o"; repo = "cri-o";
rev = "v${version}"; rev = "v${version}";
sha256 = "0zipigjcnhcnn0w69dkd8312qb6z98l65ir175wp3jfvj4cx3g28"; sha256 = "1cy2lqasfn5n20vlm3ckb6myci8ya6qv08dw8fq7z4ycnm39r1a6";
}; };
outputs = [ "bin" "out" ]; outputs = [ "bin" "out" ];

View File

@ -1,24 +1,32 @@
{ stdenv, fetchFromGitHub, pkgconfig, installShellFiles { stdenv
, buildGoPackage, gpgme, lvm2, btrfs-progs, libseccomp, systemd , fetchFromGitHub
, pkg-config
, installShellFiles
, buildGoPackage
, gpgme
, lvm2
, btrfs-progs
, libseccomp
, systemd
, go-md2man , go-md2man
}: }:
buildGoPackage rec { buildGoPackage rec {
pname = "podman"; pname = "podman";
version = "1.8.2"; version = "1.9.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "containers"; owner = "containers";
repo = "libpod"; repo = "libpod";
rev = "v${version}"; rev = "v${version}";
sha256 = "1nxlkqz1ffa3l2yf4rmsxj788dx6xdp8pbi55m9jc9k1vqwc9hxs"; sha256 = "19y48lpf7pvw5f5pzpknn92rq9xwbrpvi8mj7mc4dby6skqadrk4";
}; };
goPackagePath = "github.com/containers/libpod"; goPackagePath = "github.com/containers/libpod";
outputs = [ "bin" "out" "man" ]; outputs = [ "bin" "out" "man" ];
nativeBuildInputs = [ pkgconfig go-md2man installShellFiles ]; nativeBuildInputs = [ pkg-config go-md2man installShellFiles ];
buildInputs = stdenv.lib.optionals stdenv.isLinux [ btrfs-progs libseccomp gpgme lvm2 systemd ]; buildInputs = stdenv.lib.optionals stdenv.isLinux [ btrfs-progs libseccomp gpgme lvm2 systemd ];

View File

@ -6,6 +6,7 @@
, libpthreadstubs, pcre, libXdamage, libXcomposite, libXfixes , libpthreadstubs, pcre, libXdamage, libXcomposite, libXfixes
, libsndfile, fribidi }: , libsndfile, fribidi }:
with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "icewm"; pname = "icewm";
version = "1.6.5"; version = "1.6.5";
@ -34,13 +35,13 @@ stdenv.mkDerivation rec {
cp -r ../lib/themes/{gtk2,Natural,nice,nice2,warp3,warp4,yellowmotif} $out/share/icewm/themes/ cp -r ../lib/themes/{gtk2,Natural,nice,nice2,warp3,warp4,yellowmotif} $out/share/icewm/themes/
''; '';
meta = with stdenv.lib; { meta = {
description = "A simple, lightweight X window manager"; description = "A simple, lightweight X window manager";
longDescription = '' longDescription = ''
IceWM is a window manager for the X Window System. The goal of IceWM is a window manager for the X Window System. The goal of
IceWM is speed, simplicity, and not getting in the user's way. IceWM is speed, simplicity, and not getting in the user's way.
''; '';
homepage = "http://www.icewm.org/"; homepage = "https://www.ice-wm.org/";
license = licenses.lgpl2; license = licenses.lgpl2;
maintainers = [ maintainers.AndersonTorres ]; maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -16,6 +16,9 @@
++ [crateFeatures] ++ [crateFeatures]
++ extraRustcOpts ++ extraRustcOpts
++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "--target ${rust.toRustTarget stdenv.hostPlatform} -C linker=${stdenv.hostPlatform.config}-gcc" ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "--target ${rust.toRustTarget stdenv.hostPlatform} -C linker=${stdenv.hostPlatform.config}-gcc"
# since rustc 1.42 the "proc_macro" crate is part of the default crate prelude
# https://github.com/rust-lang/cargo/commit/4d64eb99a4#diff-7f98585dbf9d30aa100c8318e2c77e79R1021-R1022
++ lib.optional (lib.elem "proc-macro" crateType) "--extern proc_macro"
; ;
rustcMeta = "-C metadata=${metadata} -C extra-filename=-${metadata}"; rustcMeta = "-C metadata=${metadata} -C extra-filename=-${metadata}";

View File

@ -457,6 +457,18 @@ let
"test ignore_main ... ok" "test ignore_main ... ok"
]; ];
}; };
procMacroInPrelude = {
procMacro = true;
edition = "2018";
src = symlinkJoin {
name = "proc-macro-in-prelude";
paths = [
(mkFile "src/lib.rs" ''
use proc_macro::TokenTree;
'')
];
};
};
}; };
brotliCrates = (callPackage ./brotli-crates.nix {}); brotliCrates = (callPackage ./brotli-crates.nix {});
tests = lib.mapAttrs (key: value: mkTest (value // lib.optionalAttrs (!value?crateName) { crateName = key; })) cases; tests = lib.mapAttrs (key: value: mkTest (value // lib.optionalAttrs (!value?crateName) { crateName = key; })) cases;

View File

@ -1,4 +1,4 @@
{ stdenv, makeWrapper, coreutils, gnused, gnugrep, diffutils, nix }: { stdenv, makeWrapper, coreutils, gnused, gnugrep, diffutils, nix, git }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "common-updater-scripts"; name = "common-updater-scripts";
@ -12,7 +12,7 @@ stdenv.mkDerivation {
cp ${./scripts}/* $out/bin cp ${./scripts}/* $out/bin
for f in $out/bin/*; do for f in $out/bin/*; do
wrapProgram $f --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnused gnugrep nix diffutils ]} wrapProgram $f --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnused gnugrep nix diffutils git ]}
done done
''; '';
} }

View File

@ -0,0 +1,35 @@
#! /bin/sh
# lists all available versions listed for a package in a site (http)
scriptName=list-archive-two-level-versions # do not use the .wrapped name
usage() {
echo "Usage: $scriptName <archive url> [<package name> [<debug file path>]]"
}
archive="$1" # archive url
pname="$2" # package name
file="$3" # file for writing debugging information
if [ -z "$archive" ]; then
echo "$scriptName: Missing archive url"
usage
exit 1
fi
# print a debugging message
if [ -n "$file" ]; then
echo "# Listing versions for $pname at $archive" >> $file
fi
# list all major-minor versions from archive
tags1=$(curl -sS "$archive/")
tags1=$(echo "$tags1" | sed -rne 's,^<a href="([0-9]+\.[0-9]+)/">.*,\1,p')
# print available versions
for tag in $tags1; do
tags2=$(curl -sS "$archive/$tag/")
tags2=$(echo "$tags2" | sed -rne "s,^<a href=\"$pname-([0-9.]+)\\.[^0-9].*\">.*,\\1,p")
echo "$tags2"
done

View File

@ -0,0 +1,32 @@
#! /bin/sh -x
# lists all available tags from a git repository
scriptName=list-git-tags # do not use the .wrapped name
usage() {
echo "Usage: $scriptName <repository url> [<package name> [<debug file path>]]"
}
repo="$1" # git repository url
pname="$2" # package name
file="$3" # file for writing debugging information
if [ -z "$repo" ]; then
echo "$scriptName: Missing git repository url"
usage
exit 1
fi
# print a debugging message
if [ -n "$file" ]; then
echo "# Listing tags for $pname at $repo" >> $file
fi
# list all tags from the remote repository
tags=$(git ls-remote --tags --refs "$repo")
# keep only the version part of the tag
tags=$(echo "$tags" | cut --delimiter=/ --field=3)
echo "$tags"

View File

@ -0,0 +1,98 @@
{ stdenv, writeScript, coreutils, gnugrep, gnused, common-updater-scripts, nix }:
{ pname
, version
, attrPath ? pname
, versionLister
, rev-prefix ? ""
, odd-unstable ? true
, patchlevel-unstable ? true
}:
let
# where to print git commands and debugging messages
fileForGitCommands = "update-git-commits.txt";
# shell script to update package
updateScript = writeScript "update-script.sh" ''
#! ${stdenv.shell}
set -o errexit
set -x
pname="$1"
version="$2"
attr_path="$3"
version_lister="$4"
rev_prefix="$5"
odd_unstable="$6"
patchlevel_unstable="$7"
# print header
echo "# $pname-$version" >> ${fileForGitCommands}
function version_is_unstable() {
local tag="$1"
local enforce="$2"
if [ -n "$odd_unstable" -o -n "$enforce" ]; then
local minor=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.([0-9]+).*,\1,p')
if [ $((minor % 2)) -eq 1 ]; then
return 0
fi
fi
if [ -n "$patchlevel_unstable" -o -n "$enforce" ]; then
local patchlevel=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.[0-9]+\.([0-9]+).*$,\1,p')
if ((patchlevel >= 90)); then
return 0
fi
fi
return 1
}
tags=$($version_lister $pname ${fileForGitCommands}) || exit 1
# print available tags
for tag in $tags; do
echo "# found $pname version: $tag" >> ${fileForGitCommands}
done
# cut any revision prefix not used in the NixOS package version
if [ -n "$rev_prefix" ]; then
tags=$(echo "$tags" | ${gnugrep}/bin/grep "^$rev_prefix")
tags=$(echo "$tags" | ${gnused}/bin/sed -e "s,^$rev_prefix,,")
fi
tags=$(echo "$tags" | ${gnugrep}/bin/grep "^[0-9]")
# sort the tags in decreasing order
tags=$(echo "$tags" | ${coreutils}/bin/sort --reverse --version-sort)
# find the newest tag
# do not consider development versions
for latest_tag in $tags; do
if version_is_unstable "$latest_tag"; then
echo "# skip development version: $pname-$latest_tag" >> ${fileForGitCommands}
latest_tag=
else
if version_is_unstable "$latest_tag" "enforce"; then
echo "# use potential development version: $pname-$latest_tag" >> ${fileForGitCommands}
fi
break
fi
done
if [ -n "$latest_tag" ]; then
# print commands to commit the changes
if [ "$version" != "$latest_tag" ]; then
pfile=$(EDITOR=echo ${nix}/bin/nix edit -f. "$attr_path")
echo " git add $pfile " >> ${fileForGitCommands}
echo " git commit -m '$attr_path: $version -> $latest_tag'" >> ${fileForGitCommands}
fi
# update the nix expression
${common-updater-scripts}/bin/update-source-version "$attr_path" "$latest_tag"
fi
echo "" >> ${fileForGitCommands}
'';
in
[ updateScript pname version attrPath versionLister rev-prefix odd-unstable patchlevel-unstable ]

View File

@ -1,7 +1,7 @@
{ stdenv, fetchzip }: { stdenv, fetchzip }:
let let
version = "3"; version = "3.1";
in fetchzip { in fetchzip {
name = "fira-code-${version}"; name = "fira-code-${version}";
@ -13,7 +13,7 @@ in fetchzip {
unzip -j $downloadedFile \*.ttf -d $out/share/fonts/truetype unzip -j $downloadedFile \*.ttf -d $out/share/fonts/truetype
''; '';
sha256 = "19kcqqd6c61v137q88zsvf2ra154n009sbqh6zs7l8f7r5bbipj2"; sha256 = "1rk5hiix282b1gsxq9kqma2q9fnydj0xl9vbrd88rf7ywvn75817";
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = "https://github.com/tonsky/FiraCode"; homepage = "https://github.com/tonsky/FiraCode";

View File

@ -0,0 +1,36 @@
{ lib, stdenv, fetchurl, unzip }:
stdenv.mkDerivation rec {
pname = "line-awesome";
version = "1.3.0";
src = fetchurl {
url =
"https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/${version}/line-awesome-${version}.zip";
hash = "sha256:07qkz8s1wjh5xwqlq1b4lpihr1zah3kh6bnqvfwvncld8l9wjqfk";
};
nativeBuildInputs = [ unzip ];
sourceRoot = "${version}/fonts";
installPhase = ''
mkdir -p $out/share/fonts/truetype
mkdir -p $out/share/fonts/woff
mkdir -p $out/share/fonts/woff2
cp *.ttf $out/share/fonts/truetype
cp *.woff $out/share/fonts/woff
cp *.woff2 $out/share/fonts/woff2
'';
meta = with lib; {
description = "Replace Font Awesome with modern line icons";
longDescription = ''
This package includes only the TTF, WOFF and WOFF2 fonts. For full CSS etc. see the project website.
'';
homepage = "https://icons8.com/line-awesome";
license = licenses.mit;
maintainers = with maintainers; [ puzzlewolf ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,44 @@
{ stdenv, fetchurl, gtk3, gnome3, hicolor-icon-theme }:
stdenv.mkDerivation rec {
pname = "humanity-icon-theme";
version = "0.6.15";
src = fetchurl {
url = "https://launchpad.net/ubuntu/+archive/primary/+files/${pname}_${version}.tar.xz";
sha256 = "19ja47468s3jfabvakq9wknyfclfr31a9vd11p3mhapfq8jv9g4x";
};
nativeBuildInputs = [
gtk3
];
propagatedBuildInputs = [
gnome3.adwaita-icon-theme
hicolor-icon-theme
];
dontDropIconThemeCache = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/icons
cp -a Humanity* $out/share/icons
rm $out/share/icons/*/{AUTHORS,CONTRIBUTORS,COPYING}
for theme in $out/share/icons/*; do
gtk-update-icon-cache $theme
done
runHook postInstall
'';
meta = with stdenv.lib; {
description = "Humanity icons from Ubuntu";
homepage = "https://launchpad.net/humanity/";
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = [ maintainers.romildo ];
};
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "zafiro-icons"; pname = "zafiro-icons";
version = "1.0"; version = "1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "zayronxio"; owner = "zayronxio";
repo = pname; repo = pname;
rev = "${version}"; rev = "${version}";
sha256 = "0gy3c0jkj1icnwcs23b6km9cj9cccv8y5z1w11nfdv91cq3mdhmb"; sha256 = "05h8qm9izjbp8pnl9jpbw3y9sddhp0zmg94fm1k4d4hhdqnakqhv";
}; };
nativeBuildInputs = [ gtk3 ]; nativeBuildInputs = [ gtk3 ];

View File

@ -19,7 +19,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "elementary-videos"; pname = "elementary-videos";
version = "2.7.0"; version = "2.7.1";
repoName = "videos"; repoName = "videos";
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
owner = "elementary"; owner = "elementary";
repo = repoName; repo = repoName;
rev = version; rev = version;
sha256 = "1b6dqqmxa83fwlh9r0v918ikxd3mnwk0j5xssw1wk5l7q72s43w7"; sha256 = "00arim4i9bv9mbms1irkp44grkgrfnmqzraswyn1xiz9nvl1bsb9";
}; };
passthru = { passthru = {

View File

@ -15,13 +15,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pantheon-agent-geoclue2"; pname = "pantheon-agent-geoclue2";
version = "1.0.3"; version = "1.0.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elementary"; owner = "elementary";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "1fhgdcykn0ykn8fp7inn2akygpglhdwfpdkpnih86kqmqj8siahv"; sha256 = "1lky7pw47d5mdza3bhq0ahdhgdv159ixngdsc1ys6j1kszsfxc1f";
}; };
passthru = { passthru = {

View File

@ -4,6 +4,7 @@ mkXfceDerivation {
category = "apps"; category = "apps";
pname = "gigolo"; pname = "gigolo";
version = "0.5.0"; version = "0.5.0";
odd-unstable = false;
sha256 = "1lqsxb0d5i8p9vbzx8s4p3rga7va5h1q146xgmsa41j5v40wrlw6"; sha256 = "1lqsxb0d5i8p9vbzx8s4p3rga7va5h1q146xgmsa41j5v40wrlw6";

View File

@ -8,7 +8,7 @@ let
in in
mkXfceDerivation { mkXfceDerivation {
category = "apps"; category = "archive";
pname = "orage"; pname = "orage";
version = "4.12.1"; version = "4.12.1";

View File

@ -4,6 +4,7 @@ mkXfceDerivation {
category = "apps"; category = "apps";
pname = "xfce4-screenshooter"; pname = "xfce4-screenshooter";
version = "1.9.5"; version = "1.9.5";
odd-unstable = false;
sha256 = "1h14sywvk9l06p3z1cpb79911j8w2wqbk03ldknjkia2rfymjk06"; sha256 = "1h14sywvk9l06p3z1cpb79911j8w2wqbk03ldknjkia2rfymjk06";

View File

@ -1,9 +1,11 @@
{ stdenv, fetchurl, pkgconfig, makeWrapper { stdenv, fetchurl, pkgconfig, makeWrapper
, gstreamer, gtk2, gst-plugins-base, libnotify , gstreamer, gtk2, gst-plugins-base, libnotify
, keybinder, xfconf , keybinder, xfconf, xfce
}: }:
let let
category = "apps";
# The usual Gstreamer plugins package has a zillion dependencies # The usual Gstreamer plugins package has a zillion dependencies
# that we don't need for a simple mixer, so build a minimal package. # that we don't need for a simple mixer, so build a minimal package.
gst_plugins_minimal = gst-plugins-base.override { gst_plugins_minimal = gst-plugins-base.override {
@ -13,15 +15,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
p_name = "xfce4-volumed"; pname = "xfce4-volumed";
ver_maj = "0.1"; version = "0.1.13";
ver_min = "13";
src = fetchurl { src = fetchurl {
url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
sha256 = "1aa0a1sbf9yzi7bc78kw044m0xzg1li3y4w9kf20wqv5kfjs7v2c"; sha256 = "1aa0a1sbf9yzi7bc78kw044m0xzg1li3y4w9kf20wqv5kfjs7v2c";
}; };
name = "${p_name}-${ver_maj}.${ver_min}";
buildInputs = buildInputs =
[ gstreamer gst_plugins_minimal gtk2 [ gstreamer gst_plugins_minimal gtk2
@ -36,6 +36,12 @@ stdenv.mkDerivation rec {
--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
''; '';
passthru.updateScript = xfce.updateScript {
inherit pname version;
attrPath = "xfce.${pname}";
versionLister = xfce.archiveLister category pname;
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = "https://www.xfce.org/projects/xfce4-volumed"; # referenced but inactive homepage = "https://www.xfce.org/projects/xfce4-volumed"; # referenced but inactive
description = "A volume keys control daemon for the Xfce desktop environment"; description = "A volume keys control daemon for the Xfce desktop environment";

View File

@ -18,7 +18,8 @@ mkXfceDerivation {
category = "apps"; category = "apps";
pname = "xfdashboard"; pname = "xfdashboard";
version = "0.7.5"; version = "0.7.5";
rev = "0.7.5"; rev-prefix = "";
odd-unstable = false;
sha256 = "0d0kg90h3li41bs75z3xldljsglkz220pba39c54qznnzb8v8a2i"; sha256 = "0d0kg90h3li41bs75z3xldljsglkz220pba39c54qznnzb8v8a2i";

View File

@ -1,23 +1,31 @@
{ stdenv, fetchurl, pkgconfig, intltool, gtk2 }: { stdenv, fetchurl, pkgconfig, intltool, gtk2, xfce }:
let
category = "art";
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
p_name = "xfce4-icon-theme"; pname = "xfce4-icon-theme";
ver_maj = "4.4"; version = "4.4.3";
ver_min = "3";
src = fetchurl { src = fetchurl {
url = "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2"; url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
sha256 = "1yk6rx3zr9grm4jwpjvqdkl13pisy7qn1wm5cqzmd2kbsn96cy6l"; sha256 = "1yk6rx3zr9grm4jwpjvqdkl13pisy7qn1wm5cqzmd2kbsn96cy6l";
}; };
name = "${p_name}-${ver_maj}.${ver_min}";
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ intltool gtk2 ]; buildInputs = [ intltool gtk2 ];
meta = { passthru.updateScript = xfce.updateScript {
inherit pname version;
attrPath = "xfce.${pname}";
versionLister = xfce.archiveLister category pname;
};
meta = with stdenv.lib; {
homepage = "https://www.xfce.org/"; homepage = "https://www.xfce.org/";
description = "Icons for Xfce"; description = "Icons for Xfce";
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux;
maintainers = [ stdenv.lib.maintainers.eelco ]; maintainers = [ maintainers.eelco ];
}; };
} }

View File

@ -1,15 +1,23 @@
{ stdenv, fetchurl }: { stdenv, fetchurl, xfce }:
let
category = "art";
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
p_name = "xfwm4-themes"; pname = "xfwm4-themes";
ver_maj = "4.10"; version = "4.10.0";
ver_min = "0";
src = fetchurl { src = fetchurl {
url = "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2"; url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
sha256 = "0xfmdykav4rf6gdxbd6fhmrfrvbdc1yjihz7r7lba0wp1vqda51j"; sha256 = "0xfmdykav4rf6gdxbd6fhmrfrvbdc1yjihz7r7lba0wp1vqda51j";
}; };
name = "${p_name}-${ver_maj}.${ver_min}";
passthru.updateScript = xfce.updateScript {
inherit pname version;
attrPath = "xfce.${pname}";
versionLister = xfce.archiveLister category pname;
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = "https://www.xfce.org/"; homepage = "https://www.xfce.org/";

View File

@ -9,6 +9,8 @@ mkXfceDerivation {
sha256 = "1qrlpn0q5g9psd41l6y80r3bvbg8jaic92m6r400zzwcvivf95z0"; sha256 = "1qrlpn0q5g9psd41l6y80r3bvbg8jaic92m6r400zzwcvivf95z0";
odd-unstable = false;
meta = { meta = {
description = "Thunar extension for automatic management of removable drives and media"; description = "Thunar extension for automatic management of removable drives and media";
}; };

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