Project import generated by Copybara.
GitOrigin-RevId: 22a81aa5fc15b2d41b12f7160a71cd4a9f3c3fa1
This commit is contained in:
parent
e1c3016e0e
commit
2ce89355c3
813 changed files with 13120 additions and 8626 deletions
3
third_party/nixpkgs/.github/CODEOWNERS
vendored
3
third_party/nixpkgs/.github/CODEOWNERS
vendored
|
@ -193,3 +193,6 @@
|
|||
/nixos/modules/virtualisation/cri-o.nix @NixOS/podman
|
||||
/nixos/modules/virtualisation/podman.nix @NixOS/podman
|
||||
/nixos/tests/podman.nix @NixOS/podman
|
||||
|
||||
# Blockchains
|
||||
/pkgs/applications/blockchains @mmahut
|
||||
|
|
1
third_party/nixpkgs/README.md
vendored
1
third_party/nixpkgs/README.md
vendored
|
@ -34,6 +34,7 @@ the main ones:
|
|||
|
||||
* [Nix](https://github.com/NixOS/nix) - the purely functional package manager
|
||||
* [NixOps](https://github.com/NixOS/nixops) - the tool to remotely deploy NixOS machines
|
||||
* [nixos-hardware](https://github.com/NixOS/nixos-hardware) - NixOS profiles to optimize settings for different hardware
|
||||
* [Nix RFCs](https://github.com/NixOS/rfcs) - the formal process for making substantial changes to the community
|
||||
* [NixOS homepage](https://github.com/NixOS/nixos-homepage) - the [NixOS.org](https://nixos.org) website
|
||||
* [hydra](https://github.com/NixOS/hydra) - our continuous integration system
|
||||
|
|
|
@ -139,6 +139,12 @@
|
|||
githubId = 1517066;
|
||||
name = "Aiken Cairncross";
|
||||
};
|
||||
aciceri = {
|
||||
name = "Andrea Ciceri";
|
||||
email = "andrea.ciceri@autistici.org";
|
||||
github = "aciceri";
|
||||
githubId = 2318843;
|
||||
};
|
||||
acowley = {
|
||||
email = "acowley@gmail.com";
|
||||
github = "acowley";
|
||||
|
@ -313,6 +319,12 @@
|
|||
githubId = 2387841;
|
||||
name = "Alexander Bakker";
|
||||
};
|
||||
alexbiehl = {
|
||||
email = "alexbiehl@gmail.com";
|
||||
github = "alexbiehl";
|
||||
githubId = 1876617;
|
||||
name = "Alex Biehl";
|
||||
};
|
||||
alexchapman = {
|
||||
email = "alex@farfromthere.net";
|
||||
github = "AJChapman";
|
||||
|
@ -2460,6 +2472,12 @@
|
|||
githubId = 7432848;
|
||||
name = "Daniel Albert";
|
||||
};
|
||||
eskytthe = {
|
||||
email = "eskytthe@gmail.com";
|
||||
github = "eskytthe";
|
||||
githubId = 2544204;
|
||||
name = "Erik Skytthe";
|
||||
};
|
||||
Esteth = {
|
||||
email = "adam.copp@gmail.com";
|
||||
name = "Adam Copp";
|
||||
|
@ -3518,6 +3536,12 @@
|
|||
githubId = 117874;
|
||||
name = "Jeroen de Haas";
|
||||
};
|
||||
jduan = {
|
||||
name = "Jingjing Duan";
|
||||
email = "duanjingjing@gmail.com";
|
||||
github = "jduan";
|
||||
githubId = 452450;
|
||||
};
|
||||
jefdaj = {
|
||||
email = "jefdaj@gmail.com";
|
||||
github = "jefdaj";
|
||||
|
@ -3680,6 +3704,12 @@
|
|||
githubId = 1102396;
|
||||
name = "Jussi Maki";
|
||||
};
|
||||
jobojeha = {
|
||||
email = "jobojeha@jeppener.de";
|
||||
github = "jobojeha";
|
||||
githubId = 60272884;
|
||||
name = "Jonathan Jeppener-Haltenhoff";
|
||||
};
|
||||
joelburget = {
|
||||
email = "joelburget@gmail.com";
|
||||
github = "joelburget";
|
||||
|
@ -5002,6 +5032,10 @@
|
|||
github = "mdlayher";
|
||||
githubId = 1926905;
|
||||
name = "Matt Layher";
|
||||
keys = [{
|
||||
longkeyid = "rsa2048/0x77BFE531397EDE94";
|
||||
fingerprint = "D709 03C8 0BE9 ACDC 14F0 3BFB 77BF E531 397E DE94";
|
||||
}];
|
||||
};
|
||||
meditans = {
|
||||
email = "meditans@gmail.com";
|
||||
|
@ -8909,6 +8943,12 @@
|
|||
githubId = 474343;
|
||||
name = "Xavier Zwirtz";
|
||||
};
|
||||
ymarkus = {
|
||||
name = "Yannick Markus";
|
||||
email = "nixpkgs@ymarkus.dev";
|
||||
github = "ymarkus";
|
||||
githubId = 62380378;
|
||||
};
|
||||
ymeister = {
|
||||
name = "Yuri Meister";
|
||||
email = "47071325+ymeister@users.noreply.github.com";
|
||||
|
|
|
@ -490,6 +490,11 @@ systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
|
|||
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/89205">#89205</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
In the <literal>resilio</literal> module, <xref linkend="opt-services.resilio.httpListenAddr"/> has been changed to listen to <literal>[::1]</literal> instead of <literal>0.0.0.0</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
@ -642,6 +647,16 @@ systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
|
|||
<package>netbeans</package> was upgraded to 12.0 and now defaults to OpenJDK 11. This might cause problems if your projects depend on packages that were removed in Java 11.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<package>nextcloud</package> has been updated to <link xlink:href="https://nextcloud.com/blog/nextcloud-hub-brings-productivity-to-home-office/">v19</link>.
|
||||
</para>
|
||||
<para>
|
||||
If you have an existing installation, please make sure that you're on
|
||||
<package>nextcloud18</package> before upgrading to <package>nextcloud19</package>
|
||||
since Nextcloud doesn't support upgrades across multiple major versions.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -43,7 +43,7 @@ pkgs.stdenv.mkDerivation {
|
|||
# Make a crude approximation of the size of the target image.
|
||||
# If the script starts failing, increase the fudge factors here.
|
||||
numInodes=$(find $storePaths ./files | wc -l)
|
||||
numDataBlocks=$(du -s -c -B 4096 --apparent-size $storePaths ./files | tail -1 | awk '{ print int($1 * 1.03) }')
|
||||
numDataBlocks=$(du -s -c -B 4096 --apparent-size $storePaths ./files | tail -1 | awk '{ print int($1 * 1.10) }')
|
||||
bytes=$((2 * 4096 * $numInodes + 4096 * $numDataBlocks))
|
||||
echo "Creating an EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks)"
|
||||
|
||||
|
|
|
@ -278,7 +278,14 @@ in
|
|||
(mkRemovedOptionModule [ "fonts" "fontconfig" "hinting" "style" ] "")
|
||||
(mkRemovedOptionModule [ "fonts" "fontconfig" "forceAutohint" ] "")
|
||||
(mkRemovedOptionModule [ "fonts" "fontconfig" "renderMonoTTFAsBitmap" ] "")
|
||||
];
|
||||
] ++ lib.forEach [ "enable" "substitutions" "preset" ]
|
||||
(opt: lib.mkRemovedOptionModule [ "fonts" "fontconfig" "ultimate" "${opt}" ] ''
|
||||
The fonts.fontconfig.ultimate module and configuration is obsolete.
|
||||
The repository has since been archived and activity has ceased.
|
||||
https://github.com/bohoomil/fontconfig-ultimate/issues/171.
|
||||
No action should be needed for font configuration, as the fonts.fontconfig
|
||||
module is already used by default.
|
||||
'');
|
||||
|
||||
options = {
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ in {
|
|||
model = mkOption {
|
||||
type = types.str;
|
||||
example = literalExample ''
|
||||
gutenprint.''${lib.version.majorMinor (lib.getVersion pkgs.cups)}://brother-hl-5140/expert
|
||||
gutenprint.''${lib.versions.majorMinor (lib.getVersion pkgs.gutenprint)}://brother-hl-5140/expert
|
||||
'';
|
||||
description = ''
|
||||
Location of the ppd driver file for the printer.
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
sdImage = {
|
||||
firmwareSize = 128;
|
||||
firmwarePartitionName = "NIXOS_BOOT";
|
||||
# This is a hack to avoid replicating config.txt from boot.loader.raspberryPi
|
||||
populateFirmwareCommands =
|
||||
"${config.system.build.installBootLoader} ${config.system.build.toplevel} -d ./firmware";
|
||||
|
@ -25,6 +26,12 @@
|
|||
populateRootCommands = "";
|
||||
};
|
||||
|
||||
fileSystems."/boot/firmware" = {
|
||||
# This effectively "renames" the loaOf entry set in sd-image.nix
|
||||
mountPoint = "/boot";
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
# the installation media is also the installation target,
|
||||
# so we don't want to provide the installation configuration.nix.
|
||||
installer.cloneConfig = false;
|
||||
|
|
|
@ -63,6 +63,14 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
firmwarePartitionName = mkOption {
|
||||
type = types.str;
|
||||
default = "FIRMWARE";
|
||||
description = ''
|
||||
Name of the filesystem which holds the boot firmware.
|
||||
'';
|
||||
};
|
||||
|
||||
rootPartitionUUID = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
|
@ -114,7 +122,7 @@ in
|
|||
config = {
|
||||
fileSystems = {
|
||||
"/boot/firmware" = {
|
||||
device = "/dev/disk/by-label/FIRMWARE";
|
||||
device = "/dev/disk/by-label/${config.sdImage.firmwarePartitionName}";
|
||||
fsType = "vfat";
|
||||
# Alternatively, this could be removed from the configuration.
|
||||
# The filesystem is not needed at runtime, it could be treated
|
||||
|
@ -178,7 +186,7 @@ in
|
|||
# Create a FAT32 /boot/firmware partition of suitable size into firmware_part.img
|
||||
eval $(partx $img -o START,SECTORS --nr 1 --pairs)
|
||||
truncate -s $((SECTORS * 512)) firmware_part.img
|
||||
faketime "1970-01-01 00:00:00" mkfs.vfat -i ${config.sdImage.firmwarePartitionID} -n FIRMWARE firmware_part.img
|
||||
faketime "1970-01-01 00:00:00" mkfs.vfat -i ${config.sdImage.firmwarePartitionID} -n ${config.sdImage.firmwarePartitionName} firmware_part.img
|
||||
|
||||
# Populate the files intended for /boot/firmware
|
||||
mkdir firmware
|
||||
|
|
|
@ -757,6 +757,7 @@
|
|||
./services/networking/v2ray.nix
|
||||
./services/networking/vsftpd.nix
|
||||
./services/networking/wakeonlan.nix
|
||||
./services/networking/wasabibackend.nix
|
||||
./services/networking/websockify.nix
|
||||
./services/networking/wg-quick.nix
|
||||
./services/networking/wicd.nix
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
with lib;
|
||||
|
||||
{
|
||||
meta.maintainers = maintainers.fabianhauser;
|
||||
meta.maintainers = pkgs.hamster.meta.maintainers;
|
||||
|
||||
options.programs.hamster.enable =
|
||||
mkEnableOption "Whether to enable hamster time tracking.";
|
||||
|
|
|
@ -21,6 +21,12 @@ let
|
|||
|
||||
${optionalString (cfg.network.listenAddress != "any") ''bind_to_address "${cfg.network.listenAddress}"''}
|
||||
${optionalString (cfg.network.port != 6600) ''port "${toString cfg.network.port}"''}
|
||||
${optionalString (cfg.fluidsynth) ''
|
||||
decoder {
|
||||
plugin "fluidsynth"
|
||||
soundfont "${pkgs.soundfont-fluid}/share/soundfonts/FluidR3_GM2-2.sf2"
|
||||
}
|
||||
''}
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
@ -133,6 +139,14 @@ in {
|
|||
parameter is omitted from the configuration.
|
||||
'';
|
||||
};
|
||||
|
||||
fluidsynth = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
If set, add fluidsynth soundfont and configure the plugin.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -25,7 +25,7 @@ let
|
|||
change_source = [ ${concatStringsSep "," cfg.changeSource} ],
|
||||
schedulers = [ ${concatStringsSep "," cfg.schedulers} ],
|
||||
builders = [ ${concatStringsSep "," cfg.builders} ],
|
||||
status = [ ${concatStringsSep "," cfg.status} ],
|
||||
services = [ ${concatStringsSep "," cfg.reporters} ],
|
||||
)
|
||||
for step in [ ${concatStringsSep "," cfg.factorySteps} ]:
|
||||
factory.addStep(step)
|
||||
|
@ -119,10 +119,10 @@ in {
|
|||
default = [ "worker.Worker('example-worker', 'pass')" ];
|
||||
};
|
||||
|
||||
status = mkOption {
|
||||
reporters = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
description = "List of status notification endpoints.";
|
||||
description = "List of reporter objects used to present build status to various users.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
|
@ -276,6 +276,10 @@ in {
|
|||
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "services" "buildbot-master" "bpPort" ] [ "services" "buildbot-master" "pbPort" ])
|
||||
(mkRemovedOptionModule [ "services" "buildbot-master" "status" ] ''
|
||||
Since Buildbot 0.9.0, status targets are deprecated and ignored.
|
||||
Review your configuration and migrate to reporters (available at services.buildbot-master.reporters).
|
||||
'')
|
||||
];
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ nand0p mic92 ];
|
||||
|
|
|
@ -232,7 +232,7 @@ in
|
|||
};
|
||||
|
||||
meta = {
|
||||
maintainers = lib.maintainers.mic92;
|
||||
maintainers = [ lib.maintainers.mic92 ];
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,32 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.undervolt;
|
||||
in {
|
||||
options.services.undervolt = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to undervolt intel cpus.
|
||||
'';
|
||||
cliArgs = lib.cli.toGNUCommandLineShell {} {
|
||||
inherit (cfg)
|
||||
verbose
|
||||
temp
|
||||
;
|
||||
# `core` and `cache` are both intentionally set to `cfg.coreOffset` as according to the undervolt docs:
|
||||
#
|
||||
# Core or Cache offsets have no effect. It is not possible to set different offsets for
|
||||
# CPU Core and Cache. The CPU will take the smaller of the two offsets, and apply that to
|
||||
# both CPU and Cache. A warning message will be displayed if you attempt to set different offsets.
|
||||
core = cfg.coreOffset;
|
||||
cache = cfg.coreOffset;
|
||||
gpu = cfg.gpuOffset;
|
||||
uncore = cfg.uncoreOffset;
|
||||
analogio = cfg.analogioOffset;
|
||||
|
||||
temp-bat = cfg.tempBat;
|
||||
temp-ac = cfg.tempAc;
|
||||
};
|
||||
in
|
||||
{
|
||||
options.services.undervolt = {
|
||||
enable = mkEnableOption
|
||||
"Intel CPU undervolting service (WARNING: may permanently damage your hardware!)";
|
||||
|
||||
verbose = mkOption {
|
||||
type = types.bool;
|
||||
|
@ -32,58 +46,58 @@ in {
|
|||
};
|
||||
|
||||
coreOffset = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
The amount of voltage to offset the CPU cores by. Accepts a floating point number.
|
||||
The amount of voltage in mV to offset the CPU cores by.
|
||||
'';
|
||||
};
|
||||
|
||||
gpuOffset = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
The amount of voltage to offset the GPU by. Accepts a floating point number.
|
||||
The amount of voltage in mV to offset the GPU by.
|
||||
'';
|
||||
};
|
||||
|
||||
uncoreOffset = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
The amount of voltage to offset uncore by. Accepts a floating point number.
|
||||
The amount of voltage in mV to offset uncore by.
|
||||
'';
|
||||
};
|
||||
|
||||
analogioOffset = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
The amount of voltage to offset analogio by. Accepts a floating point number.
|
||||
The amount of voltage in mV to offset analogio by.
|
||||
'';
|
||||
};
|
||||
|
||||
temp = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
The temperature target. Accepts a floating point number.
|
||||
The temperature target in Celsius degrees.
|
||||
'';
|
||||
};
|
||||
|
||||
tempAc = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
The temperature target on AC power. Accepts a floating point number.
|
||||
The temperature target on AC power in Celsius degrees.
|
||||
'';
|
||||
};
|
||||
|
||||
tempBat = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
The temperature target on battery power. Accepts a floating point number.
|
||||
The temperature target on battery power in Celsius degrees.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -100,24 +114,7 @@ in {
|
|||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
Restart = "no";
|
||||
|
||||
# `core` and `cache` are both intentionally set to `cfg.coreOffset` as according to the undervolt docs:
|
||||
#
|
||||
# Core or Cache offsets have no effect. It is not possible to set different offsets for
|
||||
# CPU Core and Cache. The CPU will take the smaller of the two offsets, and apply that to
|
||||
# both CPU and Cache. A warning message will be displayed if you attempt to set different offsets.
|
||||
ExecStart = ''
|
||||
${pkgs.undervolt}/bin/undervolt \
|
||||
${optionalString cfg.verbose "--verbose"} \
|
||||
${optionalString (cfg.coreOffset != null) "--core ${cfg.coreOffset}"} \
|
||||
${optionalString (cfg.coreOffset != null) "--cache ${cfg.coreOffset}"} \
|
||||
${optionalString (cfg.gpuOffset != null) "--gpu ${cfg.gpuOffset}"} \
|
||||
${optionalString (cfg.uncoreOffset != null) "--uncore ${cfg.uncoreOffset}"} \
|
||||
${optionalString (cfg.analogioOffset != null) "--analogio ${cfg.analogioOffset}"} \
|
||||
${optionalString (cfg.temp != null) "--temp ${cfg.temp}"} \
|
||||
${optionalString (cfg.tempAc != null) "--temp-ac ${cfg.tempAc}"} \
|
||||
${optionalString (cfg.tempBat != null) "--temp-bat ${cfg.tempBat}"}
|
||||
'';
|
||||
ExecStart = "${pkgs.undervolt}/bin/undervolt ${cliArgs}";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -6,42 +6,46 @@ let
|
|||
|
||||
cfg = config.services.mailman;
|
||||
|
||||
pythonEnv = pkgs.python3.withPackages (ps:
|
||||
[ps.mailman ps.mailman-web]
|
||||
++ lib.optional cfg.hyperkitty.enable ps.mailman-hyperkitty
|
||||
++ cfg.extraPythonPackages);
|
||||
|
||||
# This deliberately doesn't use recursiveUpdate so users can
|
||||
# override the defaults.
|
||||
settings = {
|
||||
webSettings = {
|
||||
DEFAULT_FROM_EMAIL = cfg.siteOwner;
|
||||
SERVER_EMAIL = cfg.siteOwner;
|
||||
ALLOWED_HOSTS = [ "localhost" "127.0.0.1" ] ++ cfg.webHosts;
|
||||
COMPRESS_OFFLINE = true;
|
||||
STATIC_ROOT = "/var/lib/mailman-web/static";
|
||||
STATIC_ROOT = "/var/lib/mailman-web-static";
|
||||
MEDIA_ROOT = "/var/lib/mailman-web/media";
|
||||
LOGGING = {
|
||||
version = 1;
|
||||
disable_existing_loggers = true;
|
||||
handlers.console.class = "logging.StreamHandler";
|
||||
loggers.django = {
|
||||
handlers = [ "console" ];
|
||||
level = "INFO";
|
||||
};
|
||||
};
|
||||
HAYSTACK_CONNECTIONS.default = {
|
||||
ENGINE = "haystack.backends.whoosh_backend.WhooshEngine";
|
||||
PATH = "/var/lib/mailman-web/fulltext-index";
|
||||
};
|
||||
} // cfg.webSettings;
|
||||
|
||||
settingsJSON = pkgs.writeText "settings.json" (builtins.toJSON settings);
|
||||
webSettingsJSON = pkgs.writeText "settings.json" (builtins.toJSON webSettings);
|
||||
|
||||
mailmanCfg = ''
|
||||
[mailman]
|
||||
site_owner: ${cfg.siteOwner}
|
||||
layout: fhs
|
||||
|
||||
[paths.fhs]
|
||||
bin_dir: ${pkgs.python3Packages.mailman}/bin
|
||||
var_dir: /var/lib/mailman
|
||||
queue_dir: $var_dir/queue
|
||||
template_dir: $var_dir/templates
|
||||
log_dir: $var_dir/log
|
||||
lock_dir: $var_dir/lock
|
||||
etc_dir: /etc
|
||||
ext_dir: $etc_dir/mailman.d
|
||||
pid_file: /run/mailman/master.pid
|
||||
'' + optionalString cfg.hyperkitty.enable ''
|
||||
|
||||
[archiver.hyperkitty]
|
||||
class: mailman_hyperkitty.Archiver
|
||||
enable: yes
|
||||
configuration: /var/lib/mailman/mailman-hyperkitty.cfg
|
||||
# TODO: Should this be RFC42-ised so that users can set additional options without modifying the module?
|
||||
mtaConfig = pkgs.writeText "mailman-postfix.cfg" ''
|
||||
[postfix]
|
||||
postmap_command: ${pkgs.postfix}/bin/postmap
|
||||
transport_file_type: hash
|
||||
'';
|
||||
|
||||
mailmanCfg = lib.generators.toINI {} cfg.settings;
|
||||
|
||||
mailmanHyperkittyCfg = pkgs.writeText "mailman-hyperkitty.cfg" ''
|
||||
[general]
|
||||
# This is your HyperKitty installation, preferably on the localhost. This
|
||||
|
@ -84,7 +88,7 @@ in {
|
|||
type = types.package;
|
||||
default = pkgs.mailman;
|
||||
defaultText = "pkgs.mailman";
|
||||
example = "pkgs.mailman.override { archivers = []; }";
|
||||
example = literalExample "pkgs.mailman.override { archivers = []; }";
|
||||
description = "Mailman package to use";
|
||||
};
|
||||
|
||||
|
@ -98,18 +102,6 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
webRoot = mkOption {
|
||||
type = types.path;
|
||||
default = "${pkgs.mailman-web}/${pkgs.python3.sitePackages}";
|
||||
defaultText = "\${pkgs.mailman-web}/\${pkgs.python3.sitePackages}";
|
||||
description = ''
|
||||
The web root for the Hyperkity + Postorius apps provided by Mailman.
|
||||
This variable can be set, of course, but it mainly exists so that site
|
||||
admins can refer to it in their own hand-written web server
|
||||
configuration files.
|
||||
'';
|
||||
};
|
||||
|
||||
webHosts = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
|
@ -124,7 +116,7 @@ in {
|
|||
|
||||
webUser = mkOption {
|
||||
type = types.str;
|
||||
default = config.services.httpd.user;
|
||||
default = "mailman-web";
|
||||
description = ''
|
||||
User to run mailman-web as
|
||||
'';
|
||||
|
@ -138,6 +130,22 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
serve = {
|
||||
enable = mkEnableOption "Automatic nginx and uwsgi setup for mailman-web";
|
||||
};
|
||||
|
||||
extraPythonPackages = mkOption {
|
||||
description = "Packages to add to the python environment used by mailman and mailman-web";
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
description = "Settings for mailman.cfg";
|
||||
type = types.attrsOf (types.attrsOf types.str);
|
||||
default = {};
|
||||
};
|
||||
|
||||
hyperkitty = {
|
||||
enable = mkEnableOption "the Hyperkitty archiver for Mailman";
|
||||
|
||||
|
@ -158,6 +166,35 @@ in {
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.mailman.settings = {
|
||||
mailman.site_owner = lib.mkDefault cfg.siteOwner;
|
||||
mailman.layout = "fhs";
|
||||
|
||||
"paths.fhs" = {
|
||||
bin_dir = "${pkgs.python3Packages.mailman}/bin";
|
||||
var_dir = "/var/lib/mailman";
|
||||
queue_dir = "$var_dir/queue";
|
||||
template_dir = "$var_dir/templates";
|
||||
log_dir = "/var/log/mailman";
|
||||
lock_dir = "$var_dir/lock";
|
||||
etc_dir = "/etc";
|
||||
ext_dir = "$etc_dir/mailman.d";
|
||||
pid_file = "/run/mailman/master.pid";
|
||||
};
|
||||
|
||||
mta.configuration = lib.mkDefault "${mtaConfig}";
|
||||
|
||||
"archiver.hyperkitty" = lib.mkIf cfg.hyperkitty.enable {
|
||||
class = "mailman_hyperkitty.Archiver";
|
||||
enable = "yes";
|
||||
configuration = "/var/lib/mailman/mailman-hyperkitty.cfg";
|
||||
};
|
||||
} // (let
|
||||
loggerNames = ["root" "archiver" "bounce" "config" "database" "debug" "error" "fromusenet" "http" "locks" "mischief" "plugins" "runner" "smtp"];
|
||||
loggerSectionNames = map (n: "logging.${n}") loggerNames;
|
||||
in lib.genAttrs loggerSectionNames(name: { handler = "stderr"; })
|
||||
);
|
||||
|
||||
assertions = let
|
||||
inherit (config.services) postfix;
|
||||
|
||||
|
@ -183,7 +220,17 @@ in {
|
|||
(requirePostfixHash [ "config" "local_recipient_maps" ] "postfix_lmtp")
|
||||
];
|
||||
|
||||
users.users.mailman = { description = "GNU Mailman"; isSystemUser = true; };
|
||||
users.users.mailman = {
|
||||
description = "GNU Mailman";
|
||||
isSystemUser = true;
|
||||
group = "mailman";
|
||||
};
|
||||
users.users.mailman-web = lib.mkIf (cfg.webUser == "mailman-web") {
|
||||
description = "GNU Mailman web interface";
|
||||
isSystemUser = true;
|
||||
group = "mailman";
|
||||
};
|
||||
users.groups.mailman = {};
|
||||
|
||||
environment.etc."mailman.cfg".text = mailmanCfg;
|
||||
|
||||
|
@ -198,14 +245,35 @@ in {
|
|||
|
||||
import json
|
||||
|
||||
with open('${settingsJSON}') as f:
|
||||
with open('${webSettingsJSON}') as f:
|
||||
globals().update(json.load(f))
|
||||
|
||||
with open('/var/lib/mailman-web/settings_local.json') as f:
|
||||
globals().update(json.load(f))
|
||||
'';
|
||||
|
||||
environment.systemPackages = [ cfg.package ] ++ (with pkgs; [ mailman-web ]);
|
||||
services.nginx = mkIf cfg.serve.enable {
|
||||
enable = mkDefault true;
|
||||
virtualHosts."${lib.head cfg.webHosts}" = {
|
||||
serverAliases = cfg.webHosts;
|
||||
locations = {
|
||||
"/".extraConfig = "uwsgi_pass unix:/run/mailman-web.socket;";
|
||||
"/static/".alias = webSettings.STATIC_ROOT + "/";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ (pkgs.buildEnv {
|
||||
name = "mailman-tools";
|
||||
# We don't want to pollute the system PATH with a python
|
||||
# interpreter etc. so let's pick only the stuff we actually
|
||||
# want from pythonEnv
|
||||
pathsToLink = ["/bin"];
|
||||
paths = [pythonEnv];
|
||||
postBuild = ''
|
||||
find $out/bin/ -mindepth 1 -not -name "mailman*" -delete
|
||||
'';
|
||||
}) ];
|
||||
|
||||
services.postfix = {
|
||||
recipientDelimiter = "+"; # bake recipient addresses in mail envelopes via VERP
|
||||
|
@ -214,25 +282,33 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
systemd.services.mailman = {
|
||||
systemd.sockets.mailman-uwsgi = lib.mkIf cfg.serve.enable {
|
||||
wantedBy = ["sockets.target"];
|
||||
before = ["nginx.service"];
|
||||
socketConfig.ListenStream = "/run/mailman-web.socket";
|
||||
};
|
||||
systemd.services = {
|
||||
mailman = {
|
||||
description = "GNU Mailman Master Process";
|
||||
after = [ "network.target" ];
|
||||
restartTriggers = [ config.environment.etc."mailman.cfg".source ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/mailman start";
|
||||
ExecStop = "${cfg.package}/bin/mailman stop";
|
||||
ExecStart = "${pythonEnv}/bin/mailman start";
|
||||
ExecStop = "${pythonEnv}/bin/mailman stop";
|
||||
User = "mailman";
|
||||
Group = "mailman";
|
||||
Type = "forking";
|
||||
RuntimeDirectory = "mailman";
|
||||
LogsDirectory = "mailman";
|
||||
PIDFile = "/run/mailman/master.pid";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.mailman-settings = {
|
||||
mailman-settings = {
|
||||
description = "Generate settings files (including secrets) for Mailman";
|
||||
before = [ "mailman.service" "mailman-web.service" "hyperkitty.service" "httpd.service" "uwsgi.service" ];
|
||||
requiredBy = [ "mailman.service" "mailman-web.service" "hyperkitty.service" "httpd.service" "uwsgi.service" ];
|
||||
before = [ "mailman.service" "mailman-web-setup.service" "mailman-uwsgi.service" "hyperkitty.service" ];
|
||||
requiredBy = [ "mailman.service" "mailman-web-setup.service" "mailman-uwsgi.service" "hyperkitty.service" ];
|
||||
path = with pkgs; [ jq ];
|
||||
script = ''
|
||||
mailmanDir=/var/lib/mailman
|
||||
|
@ -241,8 +317,9 @@ in {
|
|||
mailmanCfg=$mailmanDir/mailman-hyperkitty.cfg
|
||||
mailmanWebCfg=$mailmanWebDir/settings_local.json
|
||||
|
||||
install -m 0700 -o mailman -g nogroup -d $mailmanDir
|
||||
install -m 0700 -o ${cfg.webUser} -g nogroup -d $mailmanWebDir
|
||||
install -m 0775 -o mailman -g mailman -d /var/lib/mailman-web-static
|
||||
install -m 0770 -o mailman -g mailman -d $mailmanDir
|
||||
install -m 0770 -o ${cfg.webUser} -g mailman -d $mailmanWebDir
|
||||
|
||||
if [ ! -e $mailmanWebCfg ]; then
|
||||
hyperkittyApiKey=$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 64)
|
||||
|
@ -253,142 +330,108 @@ in {
|
|||
--arg archiver_key "$hyperkittyApiKey" \
|
||||
--arg secret_key "$secretKey" \
|
||||
>"$mailmanWebCfgTmp"
|
||||
chown ${cfg.webUser} "$mailmanWebCfgTmp"
|
||||
mv -n "$mailmanWebCfgTmp" $mailmanWebCfg
|
||||
chown root:mailman "$mailmanWebCfgTmp"
|
||||
chmod 440 "$mailmanWebCfgTmp"
|
||||
mv -n "$mailmanWebCfgTmp" "$mailmanWebCfg"
|
||||
fi
|
||||
|
||||
hyperkittyApiKey="$(jq -r .MAILMAN_ARCHIVER_KEY $mailmanWebCfg)"
|
||||
hyperkittyApiKey="$(jq -r .MAILMAN_ARCHIVER_KEY "$mailmanWebCfg")"
|
||||
mailmanCfgTmp=$(mktemp)
|
||||
sed "s/@API_KEY@/$hyperkittyApiKey/g" ${mailmanHyperkittyCfg} >"$mailmanCfgTmp"
|
||||
chown mailman "$mailmanCfgTmp"
|
||||
mv "$mailmanCfgTmp" $mailmanCfg
|
||||
chown mailman:mailman "$mailmanCfgTmp"
|
||||
mv "$mailmanCfgTmp" "$mailmanCfg"
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
# RemainAfterExit makes restartIfChanged work for this service, so
|
||||
# downstream services will get updated automatically when things like
|
||||
# services.mailman.hyperkitty.baseUrl change. Otherwise users have to
|
||||
# restart things manually, which is confusing.
|
||||
RemainAfterExit = "yes";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.mailman-web = {
|
||||
description = "Init Postorius DB";
|
||||
before = [ "httpd.service" "uwsgi.service" ];
|
||||
requiredBy = [ "httpd.service" "uwsgi.service" ];
|
||||
mailman-web-setup = {
|
||||
description = "Prepare mailman-web files and database";
|
||||
before = [ "uwsgi.service" "mailman-uwsgi.service" ];
|
||||
requiredBy = [ "mailman-uwsgi.service" ];
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
script = ''
|
||||
${pkgs.mailman-web}/bin/mailman-web migrate
|
||||
rm -rf static
|
||||
${pkgs.mailman-web}/bin/mailman-web collectstatic
|
||||
${pkgs.mailman-web}/bin/mailman-web compress
|
||||
[[ -e "${webSettings.STATIC_ROOT}" ]] && find "${webSettings.STATIC_ROOT}/" -mindepth 1 -delete
|
||||
${pythonEnv}/bin/mailman-web migrate
|
||||
${pythonEnv}/bin/mailman-web collectstatic
|
||||
${pythonEnv}/bin/mailman-web compress
|
||||
'';
|
||||
serviceConfig = {
|
||||
User = cfg.webUser;
|
||||
Group = "mailman";
|
||||
Type = "oneshot";
|
||||
# Similar to mailman-settings.service, this makes restartTriggers work
|
||||
# properly for this service.
|
||||
RemainAfterExit = "yes";
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.mailman-daily = {
|
||||
mailman-uwsgi = mkIf cfg.serve.enable (let
|
||||
uwsgiConfig.uwsgi = {
|
||||
type = "normal";
|
||||
plugins = ["python3"];
|
||||
home = pythonEnv;
|
||||
module = "mailman_web.wsgi";
|
||||
};
|
||||
uwsgiConfigFile = pkgs.writeText "uwsgi-mailman.json" (builtins.toJSON uwsgiConfig);
|
||||
in {
|
||||
wantedBy = ["multi-user.target"];
|
||||
requires = ["mailman-uwsgi.socket" "mailman-web-setup.service"];
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
serviceConfig = {
|
||||
# Since the mailman-web settings.py obstinately creates a logs
|
||||
# dir in the cwd, change to the (writable) runtime directory before
|
||||
# starting uwsgi.
|
||||
ExecStart = "${pkgs.coreutils}/bin/env -C $RUNTIME_DIRECTORY ${pkgs.uwsgi.override { plugins = ["python3"]; }}/bin/uwsgi --json ${uwsgiConfigFile}";
|
||||
User = cfg.webUser;
|
||||
Group = "mailman";
|
||||
RuntimeDirectory = "mailman-uwsgi";
|
||||
};
|
||||
});
|
||||
|
||||
mailman-daily = {
|
||||
description = "Trigger daily Mailman events";
|
||||
startAt = "daily";
|
||||
restartTriggers = [ config.environment.etc."mailman.cfg".source ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/mailman digests --send";
|
||||
ExecStart = "${pythonEnv}/bin/mailman digests --send";
|
||||
User = "mailman";
|
||||
Group = "mailman";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.hyperkitty = {
|
||||
inherit (cfg.hyperkitty) enable;
|
||||
hyperkitty = lib.mkIf cfg.hyperkitty.enable {
|
||||
description = "GNU Hyperkitty QCluster Process";
|
||||
after = [ "network.target" ];
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
wantedBy = [ "mailman.service" "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.mailman-web}/bin/mailman-web qcluster";
|
||||
ExecStart = "${pythonEnv}/bin/mailman-web qcluster";
|
||||
User = cfg.webUser;
|
||||
Group = "mailman";
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.hyperkitty-minutely = {
|
||||
inherit (cfg.hyperkitty) enable;
|
||||
description = "Trigger minutely Hyperkitty events";
|
||||
startAt = "minutely";
|
||||
} // flip lib.mapAttrs' {
|
||||
"minutely" = "minutely";
|
||||
"quarter_hourly" = "*:00/15";
|
||||
"hourly" = "hourly";
|
||||
"daily" = "daily";
|
||||
"weekly" = "weekly";
|
||||
"yearly" = "yearly";
|
||||
} (name: startAt:
|
||||
lib.nameValuePair "hyperkitty-${name}" (lib.mkIf cfg.hyperkitty.enable {
|
||||
description = "Trigger ${name} Hyperkitty events";
|
||||
inherit startAt;
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs minutely";
|
||||
User = cfg.webUser;
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.hyperkitty-quarter-hourly = {
|
||||
inherit (cfg.hyperkitty) enable;
|
||||
description = "Trigger quarter-hourly Hyperkitty events";
|
||||
startAt = "*:00/15";
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs quarter_hourly";
|
||||
User = cfg.webUser;
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.hyperkitty-hourly = {
|
||||
inherit (cfg.hyperkitty) enable;
|
||||
description = "Trigger hourly Hyperkitty events";
|
||||
startAt = "hourly";
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs hourly";
|
||||
User = cfg.webUser;
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.hyperkitty-daily = {
|
||||
inherit (cfg.hyperkitty) enable;
|
||||
description = "Trigger daily Hyperkitty events";
|
||||
startAt = "daily";
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs daily";
|
||||
User = cfg.webUser;
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.hyperkitty-weekly = {
|
||||
inherit (cfg.hyperkitty) enable;
|
||||
description = "Trigger weekly Hyperkitty events";
|
||||
startAt = "weekly";
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs weekly";
|
||||
User = cfg.webUser;
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.hyperkitty-yearly = {
|
||||
inherit (cfg.hyperkitty) enable;
|
||||
description = "Trigger yearly Hyperkitty events";
|
||||
startAt = "yearly";
|
||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs yearly";
|
||||
ExecStart = "${pythonEnv}/bin/mailman-web runjobs minutely";
|
||||
User = cfg.webUser;
|
||||
Group = "mailman";
|
||||
WorkingDirectory = "/var/lib/mailman-web";
|
||||
};
|
||||
}));
|
||||
};
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ lheckemann ];
|
||||
doc = ./mailman.xml;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
59
third_party/nixpkgs/nixos/modules/services/mail/mailman.xml
vendored
Normal file
59
third_party/nixpkgs/nixos/modules/services/mail/mailman.xml
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
version="5.0"
|
||||
xml:id="module-services-mailman">
|
||||
<title>Mailman</title>
|
||||
<para>
|
||||
<link xlink:href="https://www.list.org">Mailman</link> is free
|
||||
software for managing electronic mail discussion and e-newsletter
|
||||
lists. Mailman and its web interface can be configured using the
|
||||
corresponding NixOS module. Note that this service is best used with
|
||||
an existing, securely configured Postfix setup, as it does not automatically configure this.
|
||||
</para>
|
||||
|
||||
<section xml:id="module-services-mailman-basic-usage">
|
||||
<title>Basic usage</title>
|
||||
<para>
|
||||
For a basic configuration, the following settings are suggested:
|
||||
<programlisting>{ config, ... }: {
|
||||
services.postfix = {
|
||||
enable = true;
|
||||
relayDomains = ["hash:/var/lib/mailman/data/postfix_domains"];
|
||||
sslCert = config.security.acme.certs."lists.example.org".directory + "/full.pem";
|
||||
sslKey = config.security.acme.certs."lists.example.org".directory + "/key.pem";
|
||||
config = {
|
||||
transport_maps = ["hash:/var/lib/mailman/data/postfix_lmtp"];
|
||||
local_recipient_maps = ["hash:/var/lib/mailman/data/postfix_lmtp"];
|
||||
};
|
||||
};
|
||||
services.mailman = {
|
||||
<link linkend="opt-services.mailman.enable">enable</link> = true;
|
||||
<link linkend="opt-services.mailman.serve.enable">serve.enable</link> = true;
|
||||
<link linkend="opt-services.mailman.hyperkitty.enable">hyperkitty.enable</link> = true;
|
||||
<link linkend="opt-services.mailman.hyperkitty.enable">webHosts</link> = ["lists.example.org"];
|
||||
<link linkend="opt-services.mailman.hyperkitty.enable">siteOwner</link> = "mailman@example.org";
|
||||
};
|
||||
<link linkend="opt-services.nginx.virtualHosts._name_.enableACME">services.nginx.virtualHosts."lists.example.org".enableACME</link> = true;
|
||||
<link linkend="opt-services.mailman.hyperkitty.enable">networking.firewall.allowedTCPPorts</link> = [ 25 80 443 ];
|
||||
}</programlisting>
|
||||
</para>
|
||||
<para>
|
||||
DNS records will also be required:
|
||||
<itemizedlist>
|
||||
<listitem><para><literal>AAAA</literal> and <literal>A</literal> records pointing to the host in question, in order for browsers to be able to discover the address of the web server;</para></listitem>
|
||||
<listitem><para>An <literal>MX</literal> record pointing to a domain name at which the host is reachable, in order for other mail servers to be able to deliver emails to the mailing lists it hosts.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
After this has been done and appropriate DNS records have been
|
||||
set up, the Postorius mailing list manager and the Hyperkitty
|
||||
archive browser will be available at
|
||||
https://lists.example.org/. Note that this setup is not
|
||||
sufficient to deliver emails to most email providers nor to
|
||||
avoid spam -- a number of additional measures for authenticating
|
||||
incoming and outgoing mails, such as SPF, DMARC and DKIM are
|
||||
necessary, but outside the scope of the Mailman module.
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
|
@ -240,6 +240,7 @@ in {
|
|||
'');
|
||||
serviceConfig = {
|
||||
ExecStart = "${package}/bin/hass --config '${cfg.configDir}'";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
User = "hass";
|
||||
Group = "hass";
|
||||
Restart = "on-failure";
|
||||
|
|
|
@ -39,6 +39,7 @@ let
|
|||
"node"
|
||||
"postfix"
|
||||
"postgres"
|
||||
"redis"
|
||||
"rspamd"
|
||||
"snmp"
|
||||
"surfboard"
|
||||
|
@ -171,15 +172,6 @@ in
|
|||
(opt: lib.mkRemovedOptionModule [ "services" "prometheus" "${opt}" ] ''
|
||||
The prometheus exporters are now configured using `services.prometheus.exporters'.
|
||||
See the 18.03 release notes for more information.
|
||||
'' ))
|
||||
|
||||
++ (lib.forEach [ "enable" "substitutions" "preset" ]
|
||||
(opt: lib.mkRemovedOptionModule [ "fonts" "fontconfig" "ultimate" "${opt}" ] ''
|
||||
The fonts.fontconfig.ultimate module and configuration is obsolete.
|
||||
The repository has since been archived and activity has ceased.
|
||||
https://github.com/bohoomil/fontconfig-ultimate/issues/171.
|
||||
No action should be needed for font configuration, as the fonts.fontconfig
|
||||
module is already used by default.
|
||||
'' ));
|
||||
|
||||
options.services.prometheus.exporters = mkOption {
|
||||
|
|
19
third_party/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/redis.nix
vendored
Normal file
19
third_party/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/redis.nix
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ config, lib, pkgs, options }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.prometheus.exporters.redis;
|
||||
in
|
||||
{
|
||||
port = 9121;
|
||||
serviceOpts = {
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.prometheus-redis-exporter}/bin/redis_exporter \
|
||||
-web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||
${concatStringsSep " \\\n " cfg.extraFlags}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -32,7 +32,10 @@ in {
|
|||
|
||||
environment.systemPackages = [ pkgs.tuptime ];
|
||||
|
||||
users.users.tuptime.description = "tuptime database owner";
|
||||
users = {
|
||||
groups._tuptime.members = [ "_tuptime" ];
|
||||
users._tuptime.description = "tuptime database owner";
|
||||
};
|
||||
|
||||
systemd = {
|
||||
services = {
|
||||
|
@ -45,7 +48,7 @@ in {
|
|||
serviceConfig = {
|
||||
StateDirectory = "tuptime";
|
||||
Type = "oneshot";
|
||||
User = "tuptime";
|
||||
User = "_tuptime";
|
||||
RemainAfterExit = true;
|
||||
ExecStart = "${pkgs.tuptime}/bin/tuptime -x";
|
||||
ExecStop = "${pkgs.tuptime}/bin/tuptime -xg";
|
||||
|
@ -57,7 +60,7 @@ in {
|
|||
serviceConfig = {
|
||||
StateDirectory = "tuptime";
|
||||
Type = "oneshot";
|
||||
User = "tuptime";
|
||||
User = "_tuptime";
|
||||
ExecStart = "${pkgs.tuptime}/bin/tuptime -x";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -12,6 +12,19 @@ let
|
|||
(optionalString (cfg.defaultMode == "norouting") "--routing=none")
|
||||
] ++ cfg.extraFlags);
|
||||
|
||||
splitMulitaddr = addrRaw: lib.tail (lib.splitString "/" addrRaw);
|
||||
|
||||
multiaddrToListenStream = addrRaw: let
|
||||
addr = splitMulitaddr addrRaw;
|
||||
s = builtins.elemAt addr;
|
||||
in if s 0 == "ip4" && s 2 == "tcp"
|
||||
then "${s 1}:${s 3}"
|
||||
else if s 0 == "ip6" && s 2 == "tcp"
|
||||
then "[${s 1}]:${s 3}"
|
||||
else if s 0 == "unix"
|
||||
then "/${lib.concatStringsSep "/" (lib.tail addr)}"
|
||||
else null; # not valid for listen stream, skip
|
||||
|
||||
in {
|
||||
|
||||
###### interface
|
||||
|
@ -80,7 +93,10 @@ in {
|
|||
|
||||
swarmAddress = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "/ip4/0.0.0.0/tcp/4001" "/ip6/::/tcp/4001" ];
|
||||
default = [
|
||||
"/ip4/0.0.0.0/tcp/4001"
|
||||
"/ip6/::/tcp/4001"
|
||||
];
|
||||
description = "Where IPFS listens for incoming p2p connections";
|
||||
};
|
||||
|
||||
|
@ -250,14 +266,18 @@ in {
|
|||
|
||||
systemd.sockets.ipfs-gateway = {
|
||||
wantedBy = [ "sockets.target" ];
|
||||
socketConfig.ListenStream = [ "" ]
|
||||
++ lib.optional (cfg.gatewayAddress == opt.gatewayAddress.default) [ "127.0.0.1:8080" "[::1]:8080" ];
|
||||
socketConfig.ListenStream = let
|
||||
fromCfg = multiaddrToListenStream cfg.gatewayAddress;
|
||||
in [ "" ] ++ lib.optional (fromCfg != null) fromCfg;
|
||||
};
|
||||
|
||||
systemd.sockets.ipfs-api = {
|
||||
wantedBy = [ "sockets.target" ];
|
||||
socketConfig.ListenStream = [ "" "%t/ipfs.sock" ]
|
||||
++ lib.optional (cfg.apiAddress == opt.apiAddress.default) [ "127.0.0.1:5001" "[::1]:5001" ];
|
||||
# We also include "%t/ipfs.sock" because tere is no way to put the "%t"
|
||||
# in the multiaddr.
|
||||
socketConfig.ListenStream = let
|
||||
fromCfg = multiaddrToListenStream cfg.apiAddress;
|
||||
in [ "" "%t/ipfs.sock" ] ++ lib.optional (fromCfg != null) fromCfg;
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -109,8 +109,8 @@ in
|
|||
|
||||
httpListenAddr = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0";
|
||||
example = "1.2.3.4";
|
||||
default = "[::1]";
|
||||
example = "0.0.0.0";
|
||||
description = ''
|
||||
HTTP address to bind to.
|
||||
'';
|
||||
|
@ -206,16 +206,16 @@ in
|
|||
|
||||
If you would like to be able to modify the contents of this
|
||||
directories, it is recommended that you make your user a
|
||||
member of the <literal>resilio</literal> group.
|
||||
member of the <literal>rslsync</literal> group.
|
||||
|
||||
Directories in this list should be in the
|
||||
<literal>resilio</literal> group, and that group must have
|
||||
<literal>rslsync</literal> group, and that group must have
|
||||
write access to the directory. It is also recommended that
|
||||
<literal>chmod g+s</literal> is applied to the directory
|
||||
so that any sub directories created will also belong to
|
||||
the <literal>resilio</literal> group. Also,
|
||||
<literal>setfacl -d -m group:resilio:rwx</literal> and
|
||||
<literal>setfacl -m group:resilio:rwx</literal> should also
|
||||
the <literal>rslsync</literal> group. Also,
|
||||
<literal>setfacl -d -m group:rslsync:rwx</literal> and
|
||||
<literal>setfacl -m group:rslsync:rwx</literal> should also
|
||||
be applied so that the sub directories are writable by
|
||||
the group.
|
||||
'';
|
||||
|
|
158
third_party/nixpkgs/nixos/modules/services/networking/wasabibackend.nix
vendored
Normal file
158
third_party/nixpkgs/nixos/modules/services/networking/wasabibackend.nix
vendored
Normal file
|
@ -0,0 +1,158 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.wasabibackend;
|
||||
|
||||
inherit (lib) mkEnableOption mkIf mkOption optionalAttrs optionalString types;
|
||||
|
||||
confOptions = {
|
||||
BitcoinRpcConnectionString = "${cfg.rpc.user}:${cfg.rpc.password}";
|
||||
} // optionalAttrs (cfg.network == "mainnet") {
|
||||
Network = "Main";
|
||||
MainNetBitcoinP2pEndPoint = "${cfg.endpoint.ip}:${toString cfg.endpoint.port}";
|
||||
MainNetBitcoinCoreRpcEndPoint = "${cfg.rpc.ip}:${toString cfg.rpc.port}";
|
||||
} // optionalAttrs (cfg.network == "testnet") {
|
||||
Network = "TestNet";
|
||||
TestNetBitcoinP2pEndPoint = "${cfg.endpoint.ip}:${toString cfg.endpoint.port}";
|
||||
TestNetBitcoinCoreRpcEndPoint = "${cfg.rpc.ip}:${toString cfg.rpc.port}";
|
||||
} // optionalAttrs (cfg.network == "regtest") {
|
||||
Network = "RegTest";
|
||||
RegTestBitcoinP2pEndPoint = "${cfg.endpoint.ip}:${toString cfg.endpoint.port}";
|
||||
RegTestBitcoinCoreRpcEndPoint = "${cfg.rpc.ip}:${toString cfg.rpc.port}";
|
||||
};
|
||||
|
||||
configFile = pkgs.writeText "wasabibackend.conf" (builtins.toJSON confOptions);
|
||||
|
||||
in {
|
||||
|
||||
options = {
|
||||
|
||||
services.wasabibackend = {
|
||||
enable = mkEnableOption "Wasabi backend service";
|
||||
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/wasabibackend";
|
||||
description = "The data directory for the Wasabi backend node.";
|
||||
};
|
||||
|
||||
customConfigFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "Defines the path to a custom configuration file that is copied to the user's directory. Overrides any config options.";
|
||||
};
|
||||
|
||||
network = mkOption {
|
||||
type = types.enum [ "mainnet" "testnet" "regtest" ];
|
||||
default = "mainnet";
|
||||
description = "The network to use for the Wasabi backend service.";
|
||||
};
|
||||
|
||||
endpoint = {
|
||||
ip = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "IP address for P2P connection to bitcoind.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8333;
|
||||
description = "Port for P2P connection to bitcoind.";
|
||||
};
|
||||
};
|
||||
|
||||
rpc = {
|
||||
ip = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "IP address for RPC connection to bitcoind.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8332;
|
||||
description = "Port for RPC connection to bitcoind.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "bitcoin";
|
||||
description = "RPC user for the bitcoin endpoint.";
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
type = types.str;
|
||||
default = "password";
|
||||
description = "RPC password for the bitcoin endpoint. Warning: this is stored in cleartext in the Nix store! Use <literal>configFile</literal> or <literal>passwordFile</literal> if needed.";
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "File that contains the password of the RPC user.";
|
||||
};
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "wasabibackend";
|
||||
description = "The user as which to run the wasabibackend node.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = "The group as which to run the wasabibackend node.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.dataDir}' 0770 '${cfg.user}' '${cfg.group}' - -"
|
||||
];
|
||||
|
||||
systemd.services.wasabibackend = {
|
||||
description = "wasabibackend server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
environment = {
|
||||
DOTNET_PRINT_TELEMETRY_MESSAGE = "false";
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT = "true";
|
||||
};
|
||||
preStart = ''
|
||||
mkdir -p ${cfg.dataDir}/.walletwasabi/backend
|
||||
${if cfg.customConfigFile != null then ''
|
||||
cp -v ${cfg.customConfigFile} ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||
'' else ''
|
||||
cp -v ${configFile} ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||
${optionalString (cfg.rpc.passwordFile != null) ''
|
||||
CONFIGTMP=$(mktemp)
|
||||
cat ${cfg.dataDir}/.walletwasabi/backend/Config.json | ${pkgs.jq}/bin/jq --arg rpconnection "${cfg.rpc.user}:$(cat "${cfg.rpc.passwordFile}")" '. + { BitcoinRpcConnectionString: $rpconnection }' > $CONFIGTMP
|
||||
mv $CONFIGTMP ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||
''}
|
||||
''}
|
||||
chmod ug+w ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||
'';
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
ExecStart = "${pkgs.wasabibackend}/bin/WasabiBackend";
|
||||
ProtectSystem = "full";
|
||||
};
|
||||
};
|
||||
|
||||
users.users.${cfg.user} = {
|
||||
name = cfg.user;
|
||||
group = cfg.group;
|
||||
description = "wasabibackend daemon user";
|
||||
home = cfg.dataDir;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.${cfg.group} = {};
|
||||
|
||||
};
|
||||
}
|
|
@ -17,6 +17,10 @@ let
|
|||
lib.generators.toGitINI cfg.settings
|
||||
);
|
||||
|
||||
replicationConfig = pkgs.writeText "replication.conf" (
|
||||
lib.generators.toGitINI cfg.replicationSettings
|
||||
);
|
||||
|
||||
# Wrap the gerrit java with all the java options so it can be called
|
||||
# like a normal CLI app
|
||||
gerrit-cli = pkgs.writeShellScriptBin "gerrit" ''
|
||||
|
@ -106,6 +110,15 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
replicationSettings = mkOption {
|
||||
type = gitIniType;
|
||||
default = {};
|
||||
description = ''
|
||||
Replication configuration. This will be generated to the
|
||||
<literal>etc/replication.config</literal> file.
|
||||
'';
|
||||
};
|
||||
|
||||
plugins = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
|
@ -138,6 +151,13 @@ in
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.replicationSettings != {} -> elem "replication" cfg.builtinPlugins;
|
||||
message = "Gerrit replicationSettings require enabling the replication plugin";
|
||||
}
|
||||
];
|
||||
|
||||
services.gerrit.settings = {
|
||||
cache.directory = "/var/cache/gerrit";
|
||||
container.heapLimit = cfg.jvmHeapLimit;
|
||||
|
@ -194,6 +214,7 @@ in
|
|||
|
||||
# copy the config, keep it mutable because Gerrit
|
||||
ln -sfv ${gerritConfig} etc/gerrit.config
|
||||
ln -sfv ${replicationConfig} etc/replication.config
|
||||
|
||||
# install the plugins
|
||||
rm -rf plugins
|
||||
|
|
|
@ -69,7 +69,7 @@ in {
|
|||
package = mkOption {
|
||||
type = types.package;
|
||||
description = "Which package to use for the Nextcloud instance.";
|
||||
relatedPackages = [ "nextcloud17" "nextcloud18" ];
|
||||
relatedPackages = [ "nextcloud17" "nextcloud18" "nextcloud19" ];
|
||||
};
|
||||
|
||||
maxUploadSize = mkOption {
|
||||
|
@ -303,6 +303,14 @@ in {
|
|||
'';
|
||||
};
|
||||
};
|
||||
occ = mkOption {
|
||||
type = types.package;
|
||||
default = occ;
|
||||
internal = true;
|
||||
description = ''
|
||||
The nextcloud-occ program preconfigured to target this Nextcloud instance.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
|
@ -336,7 +344,16 @@ in {
|
|||
server, and wait until the upgrade to 17 is finished.
|
||||
|
||||
Then, set `services.nextcloud.package` to `pkgs.nextcloud18` to upgrade to
|
||||
Nextcloud version 18.
|
||||
Nextcloud version 18. Please note that Nextcloud 19 is already out and it's
|
||||
recommended to upgrade to nextcloud19 after that.
|
||||
'')
|
||||
++ (optional (versionOlder cfg.package.version "19") ''
|
||||
A legacy Nextcloud install (from before NixOS 20.09/unstable) may be installed.
|
||||
|
||||
If/After nextcloud18 is installed successfully, you can safely upgrade to
|
||||
nextcloud19. If not, please upgrade to nextcloud18 first since Nextcloud doesn't
|
||||
support upgrades that skip multiple versions (i.e. an upgrade from 17 to 19 isn't
|
||||
possible, but an upgrade from 18 to 19).
|
||||
'');
|
||||
|
||||
services.nextcloud.package = with pkgs;
|
||||
|
@ -348,7 +365,8 @@ in {
|
|||
`pkgs.nextcloud`.
|
||||
''
|
||||
else if versionOlder stateVersion "20.03" then nextcloud17
|
||||
else nextcloud18
|
||||
else if versionOlder stateVersion "20.09" then nextcloud18
|
||||
else nextcloud19
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -360,6 +378,11 @@ in {
|
|||
};
|
||||
|
||||
systemd.services = {
|
||||
# When upgrading the Nextcloud package, Nextcloud can report errors such as
|
||||
# "The files of the app [all apps in /var/lib/nextcloud/apps] were not replaced correctly"
|
||||
# Restarting phpfpm on Nextcloud package update fixes these issues (but this is a workaround).
|
||||
phpfpm-nextcloud.restartTriggers = [ cfg.package ];
|
||||
|
||||
nextcloud-setup = let
|
||||
c = cfg.config;
|
||||
writePhpArrary = a: "[${concatMapStringsSep "," (val: ''"${toString val}"'') a}]";
|
||||
|
|
|
@ -161,5 +161,11 @@
|
|||
};
|
||||
}</programlisting>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Ideally we should make sure that it's possible to jump two NixOS versions forward:
|
||||
i.e. the warnings and the logic in the module should guard a user to upgrade from a
|
||||
Nextcloud on e.g. 19.09 to a Nextcloud on 20.09.
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
|
|
@ -20,10 +20,10 @@ let
|
|||
in valueType;
|
||||
dynamicConfigFile = if cfg.dynamicConfigFile == null then
|
||||
pkgs.runCommand "config.toml" {
|
||||
buildInputs = [ pkgs.remarshal ];
|
||||
buildInputs = [ pkgs.yj ];
|
||||
preferLocalBuild = true;
|
||||
} ''
|
||||
remarshal -if json -of toml \
|
||||
yj -jt -i \
|
||||
< ${
|
||||
pkgs.writeText "dynamic_config.json"
|
||||
(builtins.toJSON cfg.dynamicConfigOptions)
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
#! @bash@/bin/sh -e
|
||||
#! @bash@/bin/sh
|
||||
|
||||
# This can end up being called disregarding the shebang.
|
||||
set -e
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
|
|
|
@ -47,9 +47,9 @@ def write_loader_conf(profile, generation):
|
|||
if "@timeout@" != "":
|
||||
f.write("timeout @timeout@\n")
|
||||
if profile:
|
||||
f.write("default nixos-%s-generation-%d.conf\n".format(profile, generation))
|
||||
f.write("default nixos-%s-generation-%d.conf\n" % (profile, generation))
|
||||
else:
|
||||
f.write("default nixos-generation-%d.conf\n".format(generation))
|
||||
f.write("default nixos-generation-%d.conf\n" % (generation))
|
||||
if not @editor@:
|
||||
f.write("editor 0\n");
|
||||
f.write("console-mode @consoleMode@\n");
|
||||
|
|
|
@ -233,6 +233,7 @@ in rec {
|
|||
|
||||
path = mkOption {
|
||||
default = [];
|
||||
type = with types; listOf (oneOf [ package str ]);
|
||||
apply = ps: "${makeBinPath ps}:${makeSearchPathOutput "bin" "sbin" ps}";
|
||||
description = ''
|
||||
Packages added to the service's <envar>PATH</envar>
|
||||
|
|
|
@ -128,7 +128,10 @@ in
|
|||
Nice = 19;
|
||||
IOSchedulingClass = "idle";
|
||||
ExecStart = "${pkgs.btrfs-progs}/bin/btrfs scrub start -B ${fs}";
|
||||
ExecStop = "${pkgs.btrfs-progs}/bin/btrfs scrub cancel ${fs}";
|
||||
# if the service is stopped before scrub end, cancel it
|
||||
ExecStop = pkgs.writeShellScript "btrfs-scrub-maybe-cancel" ''
|
||||
(${pkgs.btrfs-progs}/bin/btrfs scrub status ${fs} | ${pkgs.gnugrep}/bin/grep finished) || ${pkgs.btrfs-progs}/bin/btrfs scrub cancel ${fs}
|
||||
'';
|
||||
};
|
||||
};
|
||||
in listToAttrs (map scrubService cfgScrub.fileSystems);
|
||||
|
|
|
@ -236,6 +236,7 @@ in
|
|||
nginx-pubhtml = handleTest ./nginx-pubhtml.nix {};
|
||||
nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {};
|
||||
nginx-sso = handleTest ./nginx-sso.nix {};
|
||||
nginx-variants = handleTest ./nginx-variants.nix {};
|
||||
nix-ssh-serve = handleTest ./nix-ssh-serve.nix {};
|
||||
nixos-generate-config = handleTest ./nixos-generate-config.nix {};
|
||||
novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
|
||||
|
@ -345,6 +346,7 @@ in
|
|||
vault = handleTest ./vault.nix {};
|
||||
victoriametrics = handleTest ./victoriametrics.nix {};
|
||||
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
|
||||
wasabibackend = handleTest ./wasabibackend.nix {};
|
||||
wireguard = handleTest ./wireguard {};
|
||||
wordpress = handleTest ./wordpress.nix {};
|
||||
xandikos = handleTest ./xandikos.nix {};
|
||||
|
|
14
third_party/nixpkgs/nixos/tests/docker-tools.nix
vendored
14
third_party/nixpkgs/nixos/tests/docker-tools.nix
vendored
|
@ -42,6 +42,20 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||
"docker rmi ${examples.nix.imageName}",
|
||||
)
|
||||
|
||||
with subtest("The nix binary symlinks are intact"):
|
||||
docker.succeed(
|
||||
"docker load --input='${examples.nix}'",
|
||||
"docker run --rm ${examples.nix.imageName} ${pkgs.bash}/bin/bash -c 'test nix == $(readlink ${pkgs.nix}/bin/nix-daemon)'",
|
||||
"docker rmi ${examples.nix.imageName}",
|
||||
)
|
||||
|
||||
with subtest("The nix binary symlinks are intact when the image is layered"):
|
||||
docker.succeed(
|
||||
"docker load --input='${examples.nixLayered}'",
|
||||
"docker run --rm ${examples.nixLayered.imageName} ${pkgs.bash}/bin/bash -c 'test nix == $(readlink ${pkgs.nix}/bin/nix-daemon)'",
|
||||
"docker rmi ${examples.nixLayered.imageName}",
|
||||
)
|
||||
|
||||
with subtest("The pullImage tool works"):
|
||||
docker.succeed(
|
||||
"docker load --input='${examples.nixFromDockerHub}'",
|
||||
|
|
|
@ -2,28 +2,18 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
|||
|
||||
let
|
||||
configDir = "/var/lib/foobar";
|
||||
apiPassword = "some_secret";
|
||||
mqttPassword = "another_secret";
|
||||
hassCli = "hass-cli --server http://hass:8123 --password '${apiPassword}'";
|
||||
mqttPassword = "secret";
|
||||
in {
|
||||
name = "home-assistant";
|
||||
meta = with pkgs.stdenv.lib; {
|
||||
maintainers = with maintainers; [ dotlambda ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
hass =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
mosquitto home-assistant-cli
|
||||
];
|
||||
nodes.hass = { pkgs, ... }: {
|
||||
environment.systemPackages = with pkgs; [ mosquitto ];
|
||||
services.home-assistant = {
|
||||
inherit configDir;
|
||||
enable = true;
|
||||
package = pkgs.home-assistant.override {
|
||||
extraPackages = ps: with ps; [ hbmqtt ];
|
||||
};
|
||||
config = {
|
||||
homeassistant = {
|
||||
name = "Home";
|
||||
|
@ -31,41 +21,35 @@ in {
|
|||
latitude = "0.0";
|
||||
longitude = "0.0";
|
||||
elevation = 0;
|
||||
auth_providers = [
|
||||
{
|
||||
type = "legacy_api_password";
|
||||
api_password = apiPassword;
|
||||
}
|
||||
];
|
||||
};
|
||||
frontend = { };
|
||||
mqtt = { # Use hbmqtt as broker
|
||||
password = mqttPassword;
|
||||
};
|
||||
binary_sensor = [
|
||||
{
|
||||
frontend = {};
|
||||
# uses embedded mqtt broker
|
||||
mqtt.password = mqttPassword;
|
||||
binary_sensor = [{
|
||||
platform = "mqtt";
|
||||
state_topic = "home-assistant/test";
|
||||
payload_on = "let_there_be_light";
|
||||
payload_off = "off";
|
||||
}
|
||||
];
|
||||
}];
|
||||
logger = {
|
||||
default = "info";
|
||||
logs."homeassistant.components.mqtt" = "debug";
|
||||
};
|
||||
};
|
||||
lovelaceConfig = {
|
||||
title = "My Awesome Home";
|
||||
views = [ {
|
||||
views = [{
|
||||
title = "Example";
|
||||
cards = [ {
|
||||
cards = [{
|
||||
type = "markdown";
|
||||
title = "Lovelace";
|
||||
content = "Welcome to your **Lovelace UI**.";
|
||||
} ];
|
||||
} ];
|
||||
}];
|
||||
}];
|
||||
};
|
||||
lovelaceConfigWritable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
@ -77,28 +61,13 @@ in {
|
|||
with subtest("Check that Home Assistant's web interface and API can be reached"):
|
||||
hass.wait_for_open_port(8123)
|
||||
hass.succeed("curl --fail http://localhost:8123/lovelace")
|
||||
assert "API running" in hass.succeed(
|
||||
"curl --fail -H 'x-ha-access: ${apiPassword}' http://localhost:8123/api/"
|
||||
)
|
||||
with subtest("Toggle a binary sensor using MQTT"):
|
||||
assert '"state": "off"' in hass.succeed(
|
||||
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
|
||||
)
|
||||
# wait for broker to become available
|
||||
hass.wait_until_succeeds(
|
||||
"mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light"
|
||||
)
|
||||
assert '"state": "on"' in hass.succeed(
|
||||
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
|
||||
)
|
||||
with subtest("Toggle a binary sensor using hass-cli"):
|
||||
assert '"state": "on"' in hass.succeed(
|
||||
"${hassCli} --output json state get binary_sensor.mqtt_binary_sensor"
|
||||
"mosquitto_sub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -W 1 -t '*'"
|
||||
)
|
||||
hass.succeed(
|
||||
"${hassCli} state edit binary_sensor.mqtt_binary_sensor --json='{\"state\": \"off\"}'"
|
||||
)
|
||||
assert '"state": "off"' in hass.succeed(
|
||||
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
|
||||
"mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light"
|
||||
)
|
||||
with subtest("Print log to ease debugging"):
|
||||
output_log = hass.succeed("cat ${configDir}/home-assistant.log")
|
||||
|
@ -107,5 +76,9 @@ in {
|
|||
|
||||
with subtest("Check that no errors were logged"):
|
||||
assert "ERROR" not in output_log
|
||||
|
||||
# example line: 2020-06-20 10:01:32 DEBUG (MainThread) [homeassistant.components.mqtt] Received message on home-assistant/test: b'let_there_be_light'
|
||||
with subtest("Check we received the mosquitto message"):
|
||||
assert "let_there_be_light" in output_log
|
||||
'';
|
||||
})
|
||||
|
|
11
third_party/nixpkgs/nixos/tests/ipfs.nix
vendored
11
third_party/nixpkgs/nixos/tests/ipfs.nix
vendored
|
@ -7,21 +7,28 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
|||
nodes.machine = { ... }: {
|
||||
services.ipfs = {
|
||||
enable = true;
|
||||
# Also will add a unix domain socket socket API address, see module.
|
||||
startWhenNeeded = true;
|
||||
apiAddress = "/ip4/127.0.0.1/tcp/2324";
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
machine.wait_for_unit("ipfs")
|
||||
|
||||
machine.wait_until_succeeds("ipfs --api /ip4/127.0.0.1/tcp/2324 id")
|
||||
# IPv4 activation
|
||||
|
||||
machine.succeed("ipfs --api /ip4/127.0.0.1/tcp/2324 id")
|
||||
ipfs_hash = machine.succeed(
|
||||
"echo fnord | ipfs --api /ip4/127.0.0.1/tcp/2324 add | awk '{ print $2 }'"
|
||||
)
|
||||
|
||||
machine.succeed(f"ipfs cat /ipfs/{ipfs_hash.strip()} | grep fnord")
|
||||
|
||||
# Unix domain socket activation
|
||||
|
||||
machine.stop_job("ipfs")
|
||||
|
||||
ipfs_hash = machine.succeed(
|
||||
"echo fnord2 | ipfs --api /unix/run/ipfs.sock add | awk '{ print $2 }'"
|
||||
)
|
||||
|
|
|
@ -26,7 +26,9 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
nextcloud = { config, pkgs, ... }: {
|
||||
nextcloud = { config, pkgs, ... }: let
|
||||
cfg = config;
|
||||
in {
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
|
||||
services.nextcloud = {
|
||||
|
@ -42,6 +44,8 @@ in {
|
|||
startAt = "20:00";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ cfg.services.nextcloud.occ ];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -67,6 +71,8 @@ in {
|
|||
in ''
|
||||
start_all()
|
||||
nextcloud.wait_for_unit("multi-user.target")
|
||||
# This is just to ensure the nextcloud-occ program is working
|
||||
nextcloud.succeed("nextcloud-occ status")
|
||||
nextcloud.succeed("curl -sSf http://nextcloud/login")
|
||||
nextcloud.succeed(
|
||||
"${withRcloneEnv} ${copySharedFile}"
|
||||
|
|
33
third_party/nixpkgs/nixos/tests/nginx-variants.nix
vendored
Normal file
33
third_party/nixpkgs/nixos/tests/nginx-variants.nix
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
pkgs ? import ../.. { inherit system config; }
|
||||
}:
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
|
||||
builtins.listToAttrs (
|
||||
builtins.map
|
||||
(nginxName:
|
||||
{
|
||||
name = nginxName;
|
||||
value = makeTest {
|
||||
name = "nginx-variant-${nginxName}";
|
||||
|
||||
machine = { pkgs, ... }: {
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
virtualHosts.localhost.locations."/".return = "200 'foo'";
|
||||
package = pkgs."${nginxName}";
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("nginx")
|
||||
machine.wait_for_open_port(80)
|
||||
machine.succeed('test "$(curl -fvvv http://localhost/)" = foo')
|
||||
'';
|
||||
};
|
||||
}
|
||||
)
|
||||
[ "nginxStable" "nginxUnstable" "nginxShibboleth" "openresty" "tengine" ]
|
||||
)
|
|
@ -475,6 +475,20 @@ let
|
|||
'';
|
||||
};
|
||||
|
||||
redis = {
|
||||
exporterConfig = {
|
||||
enable = true;
|
||||
};
|
||||
metricProvider.services.redis.enable = true;
|
||||
exporterTest = ''
|
||||
wait_for_unit("redis.service")
|
||||
wait_for_unit("prometheus-redis-exporter.service")
|
||||
wait_for_open_port(6379)
|
||||
wait_for_open_port(9121)
|
||||
wait_until_succeeds("curl -sSf localhost:9121/metrics | grep -q 'redis_up 1'")
|
||||
'';
|
||||
};
|
||||
|
||||
rspamd = {
|
||||
exporterConfig = {
|
||||
enable = true;
|
||||
|
|
38
third_party/nixpkgs/nixos/tests/wasabibackend.nix
vendored
Normal file
38
third_party/nixpkgs/nixos/tests/wasabibackend.nix
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "wasabibackend";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ mmahut ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
machine = { ... }: {
|
||||
services.wasabibackend = {
|
||||
enable = true;
|
||||
network = "testnet";
|
||||
rpc = {
|
||||
user = "alice";
|
||||
port = 18332;
|
||||
};
|
||||
};
|
||||
services.bitcoind = {
|
||||
enable = true;
|
||||
testnet = true;
|
||||
rpc.users = {
|
||||
alice.passwordHMAC = "e7096bc21da60b29ecdbfcdb2c3acc62$f948e61cb587c399358ed99c6ed245a41460b4bf75125d8330c9f6fcc13d7ae7";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
machine.wait_for_unit("wasabibackend.service")
|
||||
machine.wait_until_succeeds(
|
||||
"grep 'Wasabi Backend started' /var/lib/wasabibackend/.walletwasabi/backend/Logs.txt"
|
||||
)
|
||||
machine.sleep(5)
|
||||
machine.succeed(
|
||||
"grep 'Config is successfully initialized' /var/lib/wasabibackend/.walletwasabi/backend/Logs.txt"
|
||||
)
|
||||
'';
|
||||
})
|
49
third_party/nixpkgs/pkgs/applications/audio/librespot/default.nix
vendored
Normal file
49
third_party/nixpkgs/pkgs/applications/audio/librespot/default.nix
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl
|
||||
, withRodio ? true
|
||||
, withALSA ? true, alsaLib ? null
|
||||
, withPulseAudio ? false, libpulseaudio ? null
|
||||
, withPortAudio ? false, portaudio ? null
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "librespot";
|
||||
version = "0.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "librespot-org";
|
||||
repo = "librespot";
|
||||
rev = "v${version}";
|
||||
sha256 = "1sdbjv8w2mfpv82rx5iy4s532l1767vmlrg9d8khnvh8vrm2lshy";
|
||||
};
|
||||
|
||||
cargoSha256 = "0zi50imjvalwl6pxl35qrmbg74j5xdfaws8v69am4g9agbfjvlms";
|
||||
|
||||
cargoBuildFlags = with stdenv.lib; [
|
||||
"--no-default-features"
|
||||
"--features"
|
||||
(concatStringsSep "," (filter (x: x != "") [
|
||||
(optionalString withRodio "rodio-backend")
|
||||
(optionalString withALSA "alsa-backend")
|
||||
(optionalString withPulseAudio "pulseaudio-backend")
|
||||
(optionalString withPortAudio "portaudio-backend")
|
||||
|
||||
]))
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
||||
buildInputs = [ openssl ]
|
||||
++ stdenv.lib.optional withALSA alsaLib
|
||||
++ stdenv.lib.optional withPulseAudio libpulseaudio
|
||||
++ stdenv.lib.optional withPortAudio portaudio;
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Open Source Spotify client library and playback daemon";
|
||||
homepage = "https://github.com/librespot-org/librespot";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ bennofs ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
|
@ -3,11 +3,11 @@
|
|||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mpg123-1.25.13";
|
||||
name = "mpg123-1.26.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/mpg123/${name}.tar.bz2";
|
||||
sha256 = "02l915jq0ymndb082g6w89bpf66z04ifa1lr7ga3yycw6m46hc4h";
|
||||
sha256 = "0cp01wdy77ggzqzzasxd5jd9iypcly5m4c89idc9mpgknyd65mkl";
|
||||
};
|
||||
|
||||
buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
|
||||
|
|
41
third_party/nixpkgs/pkgs/applications/blockchains/bitcoin-knots.nix
vendored
Normal file
41
third_party/nixpkgs/pkgs/applications/blockchains/bitcoin-knots.nix
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, pkgconfig
|
||||
, autoreconfHook
|
||||
, db5
|
||||
, openssl
|
||||
, boost
|
||||
, zlib
|
||||
, miniupnpc
|
||||
, libevent
|
||||
, protobuf
|
||||
, utillinux
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bitcoind-knots";
|
||||
version = "0.20.0";
|
||||
versionDate = "20200614";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitcoinknots";
|
||||
repo = "bitcoin";
|
||||
rev = "v${version}.knots${versionDate}";
|
||||
sha256 = "0c8k1154kcwz6q2803wx0zigvqaij1fi5akgfqlj3yl57jjw48jj";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig autoreconfHook ];
|
||||
buildInputs = [ openssl db5 openssl utillinux
|
||||
protobuf boost zlib miniupnpc libevent ];
|
||||
|
||||
configureFlags = [ "--with-incompatible-bdb"
|
||||
"--with-boost-libdir=${boost.out}/lib" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "An enhanced Bitcoin node software";
|
||||
homepage = "https://bitcoinknots.org/";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.mmahut ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
, qtmultimedia, qtxmlpatterns
|
||||
, qtquickcontrols, qtquickcontrols2
|
||||
, monero, unbound, readline, boost, libunwind
|
||||
, libsodium, pcsclite, zeromq, cppzmq
|
||||
, libsodium, pcsclite, zeromq, libgcrypt, libgpgerror
|
||||
, hidapi, libusb-compat-0_1, protobuf, randomx
|
||||
}:
|
||||
|
||||
|
@ -12,13 +12,13 @@ with stdenv.lib;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "monero-gui";
|
||||
version = "0.15.0.4";
|
||||
version = "0.16.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "monero-project";
|
||||
repo = "monero-gui";
|
||||
rev = "v${version}";
|
||||
sha256 = "12m5fgnxkr11q2arx1m5ccpxqm5ljcvm6l547dwqn297zs5jim4z";
|
||||
sha256 = "06vdrsj5y9k0zn32hspyxc7sw1kkyrvi3chzkdbnxk9jvyj8k4ld";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake pkgconfig wrapQtAppsHook ];
|
||||
|
@ -27,9 +27,9 @@ stdenv.mkDerivation rec {
|
|||
qtbase qtdeclarative qtgraphicaleffects
|
||||
qtmultimedia qtquickcontrols qtquickcontrols2
|
||||
qtxmlpatterns
|
||||
monero unbound readline
|
||||
monero unbound readline libgcrypt libgpgerror
|
||||
boost libunwind libsodium pcsclite zeromq
|
||||
cppzmq hidapi libusb-compat-0_1 protobuf randomx
|
||||
hidapi libusb-compat-0_1 protobuf randomx
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = [ "-Wno-error=format-security" ];
|
||||
|
@ -52,6 +52,10 @@ stdenv.mkDerivation rec {
|
|||
preBuild = ''
|
||||
sed -i s#/opt/monero-wallet-gui##g Makefile
|
||||
make -C src/zxcvbn-c
|
||||
|
||||
# use nixpkgs monero sources
|
||||
rmdir monero
|
||||
ln -s "${monero.src}" monero
|
||||
'';
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ stdenv, fetchFromGitHub
|
||||
, cmake, pkgconfig
|
||||
, boost, miniupnpc, openssl, unbound, cppzmq
|
||||
, boost, miniupnpc, openssl, unbound
|
||||
, zeromq, pcsclite, readline, libsodium, hidapi
|
||||
, pythonProtobuf, randomx, rapidjson, libusb-compat-0_1
|
||||
, CoreData, IOKit, PCSC
|
||||
|
@ -10,13 +10,13 @@ assert stdenv.isDarwin -> IOKit != null;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "monero";
|
||||
version = "0.15.0.1";
|
||||
version = "0.16.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "monero-project";
|
||||
repo = "monero";
|
||||
rev = "v${version}";
|
||||
sha256 = "0sypa235lf2bbib4b71xpaw39h9304slgsvnsz8wmy9fq1zx009m";
|
||||
sha256 = "0x74h5z0nxxxip97ibc854pqmrgd8r4d6w62m424f66i8gbzfskh";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
@ -24,13 +24,14 @@ stdenv.mkDerivation rec {
|
|||
|
||||
buildInputs = [
|
||||
boost miniupnpc openssl unbound
|
||||
cppzmq zeromq pcsclite readline
|
||||
zeromq pcsclite readline
|
||||
libsodium hidapi randomx rapidjson
|
||||
pythonProtobuf libusb-compat-0_1
|
||||
] ++ stdenv.lib.optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DUSE_DEVICE_TREZOR=ON"
|
||||
"-DBUILD_GUI_DEPS=ON"
|
||||
"-DReadline_ROOT_DIR=${readline.dev}"
|
||||
] ++ stdenv.lib.optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF";
|
||||
|
|
98
third_party/nixpkgs/pkgs/applications/blockchains/wasabibackend/create_deps.sh
vendored
Normal file
98
third_party/nixpkgs/pkgs/applications/blockchains/wasabibackend/create_deps.sh
vendored
Normal file
|
@ -0,0 +1,98 @@
|
|||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i bash -p dotnet-sdk_3 nixfmt
|
||||
|
||||
# Run this script to generate deps.nix
|
||||
# ./create_deps.sh /path/to/package/source/checkout > deps.nix
|
||||
|
||||
# TODO: consolidate with other dotnet deps generation scripts by which
|
||||
# this script is inspired:
|
||||
# - pkgs/servers/nosql/eventstore/create-deps.sh
|
||||
# - pkgs/development/dotnet-modules/python-language-server/create_deps.sh
|
||||
|
||||
URLBASE="https://www.nuget.org/api/v2/package"
|
||||
|
||||
DEPS_HEADER="
|
||||
{ fetchurl }:
|
||||
let
|
||||
nugetUrlBase = \"$URLBASE\";
|
||||
fetchNuGet = { name, version, sha256 }: fetchurl {
|
||||
inherit sha256;
|
||||
url = \"\${nugetUrlBase}/\${name}/\${version}\";
|
||||
};
|
||||
in ["
|
||||
|
||||
DEPS_FOOTER="]"
|
||||
|
||||
DEPS_TEMPLATE="
|
||||
(fetchNuGet {
|
||||
name = \"%s\";
|
||||
version = \"%s\";
|
||||
sha256 = \"%s\";
|
||||
})"
|
||||
|
||||
|
||||
function generate_restore_log() {
|
||||
checkout_path=$1
|
||||
>&2 echo "generating restore log for $checkout_path..."
|
||||
cd $checkout_path
|
||||
dotnet nuget locals all --clear
|
||||
dotnet restore -v normal --no-cache WalletWasabi.Backend -r linux-x64
|
||||
cd -
|
||||
}
|
||||
|
||||
function process_restore_log() {
|
||||
restore_log=$1
|
||||
>&2 echo "processing restore log..."
|
||||
while read line; do
|
||||
if echo $line | grep -q "^[[:space:]]*Installing"; then
|
||||
l=$(echo $line | xargs)
|
||||
l=${l#Installing }
|
||||
l=${l%.}
|
||||
echo $l
|
||||
fi
|
||||
done < $restore_log
|
||||
}
|
||||
|
||||
function prefetch_deps() {
|
||||
processed_log=$1
|
||||
>&2 echo "prefetching deps..."
|
||||
while read line; do
|
||||
name=$(echo $line | cut -d' ' -f1)
|
||||
>&2 echo "prefetching '$name' version: $version"
|
||||
version=$(echo $line | cut -d' ' -f2)
|
||||
hash=$(nix-prefetch-url "$URLBASE/$name/$version" 2>/dev/null)
|
||||
echo "$name $version $hash"
|
||||
done < $processed_log
|
||||
}
|
||||
|
||||
function generate_deps_expression() {
|
||||
packages=$1
|
||||
>&2 echo "generating deps nix-expression..."
|
||||
echo $DEPS_HEADER
|
||||
while read line; do
|
||||
name=$(echo $line | cut -d' ' -f1)
|
||||
version=$(echo $line | cut -d' ' -f2)
|
||||
hash=$(echo $line | cut -d' ' -f3)
|
||||
printf "$DEPS_TEMPLATE" $name $version $hash
|
||||
done < $packages
|
||||
echo $DEPS_FOOTER
|
||||
}
|
||||
|
||||
function main() {
|
||||
checkout_path=$1
|
||||
tmpdir=$(mktemp -d)
|
||||
generate_restore_log $checkout_path > $tmpdir/restore.log
|
||||
process_restore_log $tmpdir/restore.log > $tmpdir/processed.log
|
||||
prefetch_deps $tmpdir/processed.log > $tmpdir/prefetched.log
|
||||
generate_deps_expression $tmpdir/prefetched.log > $tmpdir/deps.nix
|
||||
nixfmt $tmpdir/deps.nix
|
||||
cat $tmpdir/deps.nix
|
||||
rm -rf $tmpdir
|
||||
}
|
||||
|
||||
if [ ! -d "$1" ]; then
|
||||
>&2 echo "First argument must be a directory, the path to the package source checkout"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
main $@
|
100
third_party/nixpkgs/pkgs/applications/blockchains/wasabibackend/default.nix
vendored
Normal file
100
third_party/nixpkgs/pkgs/applications/blockchains/wasabibackend/default.nix
vendored
Normal file
|
@ -0,0 +1,100 @@
|
|||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchurl
|
||||
, makeWrapper
|
||||
, Nuget
|
||||
, dotnetCorePackages
|
||||
, openssl
|
||||
, zlib
|
||||
}:
|
||||
|
||||
let
|
||||
deps = import ./deps.nix { inherit fetchurl; };
|
||||
|
||||
dotnet-sdk = dotnetCorePackages.sdk_3_1;
|
||||
dotnet-aspnetcore = dotnetCorePackages.aspnetcore_3_1;
|
||||
|
||||
nugetSource = stdenv.mkDerivation {
|
||||
pname = "${pname}-nuget-deps";
|
||||
inherit version;
|
||||
|
||||
dontUnpack = true;
|
||||
dontInstall = true;
|
||||
|
||||
nativeBuildInputs = [ Nuget ];
|
||||
|
||||
buildPhase = ''
|
||||
export HOME=$(mktemp -d)
|
||||
mkdir -p $out/lib
|
||||
|
||||
nuget sources Disable -Name "nuget.org"
|
||||
for package in ${toString deps}; do
|
||||
nuget add $package -Source $out/lib
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
pname = "WasabiBackend";
|
||||
version = "1.1.11.1";
|
||||
|
||||
projectName = "WalletWasabi.Backend";
|
||||
projectConfiguration = "Release";
|
||||
projectRuntime = "linux-x64";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit pname version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zkSNACKs";
|
||||
repo = "WalletWasabi";
|
||||
rev = "v${version}";
|
||||
sha256 = "0kxww8ywhld00b0qsv5jh5s19jqpahnb9mvshmjnp3cb840j12a7";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
Nuget
|
||||
dotnet-sdk
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
export HOME=$(mktemp -d)
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export DOTNET_ROOT="${dotnet-sdk}/bin"
|
||||
|
||||
nuget sources Disable -Name "nuget.org"
|
||||
|
||||
dotnet restore \
|
||||
--source ${nugetSource}/lib \
|
||||
--runtime ${projectRuntime} \
|
||||
${projectName}
|
||||
|
||||
dotnet publish \
|
||||
--no-restore \
|
||||
--runtime ${projectRuntime} \
|
||||
--configuration ${projectConfiguration} \
|
||||
${projectName}
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r ${projectName}/bin/${projectConfiguration}/netcoreapp3.1/${projectRuntime}/publish $out/lib
|
||||
mkdir -p $out/bin
|
||||
makeWrapper $out/lib/WalletWasabi.Backend $out/bin/${pname} \
|
||||
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ openssl zlib ]} \
|
||||
--run "cd $out/lib"
|
||||
'';
|
||||
|
||||
# If we don't disable stripping the executable fails to start with segfault
|
||||
dontStrip = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Backend for the Wasabi Wallet";
|
||||
homepage = "https://wasabiwallet.io/";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ mmahut ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
951
third_party/nixpkgs/pkgs/applications/blockchains/wasabibackend/deps.nix
generated
vendored
Normal file
951
third_party/nixpkgs/pkgs/applications/blockchains/wasabibackend/deps.nix
generated
vendored
Normal file
|
@ -0,0 +1,951 @@
|
|||
{ fetchurl }:
|
||||
let
|
||||
nugetUrlBase = "https://www.nuget.org/api/v2/package";
|
||||
fetchNuGet = { name, version, sha256 }:
|
||||
fetchurl {
|
||||
inherit sha256;
|
||||
url = "${nugetUrlBase}/${name}/${version}";
|
||||
};
|
||||
in [
|
||||
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.XmlSerializer";
|
||||
version = "4.0.11";
|
||||
sha256 = "01nzc3gdslw90qfykq4qzr2mdnqxjl4sj0wp3fixiwdmlmvpib5z";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Overlapped";
|
||||
version = "4.0.1";
|
||||
sha256 = "0fi79az3vmqdp9mv3wh2phblfjls89zlj6p9nc3i9f6wmfarj188";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Principal";
|
||||
version = "4.0.1";
|
||||
sha256 = "1nbzdfqvzzbgsfdd5qsh94d7dbg2v4sw0yx6himyn52zf8z6007p";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Dynamic.Runtime";
|
||||
version = "4.0.11";
|
||||
sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Private.DataContractSerialization";
|
||||
version = "4.1.1";
|
||||
sha256 = "1xk9wvgzipssp1393nsg4n16zbr5481k03nkdlj954hzq5jkx89r";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Win32.Registry";
|
||||
version = "4.0.0";
|
||||
sha256 = "1spf4m9pikkc19544p29a47qnhcd885klncahz133hbnyqbkmz9k";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Emit.Lightweight";
|
||||
version = "4.0.1";
|
||||
sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Emit";
|
||||
version = "4.0.1";
|
||||
sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Emit.ILGeneration";
|
||||
version = "4.0.1";
|
||||
sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.DiagnosticSource";
|
||||
version = "4.0.0";
|
||||
sha256 = "1n6c3fbz7v8d3pn77h4v5wvsfrfg7v1c57lg3nff3cjyh597v23m";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Globalization.Extensions";
|
||||
version = "4.0.1";
|
||||
sha256 = "0hjhdb5ri8z9l93bw04s7ynwrjrhx2n0p34sf33a9hl9phz69fyc";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Cryptography.Cng";
|
||||
version = "4.2.0";
|
||||
sha256 = "118jijz446kix20blxip0f0q8mhsh9bz118mwc2ch1p6g7facpzc";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Cryptography.OpenSsl";
|
||||
version = "4.0.0";
|
||||
sha256 = "16sx3cig3d0ilvzl8xxgffmxbiqx87zdi8fc73i3i7zjih1a7f4q";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Cryptography.Csp";
|
||||
version = "4.0.0";
|
||||
sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.native.System.Net.Http";
|
||||
version = "4.0.1";
|
||||
sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Tasks.Extensions";
|
||||
version = "4.0.0";
|
||||
sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.native.System.IO.Compression";
|
||||
version = "4.1.0";
|
||||
sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Extensions.FileProviders.Physical";
|
||||
version = "2.0.0";
|
||||
sha256 = "0l0l92g7sq4122n139av1pn1jl6wlw92hjmdnr47xdss0ndmwrs3";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.VisualStudio.Web.CodeGeneration.Contracts";
|
||||
version = "2.0.2";
|
||||
sha256 = "1fs6sbjn0chx6rv38d61zgk8mhyyxz44xp4wsfya0lvkckyszyn1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.App";
|
||||
version = "2.0.5";
|
||||
sha256 = "0qb7k624w7l0zhapdp519ymqg84a67r8zyd8cpj42hywsgb0dqv6";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.VisualStudio.Web.CodeGeneration.Tools";
|
||||
version = "2.0.2";
|
||||
sha256 = "0fkjm06irs53d77z29i6dwj5pjhgj9ivhad8v39ghnrwasc0ivq6";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "NuGet.Frameworks";
|
||||
version = "4.0.0";
|
||||
sha256 = "0nar684cm53cvzx28gzl6kmpg9mrfr1yv29323din7xqal4pscgq";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.native.System";
|
||||
version = "4.0.0";
|
||||
sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Buffers";
|
||||
version = "4.0.0";
|
||||
sha256 = "13s659bcmg9nwb6z78971z1lr6bmh2wghxi1ayqyzl4jijd351gr";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Build.Runtime";
|
||||
version = "15.3.409";
|
||||
sha256 = "135ycnqz5jfg61y5zaapgc7xdpjx2aq4icmxb9ph7h5inl445q7q";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Newtonsoft.Json";
|
||||
version = "10.0.1";
|
||||
sha256 = "15ncqic3p2rzs8q8ppi0irl2miq75kilw4lh8yfgjq96id0ds3hv";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Extensions.FileSystemGlobbing";
|
||||
version = "2.0.0";
|
||||
sha256 = "02lzy6r14ghwfwm384xajq08vv3pl3ww0mi5isrr10vivhijhgg4";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.native.System.Security.Cryptography";
|
||||
version = "4.0.0";
|
||||
sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Extensions.FileProviders.Abstractions";
|
||||
version = "2.0.0";
|
||||
sha256 = "0d6y5isjy6jpf4w3f3w89cwh9p40glzhwvm7cwhx05wkqd8bk9w4";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.Targets";
|
||||
version = "1.0.1";
|
||||
sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.Platforms";
|
||||
version = "2.0.1";
|
||||
sha256 = "1j2hmnivgb4plni2dd205kafzg6mkg7r4knrd3s7mg75wn2l25np";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.DotNetHostPolicy";
|
||||
version = "2.0.5";
|
||||
sha256 = "0v5csskiwpk8kz8wclqad8kcjmxr7ik4w99wl05740qvaag3qysk";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "NETStandard.Library";
|
||||
version = "2.0.1";
|
||||
sha256 = "0d44wjxphs1ck838v7dapm0ag0b91zpiy33cr5vflsrwrqgj51dk";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Globalization.Extensions";
|
||||
version = "4.3.0";
|
||||
sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Serialization.Primitives";
|
||||
version = "4.3.0";
|
||||
sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Numerics";
|
||||
version = "4.3.0";
|
||||
sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Serialization.Formatters";
|
||||
version = "4.3.0";
|
||||
sha256 = "114j35n8gcvn3sqv9ar36r1jjq0y1yws9r0yk8i6wm4aq7n9rs0m";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.XmlDocument";
|
||||
version = "4.3.0";
|
||||
sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Collections";
|
||||
version = "4.3.0";
|
||||
sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.Debug";
|
||||
version = "4.3.0";
|
||||
sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Resources.ResourceManager";
|
||||
version = "4.3.0";
|
||||
sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Extensions";
|
||||
version = "4.3.0";
|
||||
sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Handles";
|
||||
version = "4.3.0";
|
||||
sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Text.Encoding.Extensions";
|
||||
version = "4.3.0";
|
||||
sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Globalization";
|
||||
version = "4.3.0";
|
||||
sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Linq";
|
||||
version = "4.3.0";
|
||||
sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Text.Encoding";
|
||||
version = "4.3.0";
|
||||
sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.ObjectModel";
|
||||
version = "4.3.0";
|
||||
sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.DotNetAppHost";
|
||||
version = "2.0.5";
|
||||
sha256 = "00bsxdg9c8msjxyffvfi8siqk8v2m7ca8fqy1npv7b2pzg3byjws";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.CompilerServices.Unsafe";
|
||||
version = "4.4.0";
|
||||
sha256 = "0a6ahgi5b148sl5qyfpyw383p3cb4yrkm802k29fsi4mxkiwir29";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading";
|
||||
version = "4.3.0";
|
||||
sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.CSharp";
|
||||
version = "4.3.0";
|
||||
sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO.Pipes";
|
||||
version = "4.0.0";
|
||||
sha256 = "0fxfvcf55s9q8zsykwh8dkq2xb5jcqnml2ycq8srfry2l07h18za";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Text.RegularExpressions";
|
||||
version = "4.3.0";
|
||||
sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection";
|
||||
version = "4.3.0";
|
||||
sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO";
|
||||
version = "4.3.0";
|
||||
sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.XDocument";
|
||||
version = "4.3.0";
|
||||
sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Tasks";
|
||||
version = "4.3.0";
|
||||
sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.ComponentModel.TypeConverter";
|
||||
version = "4.3.0";
|
||||
sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Extensions";
|
||||
version = "4.3.0";
|
||||
sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Dynamic.Runtime";
|
||||
version = "4.3.0";
|
||||
sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.ReaderWriter";
|
||||
version = "4.3.0";
|
||||
sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Linq.Expressions";
|
||||
version = "4.3.0";
|
||||
sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime";
|
||||
version = "4.3.0";
|
||||
sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "NETStandard.Library";
|
||||
version = "1.6.0";
|
||||
sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Build.Framework";
|
||||
version = "15.3.409";
|
||||
sha256 = "1dhanwb9ihbfay85xj7cwn0byzmmdz94hqfi3q6r1ncwdjd8y1s2";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Build.Tasks.Core";
|
||||
version = "15.3.409";
|
||||
sha256 = "135swyygp7cz2civwsz6a7dj7h8bzp7yrybmgxjanxwrw66hm933";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Build.Utilities.Core";
|
||||
version = "15.3.409";
|
||||
sha256 = "1p8a0l9sxmjj86qha748qjw2s2n07q8mn41mj5r6apjnwl27ywnf";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Text.Encoding.CodePages";
|
||||
version = "4.0.1";
|
||||
sha256 = "00wpm3b9y0k996rm9whxprngm8l500ajmzgy2ip9pgwk0icp06y3";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Build";
|
||||
version = "15.3.409";
|
||||
sha256 = "0vzq6csp2yys9s96c7i37bjml439rdi47g8f5rzqdr7xf5a1jk81";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Tasks.Dataflow";
|
||||
version = "4.6.0";
|
||||
sha256 = "0a1davr71wssyn4z1hr75lk82wqa0daz0vfwkmg1fm3kckfd72k1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Extensions.Primitives";
|
||||
version = "2.0.0";
|
||||
sha256 = "1xppr5jbny04slyjgngxjdm0maxdh47vq481ps944d7jrfs0p3mb";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.DotNetHostResolver";
|
||||
version = "2.0.5";
|
||||
sha256 = "1sz2fdp8fdwz21x3lr2m1zhhrbix6iz699fjkwiryqdjl4ygd3hw";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.Platforms";
|
||||
version = "1.1.0";
|
||||
sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.Targets";
|
||||
version = "1.1.0";
|
||||
sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.TypeExtensions";
|
||||
version = "4.3.0";
|
||||
sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Primitives";
|
||||
version = "4.3.0";
|
||||
sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.InteropServices";
|
||||
version = "4.3.0";
|
||||
sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.Tools";
|
||||
version = "4.3.0";
|
||||
sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.ComponentModel.Primitives";
|
||||
version = "4.3.0";
|
||||
sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.ComponentModel";
|
||||
version = "4.3.0";
|
||||
sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Collections.NonGeneric";
|
||||
version = "4.3.0";
|
||||
sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Collections.Specialized";
|
||||
version = "4.3.0";
|
||||
sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Emit.ILGeneration";
|
||||
version = "4.3.0";
|
||||
sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Emit";
|
||||
version = "4.3.0";
|
||||
sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO.FileSystem.Primitives";
|
||||
version = "4.3.0";
|
||||
sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Tasks.Extensions";
|
||||
version = "4.3.0";
|
||||
sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO.FileSystem";
|
||||
version = "4.3.0";
|
||||
sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Emit.Lightweight";
|
||||
version = "4.3.0";
|
||||
sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.AppContext";
|
||||
version = "4.1.0";
|
||||
sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.ObjectModel";
|
||||
version = "4.0.12";
|
||||
sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Collections.Concurrent";
|
||||
version = "4.0.12";
|
||||
sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO.FileSystem.Primitives";
|
||||
version = "4.0.1";
|
||||
sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Win32.Primitives";
|
||||
version = "4.0.1";
|
||||
sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.Tracing";
|
||||
version = "4.1.0";
|
||||
sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Net.Sockets";
|
||||
version = "4.1.0";
|
||||
sha256 = "1385fvh8h29da5hh58jm1v78fzi9fi5vj93vhlm2kvqpfahvpqls";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Timer";
|
||||
version = "4.0.1";
|
||||
sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.Platforms";
|
||||
version = "1.0.1";
|
||||
sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Globalization.Calendars";
|
||||
version = "4.0.1";
|
||||
sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Cryptography.Encoding";
|
||||
version = "4.0.0";
|
||||
sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Primitives";
|
||||
version = "4.0.1";
|
||||
sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.Tools";
|
||||
version = "4.0.1";
|
||||
sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Console";
|
||||
version = "4.0.0";
|
||||
sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Handles";
|
||||
version = "4.0.1";
|
||||
sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Cryptography.Primitives";
|
||||
version = "4.0.0";
|
||||
sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.Debug";
|
||||
version = "4.0.11";
|
||||
sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Collections";
|
||||
version = "4.0.11";
|
||||
sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Extensions";
|
||||
version = "4.0.1";
|
||||
sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO.FileSystem";
|
||||
version = "4.0.1";
|
||||
sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Numerics";
|
||||
version = "4.0.1";
|
||||
sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO.Compression.ZipFile";
|
||||
version = "4.0.1";
|
||||
sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Resources.ResourceManager";
|
||||
version = "4.0.1";
|
||||
sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Cryptography.Algorithms";
|
||||
version = "4.2.0";
|
||||
sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Linq";
|
||||
version = "4.1.0";
|
||||
sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Text.Encoding";
|
||||
version = "4.0.11";
|
||||
sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.InteropServices.RuntimeInformation";
|
||||
version = "4.0.0";
|
||||
sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO.Compression";
|
||||
version = "4.1.0";
|
||||
sha256 = "0iym7s3jkl8n0vzm3jd6xqg9zjjjqni05x45dwxyjr2dy88hlgji";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Text.Encoding.Extensions";
|
||||
version = "4.0.11";
|
||||
sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Globalization";
|
||||
version = "4.0.11";
|
||||
sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Text.RegularExpressions";
|
||||
version = "4.1.0";
|
||||
sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection";
|
||||
version = "4.1.0";
|
||||
sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.XDocument";
|
||||
version = "4.0.11";
|
||||
sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading";
|
||||
version = "4.0.11";
|
||||
sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Tasks";
|
||||
version = "4.0.11";
|
||||
sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Net.Primitives";
|
||||
version = "4.0.11";
|
||||
sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.IO";
|
||||
version = "4.1.0";
|
||||
sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Extensions";
|
||||
version = "4.1.0";
|
||||
sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Cryptography.X509Certificates";
|
||||
version = "4.1.0";
|
||||
sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Net.Http";
|
||||
version = "4.1.0";
|
||||
sha256 = "1i5rqij1icg05j8rrkw4gd4pgia1978mqhjzhsjg69lvwcdfg8yb";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.ReaderWriter";
|
||||
version = "4.0.11";
|
||||
sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.InteropServices";
|
||||
version = "4.1.0";
|
||||
sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Linq.Expressions";
|
||||
version = "4.1.0";
|
||||
sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime";
|
||||
version = "4.1.0";
|
||||
sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.Thread";
|
||||
version = "4.0.0";
|
||||
sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.TraceSource";
|
||||
version = "4.0.0";
|
||||
sha256 = "1mc7r72xznczzf6mz62dm8xhdi14if1h8qgx353xvhz89qyxsa3h";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.TypeExtensions";
|
||||
version = "4.1.0";
|
||||
sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Serialization.Primitives";
|
||||
version = "4.1.1";
|
||||
sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.XmlDocument";
|
||||
version = "4.0.1";
|
||||
sha256 = "0ihsnkvyc76r4dcky7v3ansnbyqjzkbyyia0ir5zvqirzan0bnl1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.AspNetCore.App.Runtime.linux-x64";
|
||||
version = "3.1.2";
|
||||
sha256 = "19wfh9yg4n2khbl7pvf6ngx95m5p8lw4l9y935pv7nh4xgwk02p9";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.App.Runtime.linux-x64";
|
||||
version = "3.1.2";
|
||||
sha256 = "0a332ia5pabnz7mdfc99a5hlc7drnwzlc7cj9b5c3an6dq636p66";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Collections.NonGeneric";
|
||||
version = "4.0.1";
|
||||
sha256 = "19994r5y5bpdhj7di6w047apvil8lh06lh2c2yv9zc4fc5g9bl4d";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Resources.Reader";
|
||||
version = "4.0.0";
|
||||
sha256 = "1jafi73dcf1lalrir46manq3iy6xnxk2z7gpdpwg4wqql7dv3ril";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.XPath.XmlDocument";
|
||||
version = "4.0.1";
|
||||
sha256 = "0l7yljgif41iv5g56l3nxy97hzzgck2a7rhnfnljhx9b0ry41bvc";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.NETCore.Platforms";
|
||||
version = "3.1.0";
|
||||
sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.CSharp";
|
||||
version = "4.7.0";
|
||||
sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Xml.XPath";
|
||||
version = "4.0.1";
|
||||
sha256 = "0fjqgb6y66d72d5n8qq1h213d9nv2vi8mpv8p28j3m9rccmsh04m";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Extensions.Logging.Abstractions";
|
||||
version = "1.0.0";
|
||||
sha256 = "1sh9bidmhy32gkz6fkli79mxv06546ybrzppfw5v2aq0bda1ghka";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.Principal.Windows";
|
||||
version = "4.7.0";
|
||||
sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Security.AccessControl";
|
||||
version = "4.7.0";
|
||||
sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.AspNetCore.JsonPatch";
|
||||
version = "3.1.1";
|
||||
sha256 = "0c0aaz9rlh9chc53dnv5jryp0x0415hipaizrmih3kzwd3fmqpml";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Newtonsoft.Json";
|
||||
version = "12.0.2";
|
||||
sha256 = "0w2fbji1smd2y7x25qqibf1qrznmv4s6s0jvrbvr6alb7mfyqvh5";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Resources.Writer";
|
||||
version = "4.0.0";
|
||||
sha256 = "07hp218kjdcvpl27djspnixgnacbp9apma61zz3wsca9fx5g3lmv";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Reflection.Metadata";
|
||||
version = "1.3.0";
|
||||
sha256 = "1y5m6kryhjpqqm2g3h3b6bzig13wkiw954x3b7icqjm6xypm1x3b";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Collections.Immutable";
|
||||
version = "1.2.0";
|
||||
sha256 = "1jm4pc666yiy7af1mcf7766v710gp0h40p228ghj6bavx7xfa38m";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Linq.Parallel";
|
||||
version = "4.0.1";
|
||||
sha256 = "0i33x9f4h3yq26yvv6xnq4b0v51rl5z8v1bm7vk972h5lvf4apad";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.Process";
|
||||
version = "4.1.0";
|
||||
sha256 = "061lrcs7xribrmq7kab908lww6kn2xn1w3rdc41q189y0jibl19s";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Serialization.Xml";
|
||||
version = "4.1.1";
|
||||
sha256 = "11747an5gbz821pwahaim3v82gghshnj9b5c4cw539xg5a3gq7rk";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Threading.ThreadPool";
|
||||
version = "4.0.10";
|
||||
sha256 = "0fdr61yjcxh5imvyf93n2m3n5g9pp54bnw2l1d2rdl9z6dd31ypx";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Runtime.Loader";
|
||||
version = "4.0.0";
|
||||
sha256 = "0lpfi3psqcp6zxsjk2qyahal7zaawviimc8lhrlswhip2mx7ykl0";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.Contracts";
|
||||
version = "4.0.1";
|
||||
sha256 = "0y6dkd9n5k98vzhc3w14r2pbhf10qjn2axpghpmfr6rlxx9qrb9j";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Diagnostics.FileVersionInfo";
|
||||
version = "4.0.0";
|
||||
sha256 = "1s5vxhy7i09bmw51kxqaiz9zaj9am8wsjyz13j85sp23z267hbv3";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "NBitcoin.Secp256k1";
|
||||
version = "1.0.1";
|
||||
sha256 = "0j3a8iamqh06b7am6k8gh6d41zvrnmsif3525bw742jw5byjypdl";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.AspNetCore.Mvc.NewtonsoftJson";
|
||||
version = "3.1.1";
|
||||
sha256 = "1c2lrlp64kkacnjgdyygr6fqdawk10l8j4qgppii6rq61yjwhcig";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Newtonsoft.Json.Bson";
|
||||
version = "1.0.2";
|
||||
sha256 = "0c27bhy9x3c2n26inq32kmp6drpm71n6mqnmcr19wrlcaihglj35";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Win32.Registry";
|
||||
version = "4.7.0";
|
||||
sha256 = "0bx21jjbs7l5ydyw4p6cn07chryxpmchq2nl5pirzz4l3b0q4dgs";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.OpenApi";
|
||||
version = "1.1.4";
|
||||
sha256 = "1sn79829nhx6chi2qxsza1801di7zdl5fd983m0jakawzbjhjcb3";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "NBitcoin";
|
||||
version = "5.0.29";
|
||||
sha256 = "0a6jvdvnf5h9j6c3ii3pdnkq79shmcm1hf6anaqcwvi3gq19chak";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Swashbuckle.AspNetCore.SwaggerUI";
|
||||
version = "5.0.0";
|
||||
sha256 = "0d7vjq489rz208j6k3rb7vq6mzxzff3mqg83yk2rqy25vklrsbjd";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Swashbuckle.AspNetCore";
|
||||
version = "5.0.0";
|
||||
sha256 = "0rn2awmzrsrppk97xbbwk4kq1mys9bygb5xhl6mphbk0hchrvh09";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Swashbuckle.AspNetCore.SwaggerGen";
|
||||
version = "5.0.0";
|
||||
sha256 = "00swg2avqnb38q2bsxljd34n8rpknp74h9vbn0fdnfds3a32cqr4";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Microsoft.Extensions.ApiDescription.Server";
|
||||
version = "3.0.0";
|
||||
sha256 = "13a47xcqyi5gz85swxd4mgp7ndgl4kknrvv3xwmbn71hsh953hsh";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "Swashbuckle.AspNetCore.Swagger";
|
||||
version = "5.0.0";
|
||||
sha256 = "1341nv8nmh6avs3y7w2szzir5qd0bndxwrkdmvvj3hcxj1126w2f";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.unix.System.Private.Uri";
|
||||
version = "4.0.1";
|
||||
sha256 = "0ic5dgc45jkhcr1g9xmmzjm7ffiw4cymm0fprczlx4fnww4783nm";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Text.Encoding";
|
||||
version = "4.0.11";
|
||||
sha256 = "0m4vgmzi1ky8xlj0r7xcyazxln3j9dlialnk6d2gmgrfnzf8f9m7";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Threading.Tasks";
|
||||
version = "4.0.11";
|
||||
sha256 = "1qzdp09qs8br5qxzlm1lgbjn4n57fk8vr1lzrmli2ysdg6x1xzvk";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "System.Private.Uri";
|
||||
version = "4.0.1";
|
||||
sha256 = "0k57qhawjysm4cpbfpc49kl4av7lji310kjcamkl23bwgij5ld9j";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Diagnostics.Tracing";
|
||||
version = "4.1.0";
|
||||
sha256 = "041im8hmp1zdgrx6jzyrdch6kshvbddmkar7r2mlm1ksb5c5kwpq";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.IO";
|
||||
version = "4.1.0";
|
||||
sha256 = "0kasfkjiml2kk8prnyn1990nhsahnjggvqwszqjdsfwfl43vpcb5";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Runtime.Handles";
|
||||
version = "4.0.1";
|
||||
sha256 = "1kswgqhy34qvc49i981fk711s7knd6z13bp0rin8ms6axkh98nas";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Reflection.Primitives";
|
||||
version = "4.0.1";
|
||||
sha256 = "1zxrpvixr5fqzkxpnin6g6gjq6xajy1snghz99ds2dwbhm276rhz";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Runtime";
|
||||
version = "4.1.0";
|
||||
sha256 = "0mjr2bi7wvnkphfjqgkyf8vfyvy15a829jz6mivl6jmksh2bx40m";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Resources.ResourceManager";
|
||||
version = "4.0.1";
|
||||
sha256 = "1jmgs7hynb2rff48623wnyb37558bbh1q28k9c249j5r5sgsr5kr";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Globalization";
|
||||
version = "4.0.11";
|
||||
sha256 = "0240rp66pi5bw1xklmh421hj7arwcdmjmgfkiq1cbc6nrm8ah286";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Collections";
|
||||
version = "4.0.11";
|
||||
sha256 = "1x44bm1cgv28zmrp095wf9mn8a6a0ivnzp9v14dcbhx06igxzgg0";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.unix.System.Diagnostics.Debug";
|
||||
version = "4.0.11";
|
||||
sha256 = "05ndbai4vpqrry0ghbfgqc8xblmplwjgndxmdn1zklqimczwjg2d";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.unix.System.Runtime.Extensions";
|
||||
version = "4.1.0";
|
||||
sha256 = "0x1cwd7cvifzmn5x1wafvj75zdxlk3mxy860igh3x1wx0s8167y4";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Reflection";
|
||||
version = "4.1.0";
|
||||
sha256 = "06kcs059d5czyakx75rvlwa2mr86156w18fs7chd03f7084l7mq6";
|
||||
})
|
||||
(fetchNuGet {
|
||||
name = "runtime.any.System.Runtime.InteropServices";
|
||||
version = "4.1.0";
|
||||
sha256 = "0gm8if0hcmp1qys1wmx4970k2x62pqvldgljsyzbjhiy5644vl8z";
|
||||
})
|
||||
]
|
|
@ -8,15 +8,15 @@
|
|||
|
||||
assert stdenv ? glibc;
|
||||
|
||||
# http://download.eclipse.org/eclipse/downloads/ is the main place to
|
||||
# https://download.eclipse.org/eclipse/downloads/ is the main place to
|
||||
# find the downloads needed for new versions
|
||||
|
||||
let
|
||||
platform_major = "4";
|
||||
platform_minor = "15";
|
||||
platform_minor = "16";
|
||||
year = "2020";
|
||||
month = "03";
|
||||
timestamp = "${year}${month}050155";
|
||||
month = "06";
|
||||
timestamp = "${year}${month}040540";
|
||||
gtk = gtk3;
|
||||
in rec {
|
||||
|
||||
|
@ -33,8 +33,8 @@ in rec {
|
|||
description = "Eclipse IDE for C/C++ Developers";
|
||||
src =
|
||||
fetchurl {
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-incubation-linux-gtk-x86_64.tar.gz";
|
||||
sha512 = "2wy4a3p347fajr9zsfz1zlvz6jpy3vficdry27m5fs0azfmxmy2cfns5hh18sin4xqq3jvqppfqxh41rzcpcmiq12zhc6cz42brqgxw";
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-linux-gtk-x86_64.tar.gz";
|
||||
sha512 = "0vfxzsvfv9zmd0ckrdpziijzskh13g8kgk8ibkwmhmqmj14a3visk6yvn5q2s0knkswl1zy9arinw0mxvqh72dfj63vwc01vhp06lyr";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -46,7 +46,7 @@ in rec {
|
|||
src =
|
||||
fetchurl {
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-modeling-${year}-${month}-R-linux-gtk-x86_64.tar.gz";
|
||||
sha512 = "0qccsclay9000sqrymm8hkg70a4jcvd70vymw1kkxsklcs7dnrhch55an98gbzf9r0jgd1ap62a4hyxlnm6hdqqniwcgdza0i4nwwgj";
|
||||
sha512 = "29nr1x3fgdw5ygrppfma6yi1iaqvad24jyb58sag735z1nz4ymajcwakg52mlv3s19d4w8cxpskh1r459mwz7j769qplymspqifvlkd";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -58,7 +58,7 @@ in rec {
|
|||
src =
|
||||
fetchurl {
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-platform-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz";
|
||||
sha512 = "01rv5x7qqm0a2p30828z2snms3nb2kjx9si63sr5rdkdgr3vbh6xq8n8fn757dqazmpz9zskmwxxmbxnwycfllhgb8msb77pcy3fpg7";
|
||||
sha512 = "2pm4xam0jn9x34k1hr5rn67fpvc6snlkpcfn4bzdcf2xjv9f3dr2039mkcrhri5nv2bj6fkbai6aga6fmmrb3na33b7ir7sqlqqn61b";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -83,7 +83,7 @@ in rec {
|
|||
src =
|
||||
fetchurl {
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-SDK-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz";
|
||||
sha512 = "33ra8qslwz73240xzjvr751lpl94drlcf425a7kxngq1qla2cda7gxr71bxlr9fm2hrqq0h097ihmg0ix9hv2dmwnc76gp4hwwrlk41";
|
||||
sha512 = "195c07yabmi2a42qxfmpbv6ychpj15bbpgyp40s1pcdb3p875vcqjinq9dqy2sixzwjhfdrggpvwihav87rkih9arzmk2s4cm31mjqd";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -95,7 +95,7 @@ in rec {
|
|||
src =
|
||||
fetchurl {
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-java-${year}-${month}-R-linux-gtk-x86_64.tar.gz";
|
||||
sha512 = "0ffa1q19z31j8i552mp9zg4v0p4iv002cvlzh49ia8hi0hgk75pbkp6vxlr75jz0as03n71f0ww8xbflji31qgwfmy6rs1rzqihfff9";
|
||||
sha512 = "3n8jllgxarrxgz16n7zb4bgaqxk0m9frcxrgdxvy25ar2iw8js4q4ir3cc20y4ri3ii74rf3jy6n4ndhm57miwqh4p2wqzhfjlinirb";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -254,12 +254,13 @@ rec {
|
|||
|
||||
cdt = buildEclipseUpdateSite rec {
|
||||
name = "cdt-${version}";
|
||||
version = "9.11.0";
|
||||
# find current version at https://www.eclipse.org/cdt/downloads.php
|
||||
version = "9.11.1";
|
||||
|
||||
src = fetchzip {
|
||||
stripRoot = false;
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/9.11/${name}/${name}.zip";
|
||||
sha256 = "1730w6rbv649nzfalfd10p2ph0z9rbrrcflga0n1dpmg181xh9lk";
|
||||
sha256 = "00cpaal6jm9xb4nbkljrf381r3lf1rb1p06vrbn4l0lxnbckb9df";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -474,12 +475,12 @@ rec {
|
|||
|
||||
jdt = buildEclipseUpdateSite rec {
|
||||
name = "jdt-${version}";
|
||||
version = "4.15";
|
||||
version = "4.16";
|
||||
|
||||
src = fetchzip {
|
||||
stripRoot = false;
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-${version}-202003050155/org.eclipse.jdt-${version}.zip";
|
||||
sha256 = "1dm4qgfb6rm7w0dk8br071c7wy0ybp7zrwvr3i02c2bxzy2psz7q";
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-${version}-202006040540/org.eclipse.jdt-${version}.zip";
|
||||
sha256 = "0g349hg2nv1y628daxf84396wpf33z52wxv0gawlgrirbbizaznd";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kdev-php";
|
||||
version = "5.5.1";
|
||||
version = "5.5.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
|
||||
sha256 = "1z3mmlg5srzff0y1pjd4wfdf9k4rzk7gfdvbvzizkiy395qw1phv";
|
||||
sha256 = "0z32x0297g078jk3jhzb4vrf8jhw0qprvqzm9p097h8x0026w42l";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake extra-cmake-modules ];
|
||||
|
|
|
@ -1,25 +1,35 @@
|
|||
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
||||
{ stdenv, buildGoPackage, fetchFromGitHub, installShellFiles }:
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "micro";
|
||||
version = "2.0.3";
|
||||
version = "2.0.5";
|
||||
|
||||
goPackagePath = "github.com/zyedidia/micro";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zyedidia";
|
||||
repo = "micro";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "017m9kb3gfrgzd06f1nma1i3m5rb0hzpgdikb86lsyv8ik18y12z";
|
||||
sha256 = "12fyyax1mr0n82s5yhmk90iyyzbh32rppkkpj37c25pal73czdhc";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
subPackages = [ "cmd/micro" ];
|
||||
|
||||
buildFlagsArray = [ "-ldflags=" "-X ${goPackagePath}/internal/util.Version=${version}" ];
|
||||
buildFlagsArray = let t = "${goPackagePath}/internal/util"; in ''
|
||||
-ldflags=
|
||||
-X ${t}.Version=${version}
|
||||
-X ${t}.CommitHash=${src.rev}
|
||||
'';
|
||||
|
||||
goDeps = ./deps.nix;
|
||||
|
||||
postInstall = ''
|
||||
installManPage $src/assets/packaging/micro.1
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://micro-editor.github.io";
|
||||
description = "Modern and intuitive terminal-based text editor";
|
||||
|
|
8
third_party/nixpkgs/pkgs/applications/editors/micro/deps.nix
generated
vendored
8
third_party/nixpkgs/pkgs/applications/editors/micro/deps.nix
generated
vendored
|
@ -203,8 +203,8 @@
|
|||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/zyedidia/clipboard";
|
||||
rev = "241f98e9b197";
|
||||
sha256 = "1glc8w30sijpbppcvaf3503rmx5nxqkcgw87dr2pr3q3vv1bg3zi";
|
||||
rev = "7c45b8673834";
|
||||
sha256 = "0ag36wd3830d4s6fvpj05v6f662c5rymgdydsj2gq8aaqplfb0v4";
|
||||
};
|
||||
}
|
||||
{
|
||||
|
@ -257,8 +257,8 @@
|
|||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/zyedidia/tcell";
|
||||
rev = "v1.4.4";
|
||||
sha256 = "0d62a9csab15b64y09jcbvq71065wliw4bd5m7lfpl5k8rmrrdyi";
|
||||
rev = "v1.4.7";
|
||||
sha256 = "1ddaznp0haz35mxfjjh2fmamdrlk1igqg65fz22l5r6vvhcdsfxa";
|
||||
};
|
||||
}
|
||||
{
|
||||
|
|
|
@ -104,6 +104,8 @@ in stdenv.mkDerivation rec {
|
|||
++ stdenv.lib.optionals luaSupport [
|
||||
"--with-lua-prefix=${lua}"
|
||||
"--enable-luainterp"
|
||||
] ++ stdenv.lib.optional lua.pkgs.isLuaJIT [
|
||||
"--with-luajit"
|
||||
]
|
||||
++ stdenv.lib.optionals pythonSupport [
|
||||
"--enable-python${if isPython3 then "3" else ""}interp=yes"
|
||||
|
|
39
third_party/nixpkgs/pkgs/applications/editors/vscode/update.sh
vendored
Executable file
39
third_party/nixpkgs/pkgs/applications/editors/vscode/update.sh
vendored
Executable file
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnugrep gnused gawk
|
||||
|
||||
ROOT="$(dirname "$(readlink -f "$0")")"
|
||||
if [ ! -f "$ROOT/vscode.nix" ]; then
|
||||
echo "ERROR: cannot find vscode.nix in $ROOT"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f "$ROOT/vscodium.nix" ]; then
|
||||
echo "ERROR: cannot find vscodium.nix in $ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# VSCode
|
||||
|
||||
VSCODE_VER=$(curl -s -L "https://code.visualstudio.com/Download" | grep "is now available" | awk -F'</span>' '{print $1}' | awk -F'>' '{print $NF}')
|
||||
VSCODE_VER=$(curl -s -L "https://code.visualstudio.com/updates/v${VSCODE_VER/./_}" | grep "Downloads:" | awk -F'code.visualstudio.com/' '{print $2}' | awk -F'/' '{print $1}')
|
||||
sed -i "s/version = \".*\"/version = \"${VSCODE_VER}\"/" "$ROOT/vscode.nix"
|
||||
|
||||
VSCODE_LINUX_URL="https://vscode-update.azurewebsites.net/${VSCODE_VER}/linux-x64/stable"
|
||||
VSCODE_LINUX_SHA256=$(nix-prefetch-url ${VSCODE_LINUX_URL})
|
||||
sed -i "s/x86_64-linux = \".\{52\}\"/x86_64-linux = \"${VSCODE_LINUX_SHA256}\"/" "$ROOT/vscode.nix"
|
||||
|
||||
VSCODE_DARWIN_URL="https://vscode-update.azurewebsites.net/${VSCODE_VER}/darwin/stable"
|
||||
VSCODE_DARWIN_SHA256=$(nix-prefetch-url ${VSCODE_DARWIN_URL})
|
||||
sed -i "s/x86_64-darwin = \".\{52\}\"/x86_64-darwin = \"${VSCODE_DARWIN_SHA256}\"/" "$ROOT/vscode.nix"
|
||||
|
||||
# VSCodium
|
||||
|
||||
VSCODIUM_VER=$(curl -Ls -w %{url_effective} -o /dev/null https://github.com/VSCodium/vscodium/releases/latest | awk -F'/' '{print $NF}')
|
||||
sed -i "s/version = \".*\"/version = \"${VSCODIUM_VER}\"/" "$ROOT/vscodium.nix"
|
||||
|
||||
VSCODIUM_LINUX_URL="https://github.com/VSCodium/vscodium/releases/download/${VSCODIUM_VER}/VSCodium-linux-x64-${VSCODIUM_VER}.tar.gz"
|
||||
VSCODIUM_LINUX_SHA256=$(nix-prefetch-url ${VSCODIUM_LINUX_URL})
|
||||
sed -i "s/x86_64-linux = \".\{52\}\"/x86_64-linux = \"${VSCODIUM_LINUX_SHA256}\"/" "$ROOT/vscodium.nix"
|
||||
|
||||
VSCODIUM_DARWIN_URL="https://github.com/VSCodium/vscodium/releases/download/${VSCODIUM_VER}/VSCodium-darwin-${VSCODIUM_VER}.zip"
|
||||
VSCODIUM_DARWIN_SHA256=$(nix-prefetch-url ${VSCODIUM_DARWIN_URL})
|
||||
sed -i "s/x86_64-darwin = \".\{52\}\"/x86_64-darwin = \"${VSCODIUM_DARWIN_SHA256}\"/" "$ROOT/vscodium.nix"
|
|
@ -1,25 +1,22 @@
|
|||
{ stdenv, rustPlatform , fetchFromGitHub, Security }:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "whitebox_tools";
|
||||
version = "1.2.0";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jblindsay";
|
||||
repo = "whitebox-tools";
|
||||
rev = "v${version}";
|
||||
sha256 = "0zi32d0wrbl2763dcllv2g0liwacsfiza5lkx52620prjjbhby8i";
|
||||
sha256 = "0c9jmfjz6ys65y65zlllv9xvaaavr9jpqc1dc217iywhj07j8k2v";
|
||||
};
|
||||
|
||||
buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
|
||||
|
||||
cargoSha256 = "13k21akyfqgamywj39bw73sldby1s02vyvxfglxbaqq1x96xcy4i";
|
||||
|
||||
# failures: structures::polyline::test::test_polyline_split
|
||||
doCheck = false;
|
||||
cargoSha256 = "05w2jimmygg7dc93i8bpjpjc5yj5xfpfkjnbbgw2sq4kh06r5ii4";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "An advanced geospatial data analysis platform";
|
||||
homepage = "http://www.uoguelph.ca/~hydrogeo/WhiteboxTools/index.html";
|
||||
homepage = "https://jblindsay.github.io/ghrg/WhiteboxTools/index.html";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.mpickering ];
|
||||
platforms = platforms.all;
|
||||
|
|
59
third_party/nixpkgs/pkgs/applications/graphics/evilpixie/default.nix
vendored
Normal file
59
third_party/nixpkgs/pkgs/applications/graphics/evilpixie/default.nix
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
{ mkDerivation
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, makeDesktopItem
|
||||
, qmake
|
||||
, qtbase
|
||||
, libpng
|
||||
, giflib
|
||||
, impy
|
||||
}:
|
||||
|
||||
let
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "EvilPixie";
|
||||
desktopName = "EvilPixie";
|
||||
exec = "evilpixie %F";
|
||||
icon = "evilpixie";
|
||||
genericName = "Image Editor";
|
||||
categories = "Graphics;2DGraphics;RasterGraphics;";
|
||||
mimeType = "image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/x-pcx;image/x-targa;image/x-tga;";
|
||||
};
|
||||
|
||||
in mkDerivation rec {
|
||||
pname = "evilpixie";
|
||||
version = "0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bcampbell";
|
||||
repo = "evilpixie";
|
||||
rev = "v${version}";
|
||||
sha256 = "1yg4ic3kcxqmr7k5bbvrv5iavlnhpdx6510z5wha9k9k5q9c4dvh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
qmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
libpng
|
||||
giflib
|
||||
impy
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
ln -s ${desktopItem}/share/applications $out/share
|
||||
install -Dm 444 icon_128x128.png $out/share/icons/hicolor/128x128/apps/evilpixie.png
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Pixel-oriented paint program, modelled on Deluxe Paint";
|
||||
homepage = "http://evilpixie.scumways.com/";
|
||||
downloadPage = "https://github.com/bcampbell/evilpixie/releases";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ fgaz ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,26 +1,33 @@
|
|||
{ stdenv, fetchFromGitHub, cmake, makeWrapper, qtbase , qttools, python
|
||||
, libGLU, libGL , libXt, qtx11extras, qtxmlpatterns , mkDerivation }:
|
||||
{ boost, cmake, fetchFromGitHub, ffmpeg, qtbase, qtx11extras,
|
||||
qttools, qtxmlpatterns, qtsvg, gdal, gfortran, libXt, makeWrapper,
|
||||
mkDerivation, ninja, openmpi, python3, stdenv, tbb, libGLU, libGL }:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "paraview";
|
||||
version = "5.6.3";
|
||||
version = "5.8.0";
|
||||
|
||||
# fetching from GitHub instead of taking an "official" source
|
||||
# tarball because of missing submodules there
|
||||
src = fetchFromGitHub {
|
||||
owner = "Kitware";
|
||||
repo = "ParaView";
|
||||
rev = "v${version}";
|
||||
sha256 = "0zcij59pg47c45gfddnpbin13w16smzhcbivzm1k4pg4366wxq1q";
|
||||
sha256 = "1mka6wwg9mbkqi3phs29mvxq6qbc44sspbm4awwamqhilh4grhrj";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
"-DPARAVIEW_ENABLE_PYTHON=ON"
|
||||
"-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON"
|
||||
"-DPARAVIEW_ENABLE_EMBEDDED_DOCUMENTATION=OFF"
|
||||
"-DOpenGL_GL_PREFERENCE=GLVND"
|
||||
];
|
||||
# Avoid error: format not a string literal and
|
||||
# no format arguments [-Werror=format-security]
|
||||
preConfigure = ''
|
||||
substituteInPlace VTK/Common/Core/vtkLogger.h \
|
||||
--replace 'vtkLogScopeF(verbosity_name, __func__)' 'vtkLogScopeF(verbosity_name, "%s", __func__)'
|
||||
|
||||
substituteInPlace VTK/Common/Core/vtkLogger.h \
|
||||
--replace 'vtkVLogScopeF(level, __func__)' 'vtkVLogScopeF(level, "%s", __func__)'
|
||||
'';
|
||||
|
||||
# Find the Qt platform plugin "minimal"
|
||||
patchPhase = ''
|
||||
export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
|
||||
'';
|
||||
|
||||
# During build, binaries are called that rely on freshly built
|
||||
# libraries. These reside in build/lib, and are not found by
|
||||
|
@ -29,37 +36,50 @@ mkDerivation rec {
|
|||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib:$PWD/VTK/ThirdParty/vtkm/vtk-m/lib
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DPARAVIEW_ENABLE_FFMPEG=ON"
|
||||
"-DPARAVIEW_ENABLE_GDAL=ON"
|
||||
"-DPARAVIEW_ENABLE_MOTIONFX=ON"
|
||||
"-DPARAVIEW_ENABLE_VISITBRIDGE=ON"
|
||||
"-DPARAVIEW_ENABLE_XDMF3=ON"
|
||||
"-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON"
|
||||
"-DPARAVIEW_USE_MPI=ON"
|
||||
"-DPARAVIEW_USE_PYTHON=ON"
|
||||
"-DVTK_SMP_IMPLEMENTATION_TYPE=TBB"
|
||||
"-DVTKm_ENABLE_MPI=ON"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
"-DOpenGL_GL_PREFERENCE=GLVND"
|
||||
"-GNinja"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
makeWrapper
|
||||
ninja
|
||||
gfortran
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
python
|
||||
python.pkgs.numpy
|
||||
libGLU libGL
|
||||
libXt
|
||||
openmpi
|
||||
(python3.withPackages (ps: with ps; [ numpy matplotlib mpi4py ]))
|
||||
tbb
|
||||
boost
|
||||
ffmpeg
|
||||
gdal
|
||||
qtbase
|
||||
qtx11extras
|
||||
qttools
|
||||
qtxmlpatterns
|
||||
qtsvg
|
||||
];
|
||||
|
||||
# Paraview links into the Python library, resolving symbolic links on the way,
|
||||
# so we need to put the correct sitePackages (with numpy) back on the path
|
||||
preFixup = ''
|
||||
wrapQtApp $out/bin/paraview \
|
||||
--prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
|
||||
wrapQtApp $out/bin/pvbatch \
|
||||
--prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
|
||||
wrapQtApp $out/bin/pvpython \
|
||||
--prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "http://www.paraview.org/";
|
||||
homepage = "https://www.paraview.org/";
|
||||
description = "3D Data analysis and visualization application";
|
||||
license = licenses.free;
|
||||
maintainers = with maintainers; [ guibert ];
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{ callPackage, fetchurl, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // rec {
|
||||
version = "1.0.28";
|
||||
version = "1.0.30";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gitlab.com/sane-project/backends/uploads/9e718daff347826f4cfe21126c8d5091/sane-backends-${version}.tar.gz";
|
||||
sha256 = "00yy8q9hqdf0zjxxl4d8njr9zf0hhi3a9ib23ikc2anqf8zhy9ii";
|
||||
url = "https://gitlab.com/sane-project/backends/uploads/c3dd60c9e054b5dee1e7b01a7edc98b0/sane-backends-${version}.tar.gz";
|
||||
sha256 = "18vryaycps3zpjzxh0wjgg8nv2f4pdvcfxxmdfj28qbzqjlrcp9z";
|
||||
};
|
||||
})
|
||||
|
|
|
@ -90,8 +90,6 @@ rustPlatform.buildRustPackage rec {
|
|||
--replace xdg-open ${xdg_utils}/bin/xdg-open
|
||||
'';
|
||||
|
||||
postBuild = lib.optionalString stdenv.isDarwin "make app";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
|
@ -100,7 +98,8 @@ rustPlatform.buildRustPackage rec {
|
|||
'' + (
|
||||
if stdenv.isDarwin then ''
|
||||
mkdir $out/Applications
|
||||
cp -r $releaseDir/osx/Alacritty.app $out/Applications/Alacritty.app
|
||||
cp -r extra/osx/Alacritty.app $out/Applications
|
||||
ln -s $out/bin $out/Applications/Alacritty.app/Contents/MacOS
|
||||
'' else ''
|
||||
install -D extra/linux/Alacritty.desktop -t $out/share/applications/
|
||||
install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg
|
||||
|
|
43
third_party/nixpkgs/pkgs/applications/misc/devdocs-desktop/default.nix
vendored
Normal file
43
third_party/nixpkgs/pkgs/applications/misc/devdocs-desktop/default.nix
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ stdenv, appimageTools, fetchurl, gsettings-desktop-schemas, gtk3 }:
|
||||
|
||||
let
|
||||
version = "0.7.1";
|
||||
pname = "devdocs-desktop";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/egoist/devdocs-desktop/releases/download/v${version}/DevDocs-${version}.AppImage";
|
||||
sha256 = "5bba99a34c90a65eff67aface0b7446cbf43d620a1c195f27e7bb33ab6d3d0c2";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
inherit name src;
|
||||
};
|
||||
|
||||
in appimageTools.wrapType2 rec {
|
||||
inherit name src;
|
||||
|
||||
profile = ''
|
||||
export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
|
||||
'';
|
||||
|
||||
extraInstallCommands = ''
|
||||
mv $out/bin/${name} $out/bin/${pname}
|
||||
install -m 444 -D ${appimageContents}/devdocs.desktop $out/share/applications/devdocs.desktop
|
||||
install -m 444 -D ${appimageContents}/devdocs.png $out/share/icons/hicolor/0x0/apps/devdocs.png
|
||||
substituteInPlace $out/share/applications/devdocs.desktop \
|
||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A full-featured desktop app for DevDocs.io";
|
||||
longDescription = ''
|
||||
DevDocs.io combines multiple API documentations in a fast, organized, and searchable interface. This is an unofficial desktop app for it.
|
||||
'';
|
||||
homepage = "https://github.com/egoist/devdocs-desktop";
|
||||
downloadPage = "https://github.com/egoist/devdocs-desktop/releases";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ ymarkus ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
backports (3.17.0)
|
||||
backports (3.17.2)
|
||||
concurrent-ruby (1.1.6)
|
||||
crass (1.0.6)
|
||||
execjs (2.7.0)
|
||||
ffi (1.12.2)
|
||||
gemojione (4.3.2)
|
||||
ffi (1.13.1)
|
||||
gemojione (4.3.3)
|
||||
json
|
||||
github-markup (3.0.4)
|
||||
gollum (5.0.1)
|
||||
|
@ -25,28 +25,28 @@ GEM
|
|||
therubyrhino (~> 2.1.0)
|
||||
uglifier (~> 3.2)
|
||||
useragent (~> 0.16.2)
|
||||
gollum-lib (5.0.3)
|
||||
gollum-lib (5.0.4)
|
||||
gemojione (~> 4.1)
|
||||
github-markup (~> 3.0)
|
||||
gollum-rugged_adapter (~> 0.99.4, >= 0.99.4)
|
||||
gollum-rugged_adapter (~> 1.0)
|
||||
loofah (~> 2.3)
|
||||
nokogiri (~> 1.8)
|
||||
octicons (~> 8.5)
|
||||
rouge (~> 3.1)
|
||||
twitter-text (= 1.14.7)
|
||||
gollum-rugged_adapter (0.99.4)
|
||||
gollum-rugged_adapter (1.0)
|
||||
mime-types (>= 1.15)
|
||||
rugged (~> 0.99)
|
||||
json (2.3.0)
|
||||
kramdown (2.1.0)
|
||||
kramdown-parser-gfm (1.0.1)
|
||||
kramdown (~> 2.0)
|
||||
loofah (2.5.0)
|
||||
loofah (2.6.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mime-types (3.3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2019.1009)
|
||||
mime-types-data (3.2020.0512)
|
||||
mini_portile2 (2.4.0)
|
||||
multi_json (1.14.1)
|
||||
mustache (0.99.8)
|
||||
|
@ -56,14 +56,14 @@ GEM
|
|||
mini_portile2 (~> 2.4.0)
|
||||
octicons (8.5.0)
|
||||
nokogiri (>= 1.6.3.1)
|
||||
rack (2.2.2)
|
||||
rack (2.2.3)
|
||||
rack-protection (2.0.8.1)
|
||||
rack
|
||||
rb-fsevent (0.10.3)
|
||||
rb-fsevent (0.10.4)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.4)
|
||||
rouge (3.17.0)
|
||||
rouge (3.20.0)
|
||||
rss (0.2.9)
|
||||
rexml
|
||||
ruby2_keywords (0.0.2)
|
||||
|
@ -88,7 +88,7 @@ GEM
|
|||
sprockets (3.7.2)
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-helpers (1.2.3)
|
||||
sprockets-helpers (1.3.0)
|
||||
sprockets (>= 2.2)
|
||||
therubyrhino (2.1.2)
|
||||
therubyrhino_jar (>= 1.7.4, < 1.7.9)
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "13ywgyyxzlgks7nb17gwqjmdqjjmhc8si3iliv8jhf51lb3s865v";
|
||||
sha256 = "0rg58rd3hgk8wz4fbapn3szwgymk1q9lv4ywg37bkbcflsbi70iy";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.17.0";
|
||||
version = "3.17.2";
|
||||
};
|
||||
concurrent-ruby = {
|
||||
groups = ["default"];
|
||||
|
@ -44,10 +44,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
|
||||
sha256 = "12lpwaw82bb0rm9f52v1498bpba8aj2l2q359mkwbxsswhpga5af";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.12.2";
|
||||
version = "1.13.1";
|
||||
};
|
||||
gemojione = {
|
||||
dependencies = ["json"];
|
||||
|
@ -55,10 +55,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "097mrsahv1h67kjrk1cpiqc1cbrfgvlp2rqwmzdzxrq0kx50461w";
|
||||
sha256 = "0fwd523pgr72w3w6jwpz9i6sggvz52d7831a1s4y3lv8m50j6ima";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.3.2";
|
||||
version = "4.3.3";
|
||||
};
|
||||
github-markup = {
|
||||
groups = ["default"];
|
||||
|
@ -87,10 +87,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0r59fyf7i4rlp6wj9ilnqd9pmgpkafv0yl4jmrxa6hr2p4cmnf1g";
|
||||
sha256 = "0pr3djmawqpmifyadw1vfzdkq720dsaqih1wf8k2vksw0lr9la74";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.0.3";
|
||||
version = "5.0.4";
|
||||
};
|
||||
gollum-rugged_adapter = {
|
||||
dependencies = ["mime-types" "rugged"];
|
||||
|
@ -98,10 +98,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0016yfac3b3sy34k9wrqg422mjm8cpd1jd1m4gdn4x2d4jxhxkzq";
|
||||
sha256 = "0ln12976vm1ks74yyrssdx576b1z0hs8r82fivr366knv5hlcrdm";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.99.4";
|
||||
version = "1.0";
|
||||
};
|
||||
json = {
|
||||
groups = ["default"];
|
||||
|
@ -140,10 +140,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0jk9fgn5ayzbqvzqm11gbkqvas77zdbpkvynlylyiwynclgrn040";
|
||||
sha256 = "1s9hq8bpn6g5vqr3nzyirn3agn7x8agan6151zvq5vmkf6rvmyb2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.5.0";
|
||||
version = "2.6.0";
|
||||
};
|
||||
mime-types = {
|
||||
dependencies = ["mime-types-data"];
|
||||
|
@ -161,10 +161,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "18x61fc36951vw7f74gq8cyybdpxvyg5d0azvqhrs82ddw3v16xh";
|
||||
sha256 = "1z75svngyhsglx0y2f9rnil2j08f9ab54b3l95bpgz67zq2if753";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2019.1009";
|
||||
version = "3.2020.0512";
|
||||
};
|
||||
mini_portile2 = {
|
||||
groups = ["default"];
|
||||
|
@ -234,10 +234,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "10mp9s48ssnw004aksq90gvhdvwczh8j6q82q2kqiqq92jd1zxbp";
|
||||
sha256 = "0i5vs0dph9i5jn8dfc6aqd6njcafmb20rwqngrf759c9cvmyff16";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.2";
|
||||
version = "2.2.3";
|
||||
};
|
||||
rack-protection = {
|
||||
dependencies = ["rack"];
|
||||
|
@ -255,10 +255,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
|
||||
sha256 = "1k9bsj7ni0g2fd7scyyy1sk9dy2pg9akniahab0iznvjmhn54h87";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.10.3";
|
||||
version = "0.10.4";
|
||||
};
|
||||
rb-inotify = {
|
||||
dependencies = ["ffi"];
|
||||
|
@ -286,10 +286,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0xl7k5paf66p57sphm4nfa4k86yf93lhdzzr0cv0l4divq12g2pr";
|
||||
sha256 = "1r5npy9a95qh5v74lw7ir3nhaq4xrzyhfdixd7c5xy295i92nnic";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.17.0";
|
||||
version = "3.20.0";
|
||||
};
|
||||
rss = {
|
||||
dependencies = ["rexml"];
|
||||
|
@ -383,10 +383,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1hy67dwz76n5db00d9n3qy59ici96c2g25c9xpmp2nh8ilvha338";
|
||||
sha256 = "14iq8v16l31bfq7pikfmgcv5x6pkc5lbdmwwg6zlzcy1bibcliar";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.2.3";
|
||||
version = "1.3.0";
|
||||
};
|
||||
therubyrhino = {
|
||||
dependencies = ["therubyrhino_jar"];
|
||||
|
|
|
@ -22,6 +22,11 @@ python3.pkgs.buildPythonApplication rec {
|
|||
install -D misc/zsh/_khard $out/share/zsh/site-functions/_khard
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
# see https://github.com/scheibler/khard/issues/263
|
||||
export COLUMNS=80
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/scheibler/khard";
|
||||
description = "Console carddav client";
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
libstartup_notification, libGL, libX11, libXrandr, libXinerama, libXcursor,
|
||||
libxkbcommon, libXi, libXext, wayland-protocols, wayland,
|
||||
installShellFiles,
|
||||
which, dbus,
|
||||
dbus,
|
||||
Cocoa,
|
||||
CoreGraphics,
|
||||
Foundation,
|
||||
|
@ -20,14 +20,14 @@
|
|||
with python3Packages;
|
||||
buildPythonApplication rec {
|
||||
pname = "kitty";
|
||||
version = "0.17.4";
|
||||
version = "0.18.0";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kovidgoyal";
|
||||
repo = "kitty";
|
||||
rev = "v${version}";
|
||||
sha256 = "1rbyj84y8r6h7qd6w7cw58v2abspippignj458ihv2m26i4als2x";
|
||||
sha256 = "15i4ld65a5rfbaxxdh6kgg9h0ih73iqjskk82h8j72qgzkc6g3hf";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -50,7 +50,7 @@ buildPythonApplication rec {
|
|||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkgconfig which sphinx ncurses
|
||||
pkgconfig sphinx ncurses
|
||||
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
||||
imagemagick
|
||||
libicns # For the png2icns tool.
|
||||
|
@ -63,13 +63,6 @@ buildPythonApplication rec {
|
|||
|
||||
patches = [
|
||||
./fix-paths.patch
|
||||
] ++ stdenv.lib.optionals stdenv.isLinux [
|
||||
(substituteAll {
|
||||
src = ./library-paths.patch;
|
||||
libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so";
|
||||
libcanberra = "${libcanberra}/lib/libcanberra.so";
|
||||
libEGL = "${stdenv.lib.getLib libGL}/lib/libEGL.so.1";
|
||||
})
|
||||
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
||||
./no-lto.patch
|
||||
];
|
||||
|
@ -77,11 +70,23 @@ buildPythonApplication rec {
|
|||
# Causes build failure due to warning
|
||||
hardeningDisable = stdenv.lib.optional stdenv.isDarwin "strictoverflow";
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
buildPhase = if stdenv.isDarwin then ''
|
||||
${python.interpreter} setup.py kitty.app --update-check-interval=0
|
||||
make man
|
||||
'' else ''
|
||||
${python.interpreter} setup.py linux-package --update-check-interval=0
|
||||
${python.interpreter} setup.py linux-package \
|
||||
--update-check-interval=0 \
|
||||
--egl-library='${stdenv.lib.getLib libGL}/lib/libEGL.so.1' \
|
||||
--startup-notification-library='${libstartup_notification}/lib/libstartup-notification-1.so' \
|
||||
--canberra-library='${libcanberra}/lib/libcanberra.so'
|
||||
'';
|
||||
|
||||
checkInputs = [ pillow ];
|
||||
|
||||
checkPhase = ''
|
||||
${python.interpreter} test.py
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
|
@ -100,8 +105,6 @@ buildPythonApplication rec {
|
|||
wrapProgram "$out/bin/kitty" --prefix PATH : "$out/bin:${stdenv.lib.makeBinPath [ imagemagick xsel ncurses.dev ]}"
|
||||
runHook postInstall
|
||||
|
||||
# ZSH completions need to be invoked with `source`:
|
||||
# https://github.com/kovidgoyal/kitty/blob/8ceb941051b89b7c50850778634f0b6137aa5e6e/docs/index.rst#zsh
|
||||
mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
|
||||
"$out/bin/kitty" + complete setup fish > "$out/share/fish/vendor_completions.d/kitty.fish"
|
||||
"$out/bin/kitty" + complete setup bash > "$out/share/bash-completion/completions/kitty.bash"
|
||||
|
@ -125,6 +128,7 @@ buildPythonApplication rec {
|
|||
homepage = "https://github.com/kovidgoyal/kitty";
|
||||
description = "A modern, hackable, featureful, OpenGL based terminal emulator";
|
||||
license = licenses.gpl3;
|
||||
changelog = "https://sw.kovidgoyal.net/kitty/changelog.html";
|
||||
platforms = platforms.darwin ++ platforms.linux;
|
||||
maintainers = with maintainers; [ tex rvolosatovs ma27 Luflosi ];
|
||||
};
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
--- a/glfw/egl_context.c
|
||||
+++ b/glfw/egl_context.c
|
||||
@@ -314,7 +314,7 @@ bool _glfwInitEGL(void)
|
||||
#elif defined(__CYGWIN__)
|
||||
"libEGL-1.so",
|
||||
#else
|
||||
- "libEGL.so.1",
|
||||
+ "@libEGL@",
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
--- a/kitty/desktop.c
|
||||
+++ b/kitty/desktop.c
|
||||
@@ -34,10 +34,7 @@ init_x11_startup_notification(PyObject UNUSED *self, PyObject *args) {
|
||||
done = true;
|
||||
|
||||
const char* libnames[] = {
|
||||
- "libstartup-notification-1.so",
|
||||
- // some installs are missing the .so symlink, so try the full name
|
||||
- "libstartup-notification-1.so.0",
|
||||
- "libstartup-notification-1.so.0.0.0",
|
||||
+ "@libstartup_notification@",
|
||||
NULL
|
||||
};
|
||||
for (int i = 0; libnames[i]; i++) {
|
||||
@@ -113,10 +110,7 @@ load_libcanberra(void) {
|
||||
if (done) return;
|
||||
done = true;
|
||||
const char* libnames[] = {
|
||||
- "libcanberra.so",
|
||||
- // some installs are missing the .so symlink, so try the full name
|
||||
- "libcanberra.so.0",
|
||||
- "libcanberra.so.0.2.5",
|
||||
+ "@libcanberra@",
|
||||
NULL
|
||||
};
|
||||
for (int i = 0; libnames[i]; i++) {
|
|
@ -1,6 +1,6 @@
|
|||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -277,10 +277,6 @@ def init_env(
|
||||
@@ -287,10 +287,6 @@ def init_env(
|
||||
cppflags += shlex.split(os.environ.get('CPPFLAGS', ''))
|
||||
cflags += shlex.split(os.environ.get('CFLAGS', ''))
|
||||
ldflags += shlex.split(os.environ.get('LDFLAGS', ''))
|
||||
|
|
36
third_party/nixpkgs/pkgs/applications/misc/openrgb/default.nix
vendored
Normal file
36
third_party/nixpkgs/pkgs/applications/misc/openrgb/default.nix
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ mkDerivation, lib, fetchFromGitHub, qmake, libusb1, hidapi }:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "openrgb";
|
||||
version = "0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CalcProgrammer1";
|
||||
repo = "OpenRGB";
|
||||
rev = "release_${version}";
|
||||
sha256 = "0b1mkp4ca4gdzk020kp6dkd3i9a13h4ikrn3417zscsvv5y9kv0s";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake ];
|
||||
buildInputs = [ libusb1 hidapi ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp OpenRGB $out/bin
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
installCheckPhase = ''
|
||||
$out/bin/OpenRGB --help > /dev/null
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Open source RGB lighting control";
|
||||
homepage = "https://gitlab.com/CalcProgrammer1/OpenRGB";
|
||||
maintainers = with maintainers; [ jonringer ];
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
67
third_party/nixpkgs/pkgs/applications/misc/tellico/default.nix
vendored
Normal file
67
third_party/nixpkgs/pkgs/applications/misc/tellico/default.nix
vendored
Normal file
|
@ -0,0 +1,67 @@
|
|||
{ lib
|
||||
, fetchurl
|
||||
, mkDerivation
|
||||
, kdeApplications
|
||||
, kinit
|
||||
, kdelibs4support
|
||||
, solid
|
||||
, kxmlgui
|
||||
, karchive
|
||||
, kfilemetadata
|
||||
, khtml
|
||||
, knewstuff
|
||||
, libksane
|
||||
, cmake
|
||||
, exempi
|
||||
, extra-cmake-modules
|
||||
, libcdio
|
||||
, poppler
|
||||
, makeWrapper
|
||||
, kdoctools
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
name = "tellico";
|
||||
version = "3.3.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://tellico-project.org/files/tellico-${lib.versions.majorMinor version}.tar.xz";
|
||||
sha256 = "1digkpvzrsbv5znf1cgzs6zkmysfz6lzs12n12mrrpgkcdxc426y";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./hex.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
kdoctools
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
kdelibs4support
|
||||
solid
|
||||
kxmlgui
|
||||
karchive
|
||||
kfilemetadata
|
||||
khtml
|
||||
knewstuff
|
||||
libksane
|
||||
cmake
|
||||
exempi
|
||||
extra-cmake-modules
|
||||
libcdio
|
||||
kdeApplications.libkcddb
|
||||
poppler
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Collection management software, free and simple";
|
||||
homepage = "https://tellico-project.org/";
|
||||
maintainers = with lib.maintainers; [ numkem ];
|
||||
license = with lib.licenses; [ gpl2 gpl3 ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
15
third_party/nixpkgs/pkgs/applications/misc/tellico/hex.patch
vendored
Normal file
15
third_party/nixpkgs/pkgs/applications/misc/tellico/hex.patch
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
index 7ea81c7..0c19767 100644
|
||||
--- a/src/utils/iso5426converter.cpp
|
||||
+++ b/src/utils/iso5426converter.cpp
|
||||
@@ -1211,7 +1211,11 @@ QChar Iso5426Converter::getCombiningChar(uint c) {
|
||||
return 0x1EF1; // SMALL LETTER U WITH HORN AND DOT BELOW
|
||||
|
||||
default:
|
||||
+#if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0))
|
||||
+ myDebug() << "no match for" << hex << c;
|
||||
+#else
|
||||
myDebug() << "no match for" << Qt::hex << c;
|
||||
+#endif
|
||||
return QChar();
|
||||
}
|
||||
}
|
21
third_party/nixpkgs/pkgs/applications/networking/browsers/av-98/default.nix
vendored
Normal file
21
third_party/nixpkgs/pkgs/applications/networking/browsers/av-98/default.nix
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ lib, python3Packages, fetchgit }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "av-98";
|
||||
version = "1.0.2dev";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://tildegit.org/solderpunk/AV-98.git";
|
||||
rev = "96cf8e13fe5714c8cdc754f51eef9f0293b8ca1f";
|
||||
sha256 = "09iskh33hl5aaif763j1fmbz7yvf0yqsxycfd41scj7vbwdsbxl0";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [ ansiwrap cryptography ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://tildegit.org/solderpunk/AV-98";
|
||||
description = "Experimental console client for the Gemini protocol";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ ehmry ];
|
||||
};
|
||||
}
|
53
third_party/nixpkgs/pkgs/applications/networking/browsers/castor/default.nix
vendored
Normal file
53
third_party/nixpkgs/pkgs/applications/networking/browsers/castor/default.nix
vendored
Normal file
|
@ -0,0 +1,53 @@
|
|||
{ stdenv
|
||||
, fetchurl
|
||||
, rustPlatform
|
||||
, pkg-config
|
||||
, wrapGAppsHook
|
||||
, openssl
|
||||
, gtk3
|
||||
, gdk-pixbuf
|
||||
, pango
|
||||
, atk
|
||||
, cairo
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "castor";
|
||||
version = "0.8.14";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://git.sr.ht/~julienxx/castor/archive/${version}.tar.gz";
|
||||
sha256 = "1ykpmbimhfy3ys2hvv0mn8xiwxzdl43gpny1nc58i0gzv07ar8sc";
|
||||
};
|
||||
|
||||
cargoSha256 = "04w49wka1vkb295lk6fzd6c5rwhzrqkp26hd5d94rx7bhcjmmb9w";
|
||||
verifyCargoDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
gtk3
|
||||
gdk-pixbuf
|
||||
pango
|
||||
atk
|
||||
cairo
|
||||
];
|
||||
|
||||
postInstall = "make PREFIX=$out copy-data";
|
||||
|
||||
# Sometimes tests fail when run in parallel
|
||||
checkFlags = [ "--test-threads=1" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A graphical client for plain-text protocols written in Rust with GTK. It currently supports the Gemini, Gopher and Finger protocols";
|
||||
homepage = "https://sr.ht/~julienxx/Castor";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ fgaz ];
|
||||
};
|
||||
}
|
||||
|
|
@ -8,7 +8,6 @@
|
|||
, dbus
|
||||
, fontconfig
|
||||
, freetype
|
||||
, gconf
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, glibc
|
||||
|
@ -27,9 +26,7 @@
|
|||
, libXinerama
|
||||
, libXrender
|
||||
, libXt
|
||||
, libcanberra-gtk2
|
||||
, libgnome
|
||||
, libgnomeui
|
||||
, libcanberra
|
||||
, libnotify
|
||||
, gnome3
|
||||
, libGLU, libGL
|
||||
|
@ -103,7 +100,6 @@ stdenv.mkDerivation {
|
|||
dbus
|
||||
fontconfig
|
||||
freetype
|
||||
gconf
|
||||
gdk-pixbuf
|
||||
glib
|
||||
glibc
|
||||
|
@ -122,9 +118,7 @@ stdenv.mkDerivation {
|
|||
libXinerama
|
||||
libXrender
|
||||
libXt
|
||||
libcanberra-gtk2
|
||||
libgnome
|
||||
libgnomeui
|
||||
libcanberra
|
||||
libnotify
|
||||
libGLU libGL
|
||||
nspr
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
, src, unpackPhase ? null, patches ? []
|
||||
, extraNativeBuildInputs ? [], extraConfigureFlags ? [], extraMakeFlags ? [] }:
|
||||
|
||||
{ lib, stdenv, pkgconfig, pango, perl, python2, python3, zip, libIDL
|
||||
{ lib, stdenv, pkgconfig, pango, perl, python2, python3, zip
|
||||
, libjpeg, zlib, dbus, dbus-glib, bzip2, xorg
|
||||
, freetype, fontconfig, file, nspr, nss, libnotify
|
||||
, yasm, libGLU, libGL, sqlite, unzip, makeWrapper
|
||||
|
@ -104,7 +104,7 @@ stdenv.mkDerivation ({
|
|||
patchFlags = [ "-p1" "-l" ];
|
||||
|
||||
buildInputs = [
|
||||
gtk2 perl zip libIDL libjpeg zlib bzip2
|
||||
gtk2 perl zip libjpeg zlib bzip2
|
||||
dbus dbus-glib pango freetype fontconfig xorg.libXi xorg.libXcursor
|
||||
xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
|
||||
libnotify xorg.pixman yasm libGLU libGL
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "terragrunt";
|
||||
version = "0.23.14";
|
||||
version = "0.23.23";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gruntwork-io";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1znb9d4n9zv3dq10dw17kb1h04gj8iz6gwx1a741fcf4ygp8zpy1";
|
||||
sha256 = "1087zs5k73rhhzni8zdj950aw4nsc7mqjj8lgdcc8y3yx8p8y5hy";
|
||||
};
|
||||
|
||||
vendorSha256 = "0h737h25f80zfx84vm6ry0581c32ylcb5h9givqk5k5kh5qgkbgx";
|
||||
vendorSha256 = "1xn7c6y32vpanqvf1sfpw6bs73dbjniavjbf00j0vx83bfyklsr4";
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
let
|
||||
# TODO: This package requires qt5Full to launch
|
||||
defaultOverrides = commonOverrides ++ [
|
||||
(mkOverride "jsonschema" "2.6.0"
|
||||
"00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg")
|
||||
(mkOverride "jsonschema" "3.2.0"
|
||||
"0ykr61yiiizgvm3bzipa3l73rvj49wmrybbfwhvpgk3pscl5pa68")
|
||||
];
|
||||
|
||||
python = python3.override {
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
|
||||
let
|
||||
defaultOverrides = commonOverrides ++ [
|
||||
(mkOverride "jsonschema" "2.6.0"
|
||||
"00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg")
|
||||
(mkOverride "jsonschema" "3.2.0"
|
||||
"0ykr61yiiizgvm3bzipa3l73rvj49wmrybbfwhvpgk3pscl5pa68")
|
||||
(mkOverride "aiofiles" "0.4.0"
|
||||
"1vmvq9qja3wahv8m1adkyk00zm7j0x64pk3f2ry051ja66xa07h2")
|
||||
];
|
||||
|
||||
python = python3.override {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{ lib, stdenv, buildPythonApplication, fetchFromGitHub, pythonOlder,
|
||||
attrs, aiohttp, appdirs, click, keyring, Logbook, peewee, janus,
|
||||
prompt_toolkit, matrix-nio, dbus-python, pydbus, notify2, pygobject3,
|
||||
setuptools,
|
||||
|
||||
pytest, faker, pytest-aiohttp, aioresponses,
|
||||
|
||||
|
@ -9,7 +10,7 @@
|
|||
|
||||
buildPythonApplication rec {
|
||||
pname = "pantalaimon";
|
||||
version = "0.6.1";
|
||||
version = "0.6.3";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
|
@ -18,7 +19,7 @@ buildPythonApplication rec {
|
|||
owner = "matrix-org";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0hn3731jh6xwyjayzdf41skhpdx002qs7n5l7ffh4dplhnv9vbxx";
|
||||
sha256 = "1h1z701sj1qgcqlsk3pnzifnbcg9fshl7v6271h9x54hm3d6hg8a";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -32,6 +33,7 @@ buildPythonApplication rec {
|
|||
matrix-nio
|
||||
peewee
|
||||
prompt_toolkit
|
||||
setuptools
|
||||
] ++ lib.optional enableDbusUi [
|
||||
dbus-python
|
||||
notify2
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rambox-pro";
|
||||
version = "1.3.1";
|
||||
version = "1.3.2";
|
||||
|
||||
dontBuild = true;
|
||||
dontStrip = true;
|
||||
|
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ramboxapp/download/releases/download/v${version}/RamboxPro-${version}-linux-x64.tar.gz";
|
||||
sha256 = "1cy4h2yzrpr3gxd16p4323w06i67d82jjlyx737c3ngzw7aahmq1";
|
||||
sha256 = "010v5i8lxfz77cb5cn9va5cbnfa28nzdymk5k2fcpi65jldw1pxx";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
|
|
@ -19,12 +19,12 @@ with lib;
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "telegram-desktop";
|
||||
version = "2.1.11";
|
||||
version = "2.1.12";
|
||||
|
||||
# Telegram-Desktop with submodules
|
||||
src = fetchurl {
|
||||
url = "https://github.com/telegramdesktop/tdesktop/releases/download/v${version}/tdesktop-${version}-full.tar.gz";
|
||||
sha256 = "1sd6nrcjg5gpq6ynvwnz8f4jz8flknybx6b0pfxqrqqpzy7wjl5m";
|
||||
sha256 = "1b9kgib9dxjcfnw2zdbqd12ikcswkl35nwy9m47x5jvy3glxg6m8";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -15,11 +15,11 @@ assert pulseaudioSupport -> libpulseaudio != null;
|
|||
let
|
||||
inherit (stdenv.lib) concatStringsSep makeBinPath optional;
|
||||
|
||||
version = "5.0.418682.0603";
|
||||
version = "5.1.412382.0614";
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
|
||||
sha256 = "1vlba3jgp3dr16n5g29l0dpdd054d8h6lkwk3a6346shvd46mpja";
|
||||
sha256 = "07xb3v5i08wq0a3my9id91gizsxj5ppqvxmcbdy04j7yn4i1jm9x";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -60,7 +60,6 @@ in mkDerivation {
|
|||
"zcacert.pem"
|
||||
"zoom"
|
||||
"zoom.sh"
|
||||
"zoomlinux"
|
||||
"zopen"
|
||||
];
|
||||
in ''
|
||||
|
@ -126,7 +125,7 @@ in mkDerivation {
|
|||
description = "zoom.us video conferencing application";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
platforms = builtins.attrNames srcs;
|
||||
maintainers = with stdenv.lib.maintainers; [ danbst tadfisher ];
|
||||
maintainers = with stdenv.lib.maintainers; [ danbst tadfisher doronbehar ];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "ipfs";
|
||||
version = "0.5.1";
|
||||
version = "0.6.0";
|
||||
rev = "v${version}";
|
||||
|
||||
# go-ipfs makes changes to it's source tarball that don't match the git source.
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ipfs/go-ipfs/releases/download/${rev}/go-ipfs-source.tar.gz";
|
||||
sha256 = "0lpilycjbc1g9adp4d5kryfprixj18hg3235fnivakmv7fy2akkm";
|
||||
sha256 = "14bgq2j2bjjy0pspy2lsj5dm3w9rmfha0l8kyq5ig86yhc4nzn80";
|
||||
};
|
||||
|
||||
# tarball contains multiple files/directories
|
||||
|
|
|
@ -27,11 +27,11 @@ with stdenv.lib;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mutt";
|
||||
version = "1.14.3";
|
||||
version = "1.14.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://ftp.mutt.org/pub/mutt/${pname}-${version}.tar.gz";
|
||||
sha256 = "0wd4cv1c9hqymvml979g607nh3xxmlyx1ifc4r4qf39v6grnsmdi";
|
||||
sha256 = "1hykkq3m7kqic5r7vzg45xaww7415fv5i2d03slzykqb47w5d3na";
|
||||
};
|
||||
|
||||
patches = optional smimeSupport (fetchpatch {
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
{ stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which, writeScript
|
||||
, ncurses, perl , cyrus_sasl, gss, gpgme, kerberos, libidn, libxml2, notmuch, openssl
|
||||
, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, mailcap, runtimeShell, sqlite, zlib
|
||||
, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, elinks, mailcap, runtimeShell, sqlite, zlib
|
||||
, glibcLocales
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "20200501";
|
||||
version = "20200619";
|
||||
pname = "neomutt";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "neomutt";
|
||||
repo = "neomutt";
|
||||
rev = version;
|
||||
sha256 = "1xrs2bagrcg489zp7g39l3rrpgz8n1ji9cbr21wrnasfbhqcsmnx";
|
||||
sha256 = "0dhdpd0wdk5bam0q7cvjy4f451ai0mapmyrar7r7m5dnn6lcwvfv";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
|
|||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
docbook_xsl docbook_xml_dtd_42 gettext libxml2 libxslt.bin makeWrapper tcl which zlib
|
||||
docbook_xsl docbook_xml_dtd_42 gettext libxml2 libxslt.bin makeWrapper tcl which zlib elinks
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -42,12 +42,10 @@ stdenv.mkDerivation rec {
|
|||
# and use a far more comprehensive list than the one shipped with neomutt
|
||||
substituteInPlace sendlib.c \
|
||||
--replace /etc/mime.types ${mailcap}/etc/mime.types
|
||||
'';
|
||||
|
||||
# The string conversion tests all fail with the first version of neomutt
|
||||
# that has tests (20180223) as well as 20180716 so we disable them for now.
|
||||
# I don't know if that is related to the tests or our build environment.
|
||||
# Try again with a later release.
|
||||
sed -i '/rfc2047/d' test/Makefile.autosetup test/main.c
|
||||
preBuild = ''
|
||||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
|
@ -60,6 +58,9 @@ stdenv.mkDerivation rec {
|
|||
"--sasl"
|
||||
"--with-homespool=mailbox"
|
||||
"--with-mailpath="
|
||||
# To make it not reference .dev outputs. See:
|
||||
# https://github.com/neomutt/neomutt/pull/2367
|
||||
"--disable-include-path-in-cflags"
|
||||
# Look in $PATH at runtime, instead of hardcoding /usr/bin/sendmail
|
||||
"ac_cv_path_SENDMAIL=sendmail"
|
||||
"--zlib"
|
||||
|
@ -80,16 +81,15 @@ stdenv.mkDerivation rec {
|
|||
cp -r ${fetchFromGitHub {
|
||||
owner = "neomutt";
|
||||
repo = "neomutt-test-files";
|
||||
rev = "1ee274e9ae1330fb901eb7b8275b3079d7869222";
|
||||
sha256 = "0dhilz4rr7616jh8jcvh50a3rr09in43nsv72mm6f3vfklcqincp";
|
||||
rev = "8629adab700a75c54e8e28bf05ad092503a98f75";
|
||||
sha256 = "1ci04nqkab9mh60zzm66sd6mhsr6lya8wp92njpbvafc86vvwdlr";
|
||||
}} $(pwd)/test-files
|
||||
chmod -R +w test-files
|
||||
(cd test-files && ./setup.sh)
|
||||
|
||||
export NEOMUTT_TEST_DIR=$(pwd)/test-files
|
||||
export LC_ALL="en_US.UTF-8"
|
||||
'';
|
||||
|
||||
checkInputs = [ glibcLocales ];
|
||||
checkTarget = "test";
|
||||
postCheck = "unset NEOMUTT_TEST_DIR";
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{ stdenv, fetchurl, config, makeWrapper
|
||||
, gconf
|
||||
, alsaLib
|
||||
, at-spi2-atk
|
||||
, atk
|
||||
|
@ -13,8 +12,6 @@
|
|||
, gdk-pixbuf
|
||||
, glib
|
||||
, glibc
|
||||
, gst-plugins-base
|
||||
, gstreamer
|
||||
, gtk2
|
||||
, gtk3
|
||||
, kerberos
|
||||
|
@ -30,9 +27,7 @@
|
|||
, libXrender
|
||||
, libXt
|
||||
, libxcb
|
||||
, libcanberra-gtk2
|
||||
, libgnome
|
||||
, libgnomeui
|
||||
, libcanberra
|
||||
, gnome3
|
||||
, libGLU, libGL
|
||||
, nspr
|
||||
|
@ -82,7 +77,6 @@ stdenv.mkDerivation {
|
|||
|
||||
libPath = stdenv.lib.makeLibraryPath
|
||||
[ stdenv.cc.cc
|
||||
gconf
|
||||
alsaLib
|
||||
at-spi2-atk
|
||||
atk
|
||||
|
@ -96,8 +90,6 @@ stdenv.mkDerivation {
|
|||
gdk-pixbuf
|
||||
glib
|
||||
glibc
|
||||
gst-plugins-base
|
||||
gstreamer
|
||||
gtk2
|
||||
gtk3
|
||||
kerberos
|
||||
|
@ -113,9 +105,7 @@ stdenv.mkDerivation {
|
|||
libXrender
|
||||
libXt
|
||||
libxcb
|
||||
libcanberra-gtk2
|
||||
libgnome
|
||||
libgnomeui
|
||||
libcanberra
|
||||
libGLU libGL
|
||||
nspr
|
||||
nss
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
, lib
|
||||
, libGL
|
||||
, libGLU
|
||||
, libIDL
|
||||
, libevent
|
||||
, libjpeg
|
||||
, libnotify
|
||||
|
@ -113,7 +112,6 @@ stdenv.mkDerivation rec {
|
|||
jemalloc
|
||||
libGL
|
||||
libGLU
|
||||
libIDL
|
||||
libevent
|
||||
libjpeg
|
||||
libnotify
|
||||
|
|
|
@ -13,11 +13,11 @@ with stdenv.lib;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "znc";
|
||||
version = "1.8.0";
|
||||
version = "1.8.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://znc.in/releases/archive/${pname}-${version}.tar.gz";
|
||||
sha256 = "0m5xf60r40pgbg9lyk56dafxj2hj149pn2wf8vzsp8xgq4kv5zcl";
|
||||
sha256 = "0hb1v167aa6gv5bcwz352l6b8gnd74ymjw92y4x882l099hzg59i";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
|
|
@ -7,8 +7,8 @@ let
|
|||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
srcVersion = "feb20a";
|
||||
version = "20200201_a";
|
||||
srcVersion = "jun20b";
|
||||
version = "20200601_b";
|
||||
pname = "gildas";
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
|
|||
# source code of the previous release to a different directory
|
||||
urls = [ "http://www.iram.fr/~gildas/dist/gildas-src-${srcVersion}.tar.xz"
|
||||
"http://www.iram.fr/~gildas/dist/archive/gildas/gildas-src-${srcVersion}.tar.xz" ];
|
||||
sha256 = "05f34kpi3pfgf4dsyka7mkcln26yzb2mixnnc306krq0isjm7m26";
|
||||
sha256 = "190na9p9kaif4hviraksig6hsq35i1q3nlrm50l00kpj2n8knisk";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig groff perl getopt gfortran which ];
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
diff --new-file -r -u gildas-src-feb17d.orig/admin/wrapper.sh gildas-src-feb17d/admin/wrapper.sh
|
||||
--- gildas-src-feb17d.orig/admin/wrapper.sh 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ gildas-src-feb17d/admin/wrapper.sh 2017-05-18 21:00:01.660778782 +0200
|
||||
@@ -0,0 +1,15 @@
|
||||
@@ -0,0 +1,16 @@
|
||||
+#!/bin/sh -e
|
||||
+
|
||||
+export GAG_ROOT_DIR="%%OUT%%"
|
||||
+export GAG_PATH="${GAG_ROOT_DIR}/etc"
|
||||
+export GAG_EXEC_SYSTEM="libexec"
|
||||
+export GAG_GAG="${HOME}/.gag"
|
||||
+export PYTHONHOME="%%PYTHONHOME%%"
|
||||
+if [ -z "\$PYTHONPATH" ]; then
|
||||
+ PYTHONPATH="${GAG_ROOT_DIR}/${GAG_EXEC_SYSTEM}/python"
|
||||
|
|
|
@ -35,6 +35,7 @@ let
|
|||
"8.11.0" = "1rfdic6mp7acx2zfwz7ziqk12g95bl9nyj68z4n20a5bcjv2pxpn";
|
||||
"8.11.1" = "0qriy9dy36dajsv5qmli8gd6v55mah02ya334nw49ky19v7518m0";
|
||||
"8.11.2" = "0f77ccyxdgbf1nrj5fa8qvrk1cyfy06fv8gj9kzfvlcgn0cf48sa";
|
||||
"8.12+beta1" = "0jbm8am9j926s0h4fi0cjl95l37l6p7i03spcryyrd4sg5xrddr7";
|
||||
}.${version};
|
||||
coq-version = stdenv.lib.versions.majorMinor version;
|
||||
versionAtLeast = stdenv.lib.versionAtLeast coq-version;
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
{ stdenv, fetchurl, fetchpatch, cmake, pcre, pkgconfig, python2
|
||||
, libX11, libXpm, libXft, libXext, libGLU, libGL, zlib, libxml2, lzma, gsl_1
|
||||
, libX11, libXpm, libXft, libXext, libGLU, libGL, zlib, libxml2, lz4, lzma, gsl_1, xxHash
|
||||
, Cocoa, OpenGL, noSplash ? false }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "root";
|
||||
version = "5.34.36";
|
||||
version = "5.34.38";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
|
||||
sha256 = "1kbx1jxc0i5xfghpybk8927a0wamxyayij9c74zlqm0595gqx1pw";
|
||||
sha256 = "1ln448lszw4d6jmbdphkr2plwxxlhmjkla48vmmq750xc1lxlfrc";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ cmake pcre python2 zlib libxml2 lzma gsl_1 ]
|
||||
buildInputs = [ cmake pcre python2 zlib libxml2 lz4 lzma gsl_1 xxHash ]
|
||||
++ stdenv.lib.optionals (!stdenv.isDarwin) [ libX11 libXpm libXft libXext libGLU libGL ]
|
||||
++ stdenv.lib.optionals (stdenv.isDarwin) [ Cocoa OpenGL ]
|
||||
;
|
||||
|
@ -20,12 +20,6 @@ stdenv.mkDerivation rec {
|
|||
patches = [
|
||||
./sw_vers_root5.patch
|
||||
|
||||
(fetchpatch {
|
||||
name = "enable_new_gcc.patch";
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/enable_new_gcc.patch?h=root5&id=91c50876081a0af36f84ec4f0f9dba869107fa4f";
|
||||
sha256 = "1rnp0xlw0yqi7mjs4w145njd79i8kkir1qik7zwicdik9axf8ygm";
|
||||
})
|
||||
|
||||
# prevents rootcint from looking in /usr/includes and such
|
||||
./purify_include_paths_root5.patch
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ stdenv, buildGoPackage, fetchurl, makeWrapper
|
||||
, git, bash, gzip, openssh, pam
|
||||
, fetchpatch
|
||||
, sqliteSupport ? true
|
||||
, pamSupport ? true
|
||||
}:
|
||||
|
@ -9,11 +8,11 @@ with stdenv.lib;
|
|||
|
||||
buildGoPackage rec {
|
||||
pname = "gitea";
|
||||
version = "1.11.6";
|
||||
version = "1.12.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
|
||||
sha256 = "11nyq5faq0hy1pi3yhmc6y8is7jyiyfrb162fq9l33pkyw6qihqs";
|
||||
sha256 = "0n92msf5pbgb5q6pa2p0nj9lnzs4y0qis62c5mp4hp8rc1j22wlb";
|
||||
};
|
||||
|
||||
unpackPhase = ''
|
||||
|
@ -25,10 +24,6 @@ buildGoPackage rec {
|
|||
|
||||
patches = [
|
||||
./static-root-path.patch
|
||||
(fetchpatch {
|
||||
url = "https://github.com/go-gitea/gitea/commit/1830d0ed5f4a67e3360ecbb55933b5540b6affce.patch";
|
||||
sha256 = "163531pcki28qfs56l64vv4xxaavxgksf038da1sn21j5l2jm81i";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "clipgrab";
|
||||
version = "3.8.11";
|
||||
version = "3.8.12";
|
||||
|
||||
src = fetchurl {
|
||||
sha256 = "0jpfdmyzjasq4x1xvk7b1cmhhq6fz6ydvvbwz2wclph367x496xk";
|
||||
sha256 = "1nnph6sn4mpdj20hngwr57ripmdp60w3vrn89s8ssy7cjv500ngd";
|
||||
# The .tar.bz2 "Download" link is a binary blob, the source is the .tar.gz!
|
||||
url = "https://download.clipgrab.org/${pname}-${version}.tar.gz";
|
||||
};
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "cri-o";
|
||||
version = "1.18.1";
|
||||
version = "1.18.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cri-o";
|
||||
repo = "cri-o";
|
||||
rev = "v${version}";
|
||||
sha256 = "1fd7ix329kqimysqfh8yl29c0hwrddlirq9bnz95mrllhsgn8kw2";
|
||||
sha256 = "0p6gprbs54v3n09fjpyfxnzxs680ms8924wdim4q9qw52wc6sbdz";
|
||||
};
|
||||
vendorSha256 = null;
|
||||
outputs = [ "out" "man" ];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ stdenv, lib, fetchFromGitHub, makeWrapper, autoreconfHook,
|
||||
fuse, libmspack, openssl, pam, xercesc, icu, libdnet, procps,
|
||||
libX11, libXext, libXinerama, libXi, libXrender, libXrandr, libXtst,
|
||||
pkgconfig, glib, gtk3, gtkmm3, iproute, dbus, systemd, which,
|
||||
pkgconfig, glib, gdk-pixbuf-xlib, gtk3, gtkmm3, iproute, dbus, systemd, which,
|
||||
withX ? true }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -21,9 +21,13 @@ stdenv.mkDerivation rec {
|
|||
|
||||
nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig ];
|
||||
buildInputs = [ fuse glib icu libdnet libmspack openssl pam procps xercesc ]
|
||||
++ lib.optionals withX [ gtk3 gtkmm3 libX11 libXext libXinerama libXi libXrender libXrandr libXtst ];
|
||||
++ lib.optionals withX [ gdk-pixbuf-xlib gtk3 gtkmm3 libX11 libXext libXinerama libXi libXrender libXrandr libXtst ];
|
||||
|
||||
patches = [
|
||||
./recognize_nixos.patch
|
||||
./find_gdk_pixbuf_xlib.patch #See https://github.com/vmware/open-vm-tools/pull/438
|
||||
];
|
||||
|
||||
patches = [ ./recognize_nixos.patch ];
|
||||
postPatch = ''
|
||||
# Build bugfix for 10.1.0, stolen from Arch PKGBUILD
|
||||
mkdir -p common-agent/etc/config
|
||||
|
|
12
third_party/nixpkgs/pkgs/applications/virtualization/open-vm-tools/find_gdk_pixbuf_xlib.patch
vendored
Normal file
12
third_party/nixpkgs/pkgs/applications/virtualization/open-vm-tools/find_gdk_pixbuf_xlib.patch
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
diff --git a/lib/appUtil/Makefile.am b/lib/appUtil/Makefile.am
|
||||
index a0d8e391..899cd4e9 100644
|
||||
--- a/lib/appUtil/Makefile.am
|
||||
+++ b/lib/appUtil/Makefile.am
|
||||
@@ -21,4 +21,6 @@ libAppUtil_la_SOURCES =
|
||||
libAppUtil_la_SOURCES += appUtil.c
|
||||
libAppUtil_la_SOURCES += appUtilX11.c
|
||||
|
||||
-AM_CFLAGS = @GTK_CPPFLAGS@
|
||||
+AM_CFLAGS =
|
||||
+AM_CFLAGS += @GTK_CPPFLAGS@
|
||||
+AM_CFLAGS += @GDK_PIXBUF_XLIB2_CPPFLAGS@
|
|
@ -129,6 +129,15 @@ sub findFiles {
|
|||
return;
|
||||
}
|
||||
|
||||
# If target already exists and both targets resolves to the same path, skip
|
||||
if (defined $oldTarget && $oldTarget ne "" && abs_path($target) eq abs_path($oldTarget)) {
|
||||
# Prefer the target that is not a symlink, if any
|
||||
if (-l $oldTarget && ! -l $target) {
|
||||
$symlinks{$relName} = [$target, $priority];
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
# If target already exists as a symlink to a file (not a
|
||||
# directory) in a higher-priority package, skip.
|
||||
if (defined $oldTarget && $priority > $oldPriority && $oldTarget ne "" && ! -d $oldTarget) {
|
||||
|
|
|
@ -121,6 +121,7 @@ rec {
|
|||
# the image env variable NIX_PAGER.
|
||||
pkgs.coreutils
|
||||
pkgs.nix
|
||||
pkgs.bash
|
||||
];
|
||||
config = {
|
||||
Env = [
|
||||
|
@ -313,4 +314,25 @@ rec {
|
|||
)
|
||||
];
|
||||
};
|
||||
|
||||
nixLayered = pkgs.dockerTools.buildLayeredImageWithNixDb {
|
||||
name = "nix-layered";
|
||||
tag = "latest";
|
||||
contents = [
|
||||
# nix-store uses cat program to display results as specified by
|
||||
# the image env variable NIX_PAGER.
|
||||
pkgs.coreutils
|
||||
pkgs.nix
|
||||
pkgs.bash
|
||||
];
|
||||
config = {
|
||||
Env = [
|
||||
"NIX_PAGER=cat"
|
||||
# A user is required by nix
|
||||
# https://github.com/NixOS/nix/blob/9348f9291e5d9e4ba3c4347ea1b235640f54fd79/src/libutil/util.cc#L478
|
||||
"USER=nobody"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -16,7 +16,11 @@ mkdir -p "$layerPath"
|
|||
# when there are other things being added to the
|
||||
# nix store, tar could fail, saying,
|
||||
# "tar: /nix/store: file changed as we read it"
|
||||
mkdir -p nix/store
|
||||
#
|
||||
# In addition, we use `__Nix__` instead of `nix` to avoid renaming
|
||||
# relative symlink destinations like
|
||||
# /nix/store/...-nix-2.3.4/bin/nix-daemon -> nix
|
||||
mkdir -p __Nix__/store
|
||||
|
||||
# Then we change into the /nix/store in order to
|
||||
# avoid a similar "file changed as we read it" error
|
||||
|
@ -35,8 +39,8 @@ tarhash=$(
|
|||
--hard-dereference --sort=name \
|
||||
--mtime="@$SOURCE_DATE_EPOCH" \
|
||||
--owner=0 --group=0 \
|
||||
--transform 's,^nix$,/\0,' \
|
||||
--transform 's,^nix/store$,/\0,' \
|
||||
--transform 's,^__Nix__$,/nix,' \
|
||||
--transform 's,^__Nix__/store$,/nix/store,' \
|
||||
--transform 's,^[^/],/nix/store/\0,rS' |
|
||||
tee "$layerPath/layer.tar" |
|
||||
tarsum
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ fetchurl }:
|
||||
|
||||
fetchurl {
|
||||
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/e8df5568f80e6230e29c2381e842db35fe11cd71.tar.gz";
|
||||
sha256 = "1fz4iax88pmlqpb4zp3l6mb6bmkzzha0q6mm3xasabh5yl83dbhy";
|
||||
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/65a280e01c4f90470959f0423a5450d2831f845a.tar.gz";
|
||||
sha256 = "0m5zg7hswch702gprlfsjmp2xk6hs828c1489d1c85w9kxiyqkdq";
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue